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

Stephen Hemminger stephen at networkplumber.org
Wed Mar 11 17:04:25 CET 2026


On Mon, 19 Jan 2026 04:35:51 +0000
"Xue, Chuanyu" <chuanyu.xue at uconn.edu> wrote:

> 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.

Try vfio-pci with noiommu mode?


More information about the users mailing list