Intel 82574L interface wedging - em7.3.2/8.2-STABLE
Sean Bruno
seanbru at yahoo-inc.com
Thu Mar 15 23:41:27 UTC 2012
>
> 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;
More information about the freebsd-net
mailing list