Skip to contentSkip to conversation

bpf ethdev tx filtering semantic issues

DPDK/other Bug 1816 [email protected] 1 participant 1 message Oct 29, 2025

lore
Share & tools
lore
#0 lore raw

http://bugs.dpdk.org/show_bug.cgi?id=1816

            Bug ID: 1816
           Summary: bpf ethdev tx filtering semantic issues
           Product: DPDK
           Version: 25.07
          Hardware: All
                OS: All
            Status: UNCONFIRMED
          Severity: major
          Priority: Normal
         Component: other
          Assignee: [email protected]
          Reporter: [email protected]

Target Milestone: ---

If the function rte_bpf_eth_tx_elf_load() is used to load a filter on a queue can cause duplicate mbuf usage issues.

For normal PMD transmit if rte_eth_tx_burst() returns a value smaller than the request number of packets; then the application will assume that this is because the transmit descriptor queue in the PMD is full. The unsent buffers will not be freed by the PMD, and is up to the application to either free (or resend) those mbufs.

The issue is that the transmit call back filter can return a smaller value than requested if some packets were filtered. The BPF filter code drops the filtered out packets.

In the simplest case, a common practice will cause duplicate free:

    sent = rte_eth_tx_burst(port, queue, pkts, nb_pkts);
    if (sent < nb_pkts)
        rte_pktmbuf_free_bulk(pkts + sent, nb_pkts - sent);

Alternatives are:
- redefining the meaning of tx_burst such that rte_eth_tx_burst frees major application impact
- treat filtered packets as if sent

Signature · 2 lines
You are receiving this mail because:
You are the assignee for the bug.