Bug 1019
Summary: | Cannot Rx after DPDK 22.03 version with iavf | ||
---|---|---|---|
Product: | DPDK | Reporter: | happygmkim |
Component: | ethdev | Assignee: | dev |
Status: | UNCONFIRMED --- | ||
Severity: | major | CC: | happygmkim, kevinx.liu, qi.z.zhang, stevex.yang |
Priority: | Normal | ||
Version: | 22.03 | ||
Target Milestone: | --- | ||
Hardware: | All | ||
OS: | All |
Description
happygmkim
2022-05-27 11:24:41 CEST
Hi, It always reproducible with DPDK 22.03 version(iavf used). No issue with DPDK 21.02(i40evf used) version. It would be issue on new iavf driver. please offer the reproduce steps with standard DPDK API like testpmd, l3fwd and other examples. Hi Kevin Here are reproduction steps. I tested it with 1 Intel XL710 40G NIC. Step1. Create 3 SRIOV-VF NICs in XL710 NIC. Step2. Bind 2 NICs for DPDK testpmd, 1 for Linux Kernel driver(enp59s13f6) Step3. Run flood ping to broadcast address with SRIOV-VF NIC It'll broadcast packets to 2 DPDK NICs. Linux# sudo ping -I enp59s13f6 -b -q -f 255.255.255.255 Step4. Run testpmd I used 4 cores and 2 NICs Linux#sudo ./dpdk-testpmd -l 72,74,76,78 -a 3b:0d.2 -a 3b:0d.3 -n 4 -- -i Step5. Check forwarding stats in testpmd CLI All packets will be "Rx-dropped". testpmd> show fwd stats all ---------------------- Forward statistics for port 0 ---------------------- RX-packets: 451 RX-dropped: 422 RX-total: 873 TX-packets: 32 TX-dropped: 0 TX-total: 32 ---------------------------------------------------------------------------- ---------------------- Forward statistics for port 1 ---------------------- RX-packets: 485 RX-dropped: 390 RX-total: 875 TX-packets: 32 TX-dropped: 0 TX-total: 32 ---------------------------------------------------------------------------- +++++++++++++++ Accumulated forward statistics for all ports+++++++++++++++ RX-packets: 936 RX-dropped: 812 RX-total: 1748 TX-packets: 64 TX-dropped: 0 TX-total: 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Since this issue happen when initializing DPDK driver. (There are many DPDK error messages visible.) It does not issue if flood ping done after testpmd started. Step6. Normal case testing Run testpmd first, after then flood ping. In normal case, all packets visible as "Tx-dropped". And no DPDK error messages. testpmd> show fwd stats all ---------------------- Forward statistics for port 0 ---------------------- RX-packets: 1077 RX-dropped: 0 RX-total: 1077 TX-packets: 32 TX-dropped: 0 TX-total: 32 ---------------------------------------------------------------------------- ---------------------- Forward statistics for port 1 ---------------------- RX-packets: 1077 RX-dropped: 0 RX-total: 1077 TX-packets: 32 TX-dropped: 0 TX-total: 32 ---------------------------------------------------------------------------- +++++++++++++++ Accumulated forward statistics for all ports+++++++++++++++ RX-packets: 2154 RX-dropped: 0 RX-total: 2154 TX-packets: 64 TX-dropped: 2154 TX-total: 2218 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ I tried to test with the latest version of the dpdk, but your errors did not reappear. I looked at your driver and firmware versions, which seem to be a little old. The following are recommended by dpdk22.03: * Firmware version(PF): 8.30 0x8000a49d 1.2926.0 * Firmware version(VF): 8.50 0x8000b6d9 1.3082.0 * Device id (pf/vf): 8086:1572 / 8086:154c * Driver version: 2.17.15 (i40e) Hi, It's reproducible in the latest version of DPDK and any version of Linux kernel driver combinations including iavf 4.9.1 and DPDK 23.07 version. Following error messages visible in Linux kernel if broadcast packet received when iavf pmd enable queue. 261863.529942] DMAR: [DMA Write] Request device [3b:0d.1] fault addr 0 [fault reason 05] PTE Write access is not set [261863.544965] DMAR: DRHD: handling fault status reg 602 [261863.545624] DMAR: [DMA Write] Request device [3b:0d.1] fault addr 0 [fault reason 05] PTE Write access is not set [261863.560952] DMAR: DRHD: handling fault status reg 702 [261863.561626] DMAR: [DMA Write] Request device [3b:0d.1] fault addr 0 [fault reason 05] PTE Write access is not set [261863.576950] DMAR: DRHD: handling fault status reg 2 [261863.576959] DMAR: [DMA Write] Request device [3b:0d.1] fault addr 0 [fault reason 05] PTE Write access is not set This issue is not visible, if force to use old i40e PMD. iavf_ethdev.c static const struct rte_pci_id pci_id_iavf_map[] = { { RTE_PCI_DEVICE(IAVF_INTEL_VENDOR_ID, IAVF_DEV_ID_ADAPTIVE_VF) }, #if 0 /* force to use i40evf */ { RTE_PCI_DEVICE(IAVF_INTEL_VENDOR_ID, IAVF_DEV_ID_VF) }, { RTE_PCI_DEVICE(IAVF_INTEL_VENDOR_ID, IAVF_DEV_ID_VF_HV) }, { RTE_PCI_DEVICE(IAVF_INTEL_VENDOR_ID, IAVF_DEV_ID_X722_VF) }, { RTE_PCI_DEVICE(IAVF_INTEL_VENDOR_ID, IAVF_DEV_ID_X722_A0_VF) }, #endif { .vendor_id = 0, /* sentinel */ }, }; it's reproducible when VF devices in same PF are used by both Linux kernel driver(iavf 4.9.1) and DPDK(dpdk 23.07) in same host. It's 100% reproducible with flood ping with broadcast address. For example # sudo ping -f -b -q 1.1.1.255 -I enp59s13f5 |