Skip to content

RX ring buffers fill up when running native XDP with XDP_PASS #466

@tomiamao

Description

@tomiamao

When attaching an XDP program in native (driver) mode and returning XDP_PASS for all received packets, the NIC’s RX ring buffers eventually fills up from just a simple ICMP ping from another computer (5 packets/second max).

Kernel version: Linux 6.14.0
Driver: igb
NIC: enp4s0 (Intel i211AT )
XDP mode: Native (driver) mode

Program behavior: Returns XDP_PASS for all packets

cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 17280 240 0 0 0 0 0 0 17280 240 0 0 0 0 0 0
enp1s0: 2218389 26845 0 4964 0 0 0 4175 946204 7574 0 0 0 0 0 0
enp2s0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
enp3s0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
enp4s0: 75154 613 0 9980 9980 0 0 2 53154 555 0 0 0 0 0 0

ethtool -S enp4s0
NIC statistics:
rx_packets: 839
tx_packets: 553
rx_bytes: 106556
tx_bytes: 55496
rx_broadcast: 104
tx_broadcast: 0
rx_multicast: 2
tx_multicast: 17
multicast: 2
collisions: 0
rx_crc_errors: 0
rx_no_buffer_count: 1
rx_missed_errors: 9980 <-------------------------

ethtool -i enp4s0
driver: igb
version: 6.14.0-33-generic
firmware-version: 0. 6-1
expansion-rom-version:
bus-info: 0000:04:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes

Anyone come across this issue? Can't see how a simple ICMP ping can fill the RX ring buffer so quickly that the kernel can't catch up

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