Hi maintainers,
This patch series adds the packet transmission, reception, and link status
management features to the RNPGBE driver, building upon the previously
introduced mailbox communication and basic driver infrastructure.
The series introduces:
- MSI-X interrupt handling with NAPI support
- TX path with scatter-gather DMA and completion handling
- RX path with page pool buffer management
- Unicast/Multicast filter.
- Firmware link-event processing and carrier management
These changes enable the RNPGBE driver to support basic TX/RX
network operations.
---
Changelog:
v14 -> v15:
[patch 1/5]:
1. Update the interrupt helper documentation to describe the MSI-X-only
implementation instead of implying MSI or INTx fallback support.
2. Document in the commit message that mailbox transactions run in
process context and use sleepable polling to acquire the hardware
mailbox lock.
[patch 2/5]:
1. Document that carrier is kept off before register_netdev(), and is
enabled only after a valid link state is reported by the later
link-status patch.
[patch 3/5]:
1. Clarify that rnpgbe_is_non_eop() may consume and free the skb when the
fragment limit is reached.
2. Avoid retrying a failed RX page allocation for every descriptor in the
same NAPI poll. Check for pending refills after NAPI completes and use
the per-q_vector timer for delayed retries.
3. Report invalid RX descriptor lengths through rx_errors and
rx_length_errors instead of rx_dropped. Count at most one length error
for each complete packet and protect the counter with the existing
u64_stats_sync sequence.
4. Set the page-pool DMA synchronization window to start at
RNPGBE_SKB_PAD and cover only RNPGBE_RX_DESC_DATA_LEN bytes. Use the
same range when manually synchronizing reused pages.
5. Schedule the initial allocation retry only for batch-sized shortfalls.
Leave smaller shortfalls to be replenished when traffic frees a full
refill batch, and update the comment to describe this behavior.
[patch 4/5]:
1. Avoid transient receive-filter gaps when updating RAR and multicast
filter state.
2. Switch the receive-mode implementation to ndo_set_rx_mode_async while
retaining synchronous filter setup before RX is enabled.
[patch 5/5]:
1. Avoid a GMAC_CONTROL read-modify-write race with firmware during
port-down by leaving GMAC receiver disablement to firmware after RX
DMA has been quiesced.
Links:
v1: https://lore.kernel.org/netdev/20260325091204.94015-1-dong100@mucse.com/
v2: https://lore.kernel.org/netdev/20260403025713.527841-1-dong100@mucse.com/
v3: https://lore.kernel.org/netdev/20260507081539.171844-1-dong100@mucse.com/
v4: https://lore.kernel.org/netdev/20260526033539.164061-1-dong100@mucse.com/
v5: https://lore.kernel.org/netdev/20260528023150.239532-1-dong100@mucse.com/
v6: https://lore.kernel.org/netdev/20260604112750.769215-1-dong100@mucse.com/
v7: https://lore.kernel.org/netdev/20260611100036.36370-1-dong100@mucse.com/
v8: https://lore.kernel.org/netdev/20260731120322.895955-1-dong100@mucse.com/
v9: https://lore.kernel.org/netdev/20260814111317.1741087-1-dong100@mucse.com/
v10: https://lore.kernel.org/netdev/F44E6669E6C9E7C4+20260831073608.401988-2-dong100@mucse.com/
v11: https://lore.kernel.org/netdev/745DADAC2A5786BD+20260911112416.2142101-1-dong100@mucse.com/
v12: https://lore.kernel.org/netdev/64BE41C2D2C0836A+20260914013019.2262317-1-dong100@mucse.com/
v13: https://lore.kernel.org/netdev/B8AF0FDE24FAFB51+20260920092424.345309-1-dong100@mucse.com/
v14: https://lore.kernel.org/netdev/0A4D45AD9F6A0F14+20260928033701.1033196-1-dong100@mucse.com/
---
Dong Yibo (5):
net: rnpgbe: Add interrupt handling
net: rnpgbe: Add basic TX packet transmission support
net: rnpgbe: Add basic RX data path support
net: rnpgbe: Add receive mode support
net: rnpgbe: Add link status handling support
drivers/net/ethernet/mucse/Kconfig | 2 +
drivers/net/ethernet/mucse/rnpgbe/Makefile | 3 +-
drivers/net/ethernet/mucse/rnpgbe/rnpgbe.h | 210 +-
.../net/ethernet/mucse/rnpgbe/rnpgbe_chip.c | 167 +-
drivers/net/ethernet/mucse/rnpgbe/rnpgbe_hw.h | 45 +
.../net/ethernet/mucse/rnpgbe/rnpgbe_lib.c | 2258 +++++++++++++++++
.../net/ethernet/mucse/rnpgbe/rnpgbe_lib.h | 88 +
.../net/ethernet/mucse/rnpgbe/rnpgbe_main.c | 208 +-
.../net/ethernet/mucse/rnpgbe/rnpgbe_mbx.c | 179 +-
.../net/ethernet/mucse/rnpgbe/rnpgbe_mbx.h | 4 +
.../net/ethernet/mucse/rnpgbe/rnpgbe_mbx_fw.c | 283 +++
.../net/ethernet/mucse/rnpgbe/rnpgbe_mbx_fw.h | 60 +
12 files changed, 3468 insertions(+), 39 deletions(-)
create mode 100644 drivers/net/ethernet/mucse/rnpgbe/rnpgbe_lib.c
create mode 100644 drivers/net/ethernet/mucse/rnpgbe/rnpgbe_lib.h
--
2.50.1