Fix some deadlocks in iavf, and make it less error prone for the future.
Patch 1 is simple and independed from the rest.
Patches 2, 3, 4 are strictly a refactor, but it enables the last patch
to be much smaller.
(Technically Jake given his RB tags not knowing I will send it to -net).
Patch 5 just adds annotations, this also helps prove last patch to be correct.
Patch 6 removes the crit lock, with its unusual try_lock()s.
I have more refactoring for scheduling done for -next, to be sent soon.
There is a simple test:
add VF; decrease number of queueus; remove VF
that was way too hard to pass without this series :)
Testing hints for VAL:
whole regression set, both against ice and i40e.
Przemek Kitszel (6):
iavf: iavf_suspend(): take RTNL before netdev_lock()
iavf: centralize watchdog requeueing itself
iavf: simplify watchdog_task in terms of adminq task scheduling
iavf: extract iavf_watchdog_step() out of iavf_watchdog_task()
iavf: sprinkle netdev_assert_locked() annotations
iavf: get rid of the crit lock
drivers/net/ethernet/intel/iavf/iavf.h | 1 -
.../net/ethernet/intel/iavf/iavf_ethtool.c | 29 +-
drivers/net/ethernet/intel/iavf/iavf_main.c | 289 ++++++------------
3 files changed, 96 insertions(+), 223 deletions(-)
--
2.39.3