On Wed, Jun 08, 2011 at 05:46:23PM -0700, Michael Chan wrote:
Neil Horman wrote:
quoted
How do you figure? bnx2_cnic_probe is only called from is_cnic_dev
(which still
makes me shake my head a bit). is_cnic_dev is only called from
cnic_netdev_event, which holds the rtnl_lock. Since the event we
trigger on is
called from NETDEV_REGISTER or NETDEV_UP, I don't see how we can wind
up
suspending the device prior to caling bnx2_cnic_probe.
Consider NETDEV_REGISTER -> NETDEV_UP -> NETDEV_DOWN
During NETDEV_DOWN, we shutdown the device, but the netdev is still
registered.
Then we load cnic. The NETDEV events will be replayed when we call
netdev_register_notifier() and cnic will get the NETDEV_REGISTER event.
We'll then call bnx2_cnic_probe() but the device is down.
Ah,ok. Please CC me on your patch.
Neil