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

Reply via email to