]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mlxsw: pci: Split NAPI setup/teardown into two steps
authorAmit Cohen <amcohen@nvidia.com>
Tue, 18 Jun 2024 11:34:40 +0000 (13:34 +0200)
committerJakub Kicinski <kuba@kernel.org>
Thu, 20 Jun 2024 00:38:10 +0000 (17:38 -0700)
mlxsw_pci_cq_napi_setup() includes both NAPI initialization and
enablement, similar to teardown function. Next patches will add support
for page pool in mlxsw driver, then we use NAPI instance for page pool.

Page pool initialization should be done before NAPI enablement, same for
page pool destruction which should be done after NAPI disablement.

As preparation, split NAPI setup/teardown into two steps, then page pool
setup will be done between the phases.

Signed-off-by: Amit Cohen <amcohen@nvidia.com>
Reviewed-by: Petr Machata <petrm@nvidia.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: Petr Machata <petrm@nvidia.com>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Link: https://lore.kernel.org/r/8dbf37e859f07247498fca17109b8858ff2b0498.1718709196.git.petrm@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/mellanox/mlxsw/pci.c

index bf66d996e32e72ea9e51153a5b5cb0051e825678..fe6df5a92616b59e8e5bb09dabe072c8ae2c7078 100644 (file)
@@ -832,13 +832,10 @@ static void mlxsw_pci_cq_napi_setup(struct mlxsw_pci_queue *q,
                               mlxsw_pci_napi_poll_cq_rx);
                break;
        }
-
-       napi_enable(&q->u.cq.napi);
 }
 
 static void mlxsw_pci_cq_napi_teardown(struct mlxsw_pci_queue *q)
 {
-       napi_disable(&q->u.cq.napi);
        netif_napi_del(&q->u.cq.napi);
 }
 
@@ -875,6 +872,7 @@ static int mlxsw_pci_cq_init(struct mlxsw_pci *mlxsw_pci, char *mbox,
        if (err)
                return err;
        mlxsw_pci_cq_napi_setup(q, mlxsw_pci_cq_type(mlxsw_pci, q));
+       napi_enable(&q->u.cq.napi);
        mlxsw_pci_queue_doorbell_consumer_ring(mlxsw_pci, q);
        mlxsw_pci_queue_doorbell_arm_consumer_ring(mlxsw_pci, q);
        return 0;
@@ -883,6 +881,7 @@ static int mlxsw_pci_cq_init(struct mlxsw_pci *mlxsw_pci, char *mbox,
 static void mlxsw_pci_cq_fini(struct mlxsw_pci *mlxsw_pci,
                              struct mlxsw_pci_queue *q)
 {
+       napi_disable(&q->u.cq.napi);
        mlxsw_pci_cq_napi_teardown(q);
        mlxsw_cmd_hw2sw_cq(mlxsw_pci->core, q->num);
 }