Re: [PATCH net v2] net: macb: rate limit netdev error info print in the data path
From: Nicolai Buchwitz
Date: Fri Oct 02 2026 - 06:18:53 EST
Hi Zijin
On 30.9.2026 13:35, taozj888@xxxxxxx wrote:
From: taozijin <taozj888@xxxxxxx>
Now the MACB ethernet driver print the netdev error information
directly by netdev_err(), which would lead to a large number of
error information print if there was a significant number of
error or just jumbo packets exceeding the MTU received when booting.
For example, it would print a large number of:
macb PHYT0036:00 eth0: not whole frame pointed by descriptor
macb PHYT0036:00 eth0: not whole frame pointed by descriptor
...
Out of interest: Is this a Phytium vendor kernel?
in gem_rx() by received a large number of packets without
RX_EOF flag set, especially with unknown packet
type that would penetrate the hardware offload for the IP packets.
The unlimited prints here would greatly bother and delay
the system booting process unless the source stop sending
packets since they occupy the console output bandwidth and
other processes have to wait for the completion of printing those
messages.
So rate limit the netdev error information print in the receive
and transmit data path.
Fixes: 89e5785fc8a6 ("[PATCH] Atmel MACB ethernet driver")
IMHO the correct tag is 4df95131ea80 ("net/macb: change RX path for GEM")?
At least the gem_rx() messages were introduced here.
Cc: stable@xxxxxxxxxxxxxxx
Drop the blank line as otherwise tooling might get confused and doesn't
get all tags correctly.
Signed-off-by: Zijin Tao <taozj888@xxxxxxx>
---
drivers/net/ethernet/cadence/macb_main.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
index 8e5c034dc3a4..ca60960bec36 100644
--- a/drivers/net/ethernet/cadence/macb_main.c
+++ b/drivers/net/ethernet/cadence/macb_main.c
@@ -1617,16 +1617,16 @@ static int gem_rx(struct macb_queue *queue, struct napi_struct *napi,
count++;
if (!(ctrl & MACB_BIT(RX_SOF) && ctrl & MACB_BIT(RX_EOF))) {
- netdev_err(bp->netdev,
- "not whole frame pointed by descriptor\n");
+ if (net_ratelimit())
+ netdev_err(bp->netdev, "not whole frame pointed by descriptor\n");
This will just hide the error message, but the split/drop is still present.
How about limiting JML in macb_init_hw() properly?
if ((bp->caps & MACB_CAPS_JUMBO) && bp->jumbo_max_len) {
u32 jml = bp->rx_buffer_size - NET_IP_ALIGN + ETH_FCS_LEN;
gem_writel(bp, JML, min(jml, bp->jumbo_max_len));
}
The code above is untested, so probably needs further tweaking. An alternative could
be to handle the split frames in gem_rx() correctly.
[...]
Thanks,
Nicolai