[dpdk-users] i210/i225 TX Failure on Raspberry Pi 4 (ARM64): rte_eth_tx_burst succeeds but packets drop

Xue, Chuanyu chuanyu.xue at uconn.edu
Mon Jan 19 05:35:51 CET 2026


Hi all,

I am attempting to run DPDK 25.03 on a Raspberry Pi 4 Compute Module (IO Board) using an Intel I210 PCIe NIC.

The Problem:
I am observing 100% TX packet loss. rte_eth_tx_burst() returns values > 0, indicating successful enqueueing to the driver ring, but the packets are never transmitted, and the NIC stats show no completed TX packets. RX works, and link status is detected as UP.

I suspect this may be related to DMA coherency or IOMMU configuration on the BCM2711 PCIe bus, but I have not been able to isolate the root cause.

Environment:
- Hardware: Raspberry Pi 4 Compute Module (IO Board)
- NIC: Intel I210 (IGB driver) attached via PCIe
- OS/Kernel: Linux (custom real-time config)
- DPDK Version: 25.03 (built from source with Meson)
- Driver: uio_pci_generic (VFIO is not standard on this kernel, iommu.passthrough=1 is set)
- Hugepages: 64 x 2MB

Configuration Details:
I have isolated CPUs and enabled hugepages. The device is bound using uio_pci_generic:

# cmdline.txt
isolcpus=2,3 irqaffinity=0,1 iommu.passthrough=1

# Binding
sudo python3 dpdk-devbind.py -b uio_pci_generic 0000:01:00.0

Steps to Reproduce:
I am using testpmd in "txonly" mode to isolate the issue.

1. Start testpmd:
sudo ./build/app/dpdk-testpmd -l 0-1 -n 4 -a 0000:01:00.0 -- -i \
--nb-cores=1 --port-topology=loop --total-num-mbufs=32768 --rxd=256 --txd=2048

2. Configure forwarding:
testpmd> set fwd txonly
testpmd> start

3. Wait a few seconds, then stop and check stats:
testpmd> stop
testpmd> show port xstats all

Observed Behavior:
- Virtual Ring: When running with --vdev=net_ring0, TX works perfectly.
- Physical I210: testpmd reports all packets as "dropped" in the summary.
- Code Level: In my own C application, rte_eth_tx_burst returns the correct number of packets (e.g., 32), meaning the PMD accepted the mbufs. However, the NIC apparently fails to fetch or process the descriptors.

Question:
Has anyone successfully validated the I210 on Pi 4 with uio_pci_generic? Are there known coherence or cache flushing flags required for the igb PMD on non-IOMMU ARM64 setups?

Any advice on debugging the ring state or DMA mapping for this specific SoC would be appreciated.


More information about the users mailing list