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.

Reply via email to