Messages in this thread | | | Date | Thu, 13 Dec 2007 09:13:54 -0500 | From | Andrew Gallatin <> | Subject | Re: [RFC] net: napi fix |
| |
Joonwoo Park wrote: > 2007/12/13, Kok, Auke <auke-jan.h.kok@intel.com>: >> David Miller wrote: >>> From: Andrew Gallatin <gallatin@myri.com> >>> Date: Wed, 12 Dec 2007 12:29:23 -0500 >>> >>>> Is the netif_running() check even required? >>> No, it is not. >>> >>> When a device is brought down, one of the first things >>> that happens is that we wait for all pending NAPI polls >>> to complete, then block any new polls from starting. >> I think this was previously (pre-2.6.24) not the case, which is why e1000 et al >> has this check as well and that's exactly what is causing most of the >> net_rx_action oopses in the first place. Without the netif_running() check >> previously the drivers were just unusable with NAPI and prone to many races with >> down (i.e. touching some ethtool ioctl which wants to do a reset while routing >> small packets at high numbers). that's why we added the netif_running() check in >> the first place :) >> >> There might be more drivers lurking that need this change... >> >> Auke >> > > Also in my case, without netif_running() check, I cannot do ifconfig down. > It stucked if packet generator was sending packets.
If the netif_running() check is indeed required to make a device break out of napi polling and respond to an ifconfig down, then I think the netif_running() check should be moved up into net_rx_action() to avoid potential for driver complexity and bugs like the ones you found.
Drew
| |