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