From: Jakub Kicinski <kuba@kernel.org>
To: wei.fang@nxp.com
Cc: Jakub Kicinski <kuba@kernel.org>,
john.fastabend@gmail.com, linux-kernel@vger.kernel.org,
shenwei.wang@nxp.com, daniel@iogearbox.net, frank.li@nxp.com,
netdev@vger.kernel.org, xiaoning.wang@nxp.com, ast@kernel.org,
sdf@fomichev.me, imx@lists.linux.dev, davem@davemloft.net,
edumazet@google.com, hawk@kernel.org, bpf@vger.kernel.org,
pabeni@redhat.com, andrew+netdev@lunn.ch
Subject: Re: [v4,net-next,15/15] net: fec: add AF_XDP zero-copy support
Date: Sun, 25 Jan 2026 13:45:21 -0800 [thread overview]
Message-ID: <20260125214521.3384305-1-kuba@kernel.org> (raw)
In-Reply-To: <20260123022143.4121797-16-wei.fang@nxp.com>
This is an AI-generated review of your patch. The human sending this
email has considered the AI review valid, or at least plausible.
For local reproduction steps see https://netdev-ai.bots.linux.dev/ai-local.html
---
net: fec: add AF_XDP zero-copy support
This patch adds AF_XDP zero-copy support for both TX and RX on the FEC
driver, enabling higher performance packet processing through XSK pools.
> diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
> index c19ae60b04d7..d3e54dcf6a4c 100644
> --- a/drivers/net/ethernet/freescale/fec_main.c
> +++ b/drivers/net/ethernet/freescale/fec_main.c
[ ... ]
> +static int fec_setup_xsk_pool(struct net_device *ndev,
> + struct xsk_buff_pool *pool,
> + u16 queue)
> +{
> + struct fec_enet_private *fep = netdev_priv(ndev);
> + bool is_run = netif_running(ndev);
> + struct fec_enet_priv_rx_q *rxq;
> + struct fec_enet_priv_tx_q *txq;
> + bool enable = !!pool;
> + int err;
> +
> + if (queue >= fep->num_rx_queues || queue >= fep->num_tx_queues)
> + return -ERANGE;
> +
> + if (is_run) {
> + napi_disable(&fep->napi);
> + netif_tx_disable(ndev);
> + synchronize_rcu();
> + fec_enet_free_buffers(ndev);
> + }
> +
> + rxq = fep->rx_queue[queue];
> + txq = fep->tx_queue[queue];
> +
> + if (enable) {
> + err = xsk_pool_dma_map(pool, &fep->pdev->dev, 0);
> + if (err) {
> + netdev_err(ndev, "Failed to map xsk pool\n");
> + return err;
^^^^^^^^^^
If xsk_pool_dma_map() fails here when the device was running (is_run ==
true), the function returns without restoring the device state. At this
point NAPI is disabled, TX queues are disabled, and all buffers have been
freed. Should the error path restore the device to a working state similar
to the err_alloc_buffers path below?
The err_alloc_buffers label handles the cleanup for xsk_pool state but it
looks like that error path would also need to call fec_enet_alloc_buffers(),
fec_restart(), napi_enable(), and netif_tx_start_all_queues() to restore
the device when is_run was true.
> + }
> +
> + rxq->xsk_pool = pool;
> + txq->xsk_pool = pool;
> + } else {
> + xsk_pool_dma_unmap(rxq->xsk_pool, 0);
> + rxq->xsk_pool = NULL;
> + txq->xsk_pool = NULL;
> + }
> +
> + if (is_run) {
> + err = fec_enet_alloc_buffers(ndev);
> + if (err) {
> + netdev_err(ndev, "Failed to alloc buffers\n");
> + goto err_alloc_buffers;
> + }
> +
> + fec_restart(ndev);
> + napi_enable(&fep->napi);
> + netif_tx_start_all_queues(ndev);
> + }
> +
> + return 0;
> +
> +err_alloc_buffers:
> + if (enable) {
> + xsk_pool_dma_unmap(pool, 0);
> + rxq->xsk_pool = NULL;
> + txq->xsk_pool = NULL;
> + }
> +
> + return err;
> +}
prev parent reply other threads:[~2026-01-25 21:45 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-23 2:21 [PATCH v4 net-next 00/15] net: fec: improve XDP copy mode and add AF_XDP zero-copy support Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 01/15] net: fec: add fec_txq_trigger_xmit() helper Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 02/15] net: fec: add fec_rx_error_check() to check RX errors Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 03/15] net: fec: add rx_shift to indicate the extra bytes padded in front of RX frame Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 04/15] net: fec: add fec_build_skb() to build a skb Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 05/15] net: fec: improve fec_enet_rx_queue() Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 06/15] net: fec: add fec_enet_rx_queue_xdp() for XDP path Wei Fang
2026-01-25 21:44 ` [v4,net-next,06/15] " Jakub Kicinski
2026-01-26 2:09 ` Wei Fang
2026-01-27 0:17 ` Jakub Kicinski
2026-01-27 1:28 ` Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 07/15] net: fec: add tx_qid parameter to fec_enet_xdp_tx_xmit() Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 08/15] net: fec: transmit XDP frames in bulk Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 09/15] net: fec: remove unnecessary NULL pointer check when clearing TX BD ring Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 10/15] net: fec: use switch statement to check the type of tx_buf Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 11/15] net: fec: remove the size parameter from fec_enet_create_page_pool() Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 12/15] net: fec: move xdp_rxq_info* APIs out of fec_enet_create_page_pool() Wei Fang
2026-01-25 21:45 ` [v4,net-next,12/15] " Jakub Kicinski
2026-01-26 2:22 ` Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 13/15] net: fec: add fec_alloc_rxq_buffers_pp() to allocate buffers from page pool Wei Fang
2026-01-25 21:45 ` [v4,net-next,13/15] " Jakub Kicinski
2026-01-26 2:37 ` Wei Fang
2026-01-27 0:18 ` Jakub Kicinski
2026-01-23 2:21 ` [PATCH v4 net-next 14/15] net: fec: improve fec_enet_tx_queue() Wei Fang
2026-01-23 2:21 ` [PATCH v4 net-next 15/15] net: fec: add AF_XDP zero-copy support Wei Fang
2026-01-25 21:45 ` Jakub Kicinski [this message]
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=20260125214521.3384305-1-kuba@kernel.org \
--to=kuba@kernel.org \
--cc=andrew+netdev@lunn.ch \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=frank.li@nxp.com \
--cc=hawk@kernel.org \
--cc=imx@lists.linux.dev \
--cc=john.fastabend@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=sdf@fomichev.me \
--cc=shenwei.wang@nxp.com \
--cc=wei.fang@nxp.com \
--cc=xiaoning.wang@nxp.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox