[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20260115222531.313002-1-pvalerio@redhat.com>
Date: Thu, 15 Jan 2026 23:25:23 +0100
From: Paolo Valerio <pvalerio@...hat.com>
To: netdev@...r.kernel.org
Cc: Nicolas Ferre <nicolas.ferre@...rochip.com>,
Claudiu Beznea <claudiu.beznea@...on.dev>,
Andrew Lunn <andrew+netdev@...n.ch>,
"David S. Miller" <davem@...emloft.net>,
Eric Dumazet <edumazet@...gle.com>,
Jakub Kicinski <kuba@...nel.org>,
Paolo Abeni <pabeni@...hat.com>,
Lorenzo Bianconi <lorenzo@...nel.org>,
Théo Lebrun <theo.lebrun@...tlin.com>
Subject: [PATCH net-next 0/8] net: macb: Add XDP support and page pool integration
Tested on Raspberry Pi 5.
All the changes are intended for gem only.
The series consists of two main changes:
- Migration from netdev_alloc_skb() to page pool allocation model,
enabling skb recycling.
This also adds support for multi-descriptor frame reception,
removing the previous single-descriptor approach and avoiding
potentially large contiguous allocations for e.g. jumbo frames
with CONFIG_PAGE_SIZE_4KB.
- XDP support: Initial XDP implementation supporting major
verdicts (XDP_PASS, XDP_DROP, XDP_REDIRECT, XDP_TX) along with
the ndo_xdp_xmit function for packet redirection.
The driver now advertises NETDEV_XDP_ACT_BASIC, NETDEV_XDP_ACT_REDIRECT,
NETDEV_XDP_ACT_NDO_XMIT capabilities.
Previous versions
=================
- RFC v1: https://lore.kernel.org/netdev/20251119135330.551835-1-pvalerio@redhat.com/
- RFC v2: https://lore.kernel.org/netdev/20251220235135.1078587-1-pvalerio@redhat.com/
RFC v2 -> v1
============
- Removed bp->macbgem_ops.mog_init_rings(bp) call from macb_open()
- Fixed includes (remove unneeded, moved one from header to macb_main.c)
- Reverse xmas tree ordering (gem_rx, gem_rx_refill)
- print_hex_dump_debug() instead of print_hex_dump()
- Replaced rx frame length check with MACB_BIT(RX_EOF) for data_len
calculation
- Removed NET_IP_ALIGN handling in rx buffer size calculation
- Updated debug format string to include rx_headroom and total size
- Changed types to unsigned int in helper functions and variable
- Removed unneeded line break
RFC v1 -> RFC v2
================
- Squashed 1/6 and 2/6
- Reworked rx_buffer_size computation. It no longer takes into
accounts extra room.
- A bunch of renaming (rx_offset => rx_headroom, removed MACB_MAX_PAD,
MACB_PP_HEADROOM => XDP_PACKET_HEADROOM, data => ptr, xdp_q => xdp_rxq,
macb_xdp() => gem_xdp(), macb_xdp_xmit() => gem_xdp_xmit())
- Deduplicated buffer size computation in gem_xdp_valid_mtu()
and gem_xdp_setup()
- gem_xdp_setup() no longer close()/open()
- Renaming from rx_skbuff to rx_buff is now got split in a separate commit
- Open-coded gem_page_pool_get_buff()
- Added missing rx_buff re-initialization in the error path during rx
- Page pool creation failure now fails the device open
- Moved xdp buff preparation inside gem_xdp_run()
- Added missing rcu_access_pointer()
- Turned return value in -EOPNOTSUPP for macb_xdp() on failure
- moved tx_skb to tx_buff renaming to a separate commit
- Removed some unneeded code and set MACB_TYPE_SKB for lp->rm9200_txq[desc].type as well
- Replaced !!addr with a dedicated bool in macb_xdp_submit_frame()
Paolo Valerio (7):
net: macb: rename rx_skbuff into rx_buff
cadence: macb: Add page pool support handle multi-descriptor frame rx
cadence: macb: use the current queue number for stats
cadence: macb: add XDP support for gem
cadence: macb: make macb_tx_skb generic
cadence: macb: make tx path skb agnostic
cadence: macb: introduce xmit support
Théo Lebrun (1):
net: macb: move Rx buffers alloc from link up to open
drivers/net/ethernet/cadence/Kconfig | 1 +
drivers/net/ethernet/cadence/macb.h | 40 +-
drivers/net/ethernet/cadence/macb_main.c | 827 +++++++++++++++++------
3 files changed, 659 insertions(+), 209 deletions(-)
--
2.52.0
Powered by blists - more mailing lists