mbox series

[00/15] ethernet: Convert from tasklet to BH workqueue

Message ID 20240621050525.3720069-1-allen.lkml@gmail.com (mailing list archive)
Headers show
Series ethernet: Convert from tasklet to BH workqueue | expand

Message

Allen June 21, 2024, 5:05 a.m. UTC
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 
commit a6ec08beec9e ("Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net")

First version converting all the drivers can be found at:
https://lore.kernel.org/all/20240507190111.16710
-2-apais@linux.microsoft.com/


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  | 17 +++--
 .../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                    | 72 +++++++++----------
 drivers/net/ethernet/jme.h                    |  8 +--
 .../net/ethernet/marvell/mvpp2/mvpp2_main.c   |  4 +-
 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, 273 insertions(+), 266 deletions(-)

Comments

Stephen Hemminger June 21, 2024, 3:25 p.m. UTC | #1
On Thu, 20 Jun 2024 22:05:10 -0700
Allen Pais <allen.lkml@gmail.com> wrote:

> 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 
> commit a6ec08beec9e ("Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net")
> 
> First version converting all the drivers can be found at:
> https://lore.kernel.org/all/20240507190111.16710
> -2-apais@linux.microsoft.com/
> 
> 
> 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  | 17 +++--
>  .../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                    | 72 +++++++++----------
>  drivers/net/ethernet/jme.h                    |  8 +--
>  .../net/ethernet/marvell/mvpp2/mvpp2_main.c   |  4 +-
>  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, 273 insertions(+), 266 deletions(-)
> 

This should also go to netdev@vger.kernel.org
Allen June 21, 2024, 5:49 p.m. UTC | #2
>
> > 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
> > commit a6ec08beec9e ("Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net")
> >
> > First version converting all the drivers can be found at:
> > https://lore.kernel.org/all/20240507190111.16710
> > -2-apais@linux.microsoft.com/
> >
> >
> > 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  | 17 +++--
> >  .../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                    | 72 +++++++++----------
> >  drivers/net/ethernet/jme.h                    |  8 +--
> >  .../net/ethernet/marvell/mvpp2/mvpp2_main.c   |  4 +-
> >  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, 273 insertions(+), 266 deletions(-)
> >
>
> This should also go to netdev@vger.kernel.org

My Bad, I thought I had it marked. Thanks for pointing it out.

       - Allen
Paolo Abeni June 25, 2024, 10:24 a.m. UTC | #3
On Thu, 2024-06-20 at 22:05 -0700, Allen Pais wrote:
> 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 
> commit a6ec08beec9e ("Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net")
> 
> First version converting all the drivers can be found at:
> https://lore.kernel.org/all/20240507190111.16710
> -2-apais@linux.microsoft.com/

The above link was mangled.

I guess you will have to re-submit to cope at least with Andrew's
feedback, but it think it's better to wait a little longer for the next
version, to give the vendors more time to actually test this.

When you will re-submit you can retain the already collected ack.

Please include the target tree ('net-next') in the subj title and a
revision counter ('v3'). The whole subj should be:

[PATCH net-next v3 00/15] ethernet: Convert from tasklet to BH workqueue

Thanks,

Paolo