On 04/12/2016 03:12 PM, Eric Dumazet wrote: > On Tue, 2016-04-12 at 14:38 -0500, John Allen wrote: >> Moves tx completion processing out of interrupt context, deferring work >> using a wait queue. With this work now deferred, we must account for the >> possibility that skbs can be sent faster than we can process completion >> requests in which case the tx buffer will overflow. If the tx buffer is >> full, ibmvnic_xmit will return NETDEV_TX_BUSY and stop the current tx >> queue. Subsequently, the queue will be restarted in ibmvnic_complete_tx >> when all pending tx completion requests have been cleared. > > 1) Why is this needed ?
In the current ibmvnic implementation, tx completion processing is done in interrupt context. Depending on the load, this can block further interrupts for a long time. This patch just creates a bottom half so that when a tx completion interrupt comes in, we can defer the majority of the work and exit interrupt context quickly. > > 2) If it is needed, why is this not done in a generic way, so that other > drivers can use this ? I'm still fairly new to network driver development so I'm not in tune with the needs of other drivers. My assumption was that the wait queue data structure was a reasonably generic way to handle something like this. Is there a more appropriate/generic way of implementing a bottom half for this purpose? -John > > Thanks. > > > >