On Tue, Jan 15, 2013 at 09:43:54PM -0800, Jack Vogel wrote: > OK, will look at this as soon as I can. > > Jack
below is a short patch that reschedule the task if the queue has not been drained. Tested on qemu. I can do the commit if you like. cheers luigi Index: ../head/sys/dev/e1000/if_lem.c =================================================================== --- ../head/sys/dev/e1000/if_lem.c (revision 245218) +++ ../head/sys/dev/e1000/if_lem.c (working copy) @@ -1337,12 +1411,16 @@ if (ifp->if_drv_flags & IFF_DRV_RUNNING) { - lem_rxeof(adapter, adapter->rx_process_limit, NULL); + bool more = lem_rxeof(adapter, adapter->rx_process_limit, NULL); EM_TX_LOCK(adapter); lem_txeof(adapter); if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) lem_start_locked(ifp); EM_TX_UNLOCK(adapter); + if (more) { + taskqueue_enqueue(adapter->tq, &adapter->rxtx_task); + return; + } } if (ifp->if_drv_flags & IFF_DRV_RUNNING) _______________________________________________ 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"