> > Hmm, so I have yet to test this, but I found several bugs related to transmit > in em(4) and igb(4) recently just reading the code. (Mostly unnecessary > scheduling of tasks for transmit.) I've included your change of restarting > TX when link becomes active. I've also updated it to fix resume for em > and igb to DTRT when buf_ring is used, and to not include old-style start > routines at all when using multiq. It is at > http://www.freebsd.org/~jhb/patches/e1000_txeof2.patch >
I think that some of the code being removed originated from our universe over here at Yahoo. We were seeing the driver assert IFF_OACTIVE and never clearing out. Reviewing this patch at a glance I note that the check of IFF_OACTIVE was removed, if the kernel can get us out of that state without the IFF_OACTIVE checks, then I'm good with it. Sean ref: @@ -1497,10 +1509,11 @@ if (!drbr_empty(ifp, txr->br)) em_mq_start_locked(ifp, txr, NULL); #else - em_start_locked(ifp, txr); + if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) + em_start_locked(ifp, txr); #endif EM_TX_UNLOCK(txr); - if (more || (ifp->if_drv_flags & IFF_DRV_OACTIVE)) { + if (more) { taskqueue_enqueue(adapter->tq, &adapter->que_task); return; _______________________________________________ freebsd-net@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"