From: Rahul Rameshbabu <rrameshbabu@nvidia.com>
To: Joe Damato <jdamato@fastly.com>
Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
tariqt@nvidia.com, Saeed Mahameed <saeedm@nvidia.com>,
Leon Romanovsky <leon@kernel.org>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
"open list:MELLANOX MLX5 core VPI driver"
<linux-rdma@vger.kernel.org>
Subject: Re: [PATCH net-next] eth: mlx5: link NAPI instances to queues and IRQs
Date: Mon, 05 Feb 2024 17:09:09 -0800 [thread overview]
Message-ID: <878r3ymlnk.fsf@nvidia.com> (raw)
In-Reply-To: <20240206010311.149103-1-jdamato@fastly.com>
On Tue, 06 Feb, 2024 01:03:11 +0000 Joe Damato <jdamato@fastly.com> wrote:
> Make mlx5 compatible with the newly added netlink queue GET APIs.
>
> Signed-off-by: Joe Damato <jdamato@fastly.com>
> ---
> drivers/net/ethernet/mellanox/mlx5/core/en.h | 1 +
> drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 8 ++++++++
> 2 files changed, 9 insertions(+)
>
> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en.h b/drivers/net/ethernet/mellanox/mlx5/core/en.h
> index 55c6ace0acd5..3f86ee1831a8 100644
> --- a/drivers/net/ethernet/mellanox/mlx5/core/en.h
> +++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h
> @@ -768,6 +768,7 @@ struct mlx5e_channel {
> u16 qos_sqs_size;
> u8 num_tc;
> u8 lag_port;
> + unsigned int irq;
>
> /* XDP_REDIRECT */
> struct mlx5e_xdpsq xdpsq;
> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
> index c8e8f512803e..e1bfff1fb328 100644
> --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
> +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
> @@ -2473,6 +2473,9 @@ static void mlx5e_close_queues(struct mlx5e_channel *c)
> mlx5e_close_tx_cqs(c);
> mlx5e_close_cq(&c->icosq.cq);
> mlx5e_close_cq(&c->async_icosq.cq);
> +
> + netif_queue_set_napi(c->netdev, c->ix, NETDEV_QUEUE_TYPE_TX, NULL);
> + netif_queue_set_napi(c->netdev, c->ix, NETDEV_QUEUE_TYPE_RX, NULL);
This should be set to NULL *before* actually closing the rqs, sqs, and
related cqs right? I would expect these two lines to be the first ones
called in mlx5e_close_queues. Btw, I think this should be done in
mlx5e_deactivate_channel where the NAPI is disabled.
> }
>
> static u8 mlx5e_enumerate_lag_port(struct mlx5_core_dev *mdev, int ix)
> @@ -2558,6 +2561,7 @@ static int mlx5e_open_channel(struct mlx5e_priv *priv, int ix,
> c->stats = &priv->channel_stats[ix]->ch;
> c->aff_mask = irq_get_effective_affinity_mask(irq);
> c->lag_port = mlx5e_enumerate_lag_port(priv->mdev, ix);
> + c->irq = irq;
>
> netif_napi_add(netdev, &c->napi, mlx5e_napi_poll);
>
> @@ -2602,6 +2606,10 @@ static void mlx5e_activate_channel(struct mlx5e_channel *c)
> mlx5e_activate_xsk(c);
> else
> mlx5e_activate_rq(&c->rq);
> +
> + netif_napi_set_irq(&c->napi, c->irq);
> + netif_queue_set_napi(c->netdev, c->ix, NETDEV_QUEUE_TYPE_TX, &c->napi);
> + netif_queue_set_napi(c->netdev, c->ix, NETDEV_QUEUE_TYPE_RX, &c->napi);
It's weird that netlink queue API is being configured in
mlx5e_activate_channel and deconfigured in mlx5e_close_queues. This
leads to a problem where the napi will be falsely referred to even when
we deactivate the channels in mlx5e_switch_priv_channels and may not
necessarily get to closing the channels due to an error.
Typically, we use the following clean up patterns.
mlx5e_activate_channel -> mlx5e_deactivate_channel
mlx5e_open_queues -> mlx5e_close_queues
> }
>
> static void mlx5e_deactivate_channel(struct mlx5e_channel *c)
--
Thanks,
Rahul Rameshbabu
next prev parent reply other threads:[~2024-02-06 1:22 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-06 1:03 [PATCH net-next] eth: mlx5: link NAPI instances to queues and IRQs Joe Damato
2024-02-06 1:09 ` Rahul Rameshbabu [this message]
2024-02-06 1:32 ` Joe Damato
2024-02-06 1:33 ` Rahul Rameshbabu
2024-02-06 1:41 ` Joe Damato
2024-02-06 1:44 ` Rahul Rameshbabu
2024-02-06 1:56 ` Joe Damato
2024-02-06 2:38 ` Rahul Rameshbabu
2024-02-06 2:51 ` Joe Damato
2024-02-06 8:11 ` Tariq Toukan
2024-02-06 17:12 ` Joe Damato
2024-02-06 19:10 ` Tariq Toukan
2024-02-06 19:23 ` Joe Damato
2024-02-07 6:59 ` Gal Pressman
2024-02-07 14:25 ` Joe Damato
2024-02-07 14:31 ` Dave Taht
2024-02-07 13:23 ` Tariq Toukan
2024-02-07 14:40 ` Joe Damato
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=878r3ymlnk.fsf@nvidia.com \
--to=rrameshbabu@nvidia.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=jdamato@fastly.com \
--cc=kuba@kernel.org \
--cc=leon@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=saeedm@nvidia.com \
--cc=tariqt@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.