From: Martin Habets <habetsm.xilinx@gmail.com>
To: "Íñigo Huguet" <ihuguet@redhat.com>
Cc: ecree.xilinx@gmail.com, davem@davemloft.net, edumazet@google.com,
kuba@kernel.org, pabeni@redhat.com, netdev@vger.kernel.org,
linux-net-drivers@amd.com, Yanghang Liu <yanghliu@redhat.com>
Subject: Re: [PATCH net] sfc: fix XDP queues mode with legacy IRQ
Date: Thu, 15 Jun 2023 09:00:56 +0100 [thread overview]
Message-ID: <ZIrFONMcNWZQKjiv@gmail.com> (raw)
In-Reply-To: <20230613133854.37832-1-ihuguet@redhat.com>
On Tue, Jun 13, 2023 at 03:38:54PM +0200, Íñigo Huguet wrote:
> In systems without MSI-X capabilities, xdp_txq_queues_mode is calculated
> in efx_allocate_msix_channels, but when enabling MSI-X fails, it was not
> changed to a proper default value. This was leading to the driver
> thinking that it has dedicated XDP queues, when it didn't.
>
> Fix it by setting xdp_txq_queues_mode to the correct value if the driver
> fallbacks to MSI or legacy IRQ mode. The correct value is
> EFX_XDP_TX_QUEUES_BORROWED because there are not XDP dedicated queues.
Small typo: not should be no.
>
> The issue can be easily visible if the kernel is started with pci=nomsi,
> then a call trace is shown. It is not shown only with sfc's modparam
> interrupt_mode=2. Call trace example:
> WARNING: CPU: 2 PID: 663 at drivers/net/ethernet/sfc/efx_channels.c:828 efx_set_xdp_channels+0x124/0x260 [sfc]
> [...skip...]
> Call Trace:
> <TASK>
> efx_set_channels+0x5c/0xc0 [sfc]
> efx_probe_nic+0x9b/0x15a [sfc]
> efx_probe_all+0x10/0x1a2 [sfc]
> efx_pci_probe_main+0x12/0x156 [sfc]
> efx_pci_probe_post_io+0x18/0x103 [sfc]
> efx_pci_probe.cold+0x154/0x257 [sfc]
> local_pci_probe+0x42/0x80
>
> Fixes: 6215b608a8c4 ("sfc: last resort fallback for lack of xdp tx queues")
> Reported-by: Yanghang Liu <yanghliu@redhat.com>
> Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
Acked-by: Martin Habets <habetsm.xilinx@gmail.com>
> ---
> drivers/net/ethernet/sfc/efx_channels.c | 2 ++
> drivers/net/ethernet/sfc/siena/efx_channels.c | 2 ++
> 2 files changed, 4 insertions(+)
>
> diff --git a/drivers/net/ethernet/sfc/efx_channels.c b/drivers/net/ethernet/sfc/efx_channels.c
> index fcea3ea809d7..41b33a75333c 100644
> --- a/drivers/net/ethernet/sfc/efx_channels.c
> +++ b/drivers/net/ethernet/sfc/efx_channels.c
> @@ -301,6 +301,7 @@ int efx_probe_interrupts(struct efx_nic *efx)
> efx->tx_channel_offset = 0;
> efx->n_xdp_channels = 0;
> efx->xdp_channel_offset = efx->n_channels;
> + efx->xdp_txq_queues_mode = EFX_XDP_TX_QUEUES_BORROWED;
> rc = pci_enable_msi(efx->pci_dev);
> if (rc == 0) {
> efx_get_channel(efx, 0)->irq = efx->pci_dev->irq;
> @@ -322,6 +323,7 @@ int efx_probe_interrupts(struct efx_nic *efx)
> efx->tx_channel_offset = efx_separate_tx_channels ? 1 : 0;
> efx->n_xdp_channels = 0;
> efx->xdp_channel_offset = efx->n_channels;
> + efx->xdp_txq_queues_mode = EFX_XDP_TX_QUEUES_BORROWED;
> efx->legacy_irq = efx->pci_dev->irq;
> }
>
> diff --git a/drivers/net/ethernet/sfc/siena/efx_channels.c b/drivers/net/ethernet/sfc/siena/efx_channels.c
> index 06ed74994e36..1776f7f8a7a9 100644
> --- a/drivers/net/ethernet/sfc/siena/efx_channels.c
> +++ b/drivers/net/ethernet/sfc/siena/efx_channels.c
> @@ -302,6 +302,7 @@ int efx_siena_probe_interrupts(struct efx_nic *efx)
> efx->tx_channel_offset = 0;
> efx->n_xdp_channels = 0;
> efx->xdp_channel_offset = efx->n_channels;
> + efx->xdp_txq_queues_mode = EFX_XDP_TX_QUEUES_BORROWED;
> rc = pci_enable_msi(efx->pci_dev);
> if (rc == 0) {
> efx_get_channel(efx, 0)->irq = efx->pci_dev->irq;
> @@ -323,6 +324,7 @@ int efx_siena_probe_interrupts(struct efx_nic *efx)
> efx->tx_channel_offset = efx_siena_separate_tx_channels ? 1 : 0;
> efx->n_xdp_channels = 0;
> efx->xdp_channel_offset = efx->n_channels;
> + efx->xdp_txq_queues_mode = EFX_XDP_TX_QUEUES_BORROWED;
> efx->legacy_irq = efx->pci_dev->irq;
> }
>
> --
> 2.40.1
next prev parent reply other threads:[~2023-06-15 8:01 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-13 13:38 [PATCH net] sfc: fix XDP queues mode with legacy IRQ Íñigo Huguet
2023-06-15 8:00 ` Martin Habets [this message]
2023-06-15 10:50 ` patchwork-bot+netdevbpf
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=ZIrFONMcNWZQKjiv@gmail.com \
--to=habetsm.xilinx@gmail.com \
--cc=davem@davemloft.net \
--cc=ecree.xilinx@gmail.com \
--cc=edumazet@google.com \
--cc=ihuguet@redhat.com \
--cc=kuba@kernel.org \
--cc=linux-net-drivers@amd.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=yanghliu@redhat.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.