The only generic interface to execute asynchronously in the BH context is tasklet; however, it's marked deprecated and has some design flaws. To replace tasklets, BH workqueue support was recently added. A BH workqueue behaves similarly to regular workqueues except that the queued work items are executed in the BH context. This patch converts a few drivers in drivers/ethernet/* from tasklet to BH workqueue. The next set will be sent out after the next -rc is out. This series is based on 1722389b0d86 (Merge tag 'net-6.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net) [v3]: - Include Reviewed-by signature - hinic: can show work_pending() as a partial replacement for the tasklet state. - mvpp2: retain and re-word comment. - fix rxempty_bh_work() which will emit 'RX Queue Full!' message, so the change should be visibile to the user. [v2]: https://lore.kernel.org/all/20240621183947.4105278-1-allen.lkml@xxxxxxxxx/ [v1]: First version converting all the drivers can be found at: https://lore.kernel.org/all/20240507190111.16710-2-apais@xxxxxxxxxxxxxxxxxxx/ Allen Pais (15): net: alteon: Convert tasklet API to new bottom half workqueue mechanism net: xgbe: Convert tasklet API to new bottom half workqueue mechanism net: cnic: Convert tasklet API to new bottom half workqueue mechanism net: macb: Convert tasklet API to new bottom half workqueue mechanism net: cavium/liquidio: Convert tasklet API to new bottom half workqueue mechanism net: octeon: Convert tasklet API to new bottom half workqueue mechanism net: thunderx: Convert tasklet API to new bottom half workqueue mechanism net: chelsio: Convert tasklet API to new bottom half workqueue mechanism net: sundance: Convert tasklet API to new bottom half workqueue mechanism net: hinic: Convert tasklet API to new bottom half workqueue mechanism net: ehea: Convert tasklet API to new bottom half workqueue mechanism net: ibmvnic: Convert tasklet API to new bottom half workqueue mechanism net: jme: Convert tasklet API to new bottom half workqueue mechanism net: marvell: Convert tasklet API to new bottom half workqueue mechanism net: mtk-wed: Convert tasklet API to new bottom half workqueue mechanism drivers/net/ethernet/alteon/acenic.c | 26 +++--- drivers/net/ethernet/alteon/acenic.h | 8 +- drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 30 +++---- drivers/net/ethernet/amd/xgbe/xgbe-i2c.c | 16 ++-- drivers/net/ethernet/amd/xgbe/xgbe-mdio.c | 16 ++-- drivers/net/ethernet/amd/xgbe/xgbe-pci.c | 4 +- drivers/net/ethernet/amd/xgbe/xgbe.h | 10 +-- drivers/net/ethernet/broadcom/cnic.c | 19 ++--- drivers/net/ethernet/broadcom/cnic.h | 2 +- drivers/net/ethernet/cadence/macb.h | 3 +- drivers/net/ethernet/cadence/macb_main.c | 10 +-- .../net/ethernet/cavium/liquidio/lio_core.c | 4 +- .../net/ethernet/cavium/liquidio/lio_main.c | 24 +++--- .../ethernet/cavium/liquidio/lio_vf_main.c | 10 +-- .../ethernet/cavium/liquidio/octeon_droq.c | 4 +- .../ethernet/cavium/liquidio/octeon_main.h | 4 +- .../net/ethernet/cavium/octeon/octeon_mgmt.c | 13 +-- drivers/net/ethernet/cavium/thunder/nic.h | 5 +- .../net/ethernet/cavium/thunder/nicvf_main.c | 24 +++--- .../ethernet/cavium/thunder/nicvf_queues.c | 4 +- .../ethernet/cavium/thunder/nicvf_queues.h | 2 +- drivers/net/ethernet/chelsio/cxgb/sge.c | 19 ++--- drivers/net/ethernet/chelsio/cxgb4/cxgb4.h | 9 ++- .../net/ethernet/chelsio/cxgb4/cxgb4_main.c | 2 +- .../ethernet/chelsio/cxgb4/cxgb4_tc_mqprio.c | 4 +- .../net/ethernet/chelsio/cxgb4/cxgb4_uld.c | 2 +- drivers/net/ethernet/chelsio/cxgb4/sge.c | 40 +++++----- drivers/net/ethernet/chelsio/cxgb4vf/sge.c | 6 +- drivers/net/ethernet/dlink/sundance.c | 41 +++++----- .../net/ethernet/huawei/hinic/hinic_hw_cmdq.c | 2 +- .../net/ethernet/huawei/hinic/hinic_hw_eqs.c | 18 ++--- .../net/ethernet/huawei/hinic/hinic_hw_eqs.h | 2 +- drivers/net/ethernet/ibm/ehea/ehea.h | 3 +- drivers/net/ethernet/ibm/ehea/ehea_main.c | 14 ++-- drivers/net/ethernet/ibm/ibmvnic.c | 24 +++--- drivers/net/ethernet/ibm/ibmvnic.h | 2 +- drivers/net/ethernet/jme.c | 80 ++++++++++--------- drivers/net/ethernet/jme.h | 9 ++- .../net/ethernet/marvell/mvpp2/mvpp2_main.c | 9 ++- drivers/net/ethernet/marvell/skge.c | 12 +-- drivers/net/ethernet/marvell/skge.h | 3 +- drivers/net/ethernet/mediatek/mtk_wed_wo.c | 12 +-- drivers/net/ethernet/mediatek/mtk_wed_wo.h | 3 +- 43 files changed, 288 insertions(+), 266 deletions(-) -- 2.34.1