summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrmacklem <rmacklem@FreeBSD.org>2014-07-29 21:05:51 +0000
committerrmacklem <rmacklem@FreeBSD.org>2014-07-29 21:05:51 +0000
commitd6fd29cba9df5ff00d42271359e82c9b540ec1c3 (patch)
tree041f94feeea90194caa1c56834331d2245bdb280
parentfe6d9379787eb938c503444ce243caa89cc7b08c (diff)
downloadFreeBSD-src-d6fd29cba9df5ff00d42271359e82c9b540ec1c3.zip
FreeBSD-src-d6fd29cba9df5ff00d42271359e82c9b540ec1c3.tar.gz
MFC: r268726
Move the "retry:" label so that the calls to m_pullup() are not done after the call to m_defrag(). This fixes a problem where m_pullup() would prepend an mbuf to the list created by m_defrag() making the chain greater than 32 again.
-rw-r--r--sys/dev/e1000/if_em.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/dev/e1000/if_em.c b/sys/dev/e1000/if_em.c
index fc24abe..cc8b34e 100644
--- a/sys/dev/e1000/if_em.c
+++ b/sys/dev/e1000/if_em.c
@@ -1830,7 +1830,6 @@ em_xmit(struct tx_ring *txr, struct mbuf **m_headp)
int nsegs, i, j, first, last = 0;
int error, do_tso, tso_desc = 0, remap = 1;
-retry:
m_head = *m_headp;
txd_upper = txd_lower = txd_used = txd_saved = 0;
do_tso = ((m_head->m_pkthdr.csum_flags & CSUM_TSO) != 0);
@@ -1956,6 +1955,7 @@ retry:
tx_buffer_mapped = tx_buffer;
map = tx_buffer->map;
+retry:
error = bus_dmamap_load_mbuf_sg(txr->txtag, map,
*m_headp, segs, &nsegs, BUS_DMA_NOWAIT);
OpenPOWER on IntegriCloud