Skip to content

i40e: rte_eth_rx_burst() doesn't receive any packets, NIC counters increase, testpmd works #1182

@akorud

Description

@akorud

Hi, I'm trying to run TRex 3.06 in STL software mode (for later EMU) and the problem is that no RX packets are received.
I was able to trace the issue down to this function in main_dpdk.h

inline uint16_t  HOT_FUNC rx_burst(uint16_t queue_id, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) { 

if (likely( !m_is_dummy )) {
    return rte_eth_rx_burst(m_repid, queue_id, rx_pkts, nb_pkts);
} else {
    return 0;
}

I've confirmed that this function is called in polling mode, but rte_eth_rx_burst() always returns 0. At the same time, the NIC counters are incrementing. After rx_good_packets reaches the number of allocated RX descriptors, all subsequent packets are counted as rx_missed_errors.

My analysis is that since rte_eth_rx_burst() always returns 0, the NIC runs out of RX descriptors because they're never being consumed by the application. However, I'm not sure why rte_eth_rx_burst() is returning 0 in the first place.

The testpmd application from the same version od DPDK (24.03) on the same system with the same NIC works fine and properly receives packets through this function.
The NIC is dual-port Intel XXV710 25G.

Any ideas on what else I should check to diagnose this issue?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions