The rx_buffer is only dma_alloc'ed but never properly flushed. Fix that. While at it, also use proper volatile access instead of sw barriers. Also, redefine PKTSIZE to a sensible multiple of 64 bytes. Signed-off-by: Steffen Trumtrar <s.trumtrar@xxxxxxxxxxxxxx> --- Changes in v4: - align PKTSIZE with cacheline size - minor style changes - Link to v3: https://lore.barebox.org/20231129-v2023-08-0-topic-macb-v3-0-65ad6db834dc@xxxxxxxxxxxxxx Changes in v3: - fix dma_unmap_single direction - dma_map_single packet in macb_send() - Link to v2: https://lore.barebox.org/20231129-v2023-08-0-topic-macb-v2-0-4dc2cb4d5d25@xxxxxxxxxxxxxx Changes in v2: - change dma_map_single to DMA_FROM_DEVICE - drop (unsigned long) casts in dma_sync_* - rework writel/setbits/clearbits to keep semantics - Link to v1: https://lore.barebox.org/20231128-v2023-08-0-topic-macb-v1-0-9faff73bc990@xxxxxxxxxxxxxx --- Steffen Trumtrar (3): net: macb: fix dma_alloc for rx_buffer net: macb: convert to volatile accesses include: net: align PKTSIZE to 64 bytes drivers/net/macb.c | 132 +++++++++++++++++++++++++++++------------------------ include/net.h | 4 +- 2 files changed, 75 insertions(+), 61 deletions(-) --- base-commit: 5f200dd534c848dfa5d948334b6373f0310b8f73 change-id: 20231128-v2023-08-0-topic-macb-0c13ed91179d Best regards, -- Steffen Trumtrar <s.trumtrar@xxxxxxxxxxxxxx>