Messages in this thread | | | Subject | Re: [PATCH] Revert "net: linkwatch: add check for netdevice being present to linkwatch_do_dev" | From | Saeed Mahameed <> | Date | Thu, 24 Sep 2020 11:16:57 -0700 |
| |
On Thu, 2020-09-24 at 09:03 -0700, Jakub Kicinski wrote: > On Wed, 23 Sep 2020 22:49:37 -0700 Saeed Mahameed wrote: > > 2) Another problematic scenario which i see is repeated in many > > drivers: > > > > shutdown/suspend() > > rtnl_lock() > > netif_device_detach()//Mark !present; > > stop()->carrier_off()->linkwatch_event() > > // at this point device is still IFF_UP and !present > > // due to the early detach above.. > > rtnl_unlock(); > > Maybe we can solve this by providing drivers with a better helper for > the suspend use case? > > AFAIU netif_device_detach() is used by both IO errors and drivers > willingly detaching the device during normal operation (e.g. for > suspend). > > Since the suspend path can sleep if we have a separate helper perhaps > we could fire off the appropriate events synchronously, and > quiescence > the stack properly?
I was thinking something similar, a more heavy weight netif_device_detach(), which will be used in all drivers suspend flows.
1) clear IFF_UP 2) ndo_stop() 3) fire events 4) mark !present ...
5) suspend device
but went and sampled some drivers and found there are many variations for using netif_device_detach it is not going to be a simple task.
| |