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.

Tested by:	rcarter@pinyon.org
Reviewed by:	yongari, jfv
MFC after:	2 weeks
This commit is contained in:
Rick Macklem 2014-07-15 23:32:13 +00:00
parent fed7e55027
commit e2ade3b6f7

View File

@ -1818,7 +1818,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);
@ -1944,6 +1943,7 @@ em_xmit(struct tx_ring *txr, struct mbuf **m_headp)
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);