How to get RTE flows working with BNXT PMD?
Kishore Padmanabha
kishore.padmanabha at broadcom.com
Thu Aug 6 17:11:28 CEST 2026
Hi Baptiste,
Could you add the dmac address in your flow. You can add the PF's mac
address you are using. As an example
flow create 0 ingress pattern eth dst is DE:E2:A0:CA:1C:24 / ipv4 proto is
0x11 / udp dst spec 30720 dst mask 0xFFF0 / end actions port_id id 0 / rss
queues 2 3 4 5 end types ipv4 ipv4-tcp ipv4-udp ipv6 ipv6-tcp ipv6-udp end /
count / end
Thanks,
Kishore
-----Original Message-----
From: Wicht, Baptiste <bwicht at verisign.com>
Sent: Thursday, August 6, 2026 7:47 AM
To: users at dpdk.org
Cc: david.marchand at redhat.com; ajit.khaparde at broadcom.com;
kishore.padmanabha at broadcom.com
Subject: RE: RE: Re: How to get RTE flows working with BNXT PMD?
Hi Kishore,
I have rerun the test using dpdk-testpmd 26.07-RC3 and I can confirm that we
see the same behavior in testpmd than we do in our applications
With a traffic generator running at all times, here is what I did
dpdk-testpmd -- -i --nb-cores=16 --rxq 8 --txq=8 --rxd=512 --txd=512
testpmd> port stop 0
testpmd> port config 0 speed 200000 duplex full port start 0 start
... wait 10 seconds
testpmd > stop
------- Forward Stats for RX Port= 0/Queue= 0 -> TX Port= 0/Queue=
0 -------
RX-packets: 732217 TX-packets: 732217 TX-dropped: 0
------- Forward Stats for RX Port= 0/Queue= 1 -> TX Port= 0/Queue=
1 -------
RX-packets: 730305 TX-packets: 730305 TX-dropped: 0
------- Forward Stats for RX Port= 0/Queue= 2 -> TX Port= 0/Queue=
2 -------
RX-packets: 731414 TX-packets: 731414 TX-dropped: 0
------- Forward Stats for RX Port= 0/Queue= 3 -> TX Port= 0/Queue=
3 -------
RX-packets: 732382 TX-packets: 732382 TX-dropped: 0
------- Forward Stats for RX Port= 0/Queue= 4 -> TX Port= 0/Queue=
4 -------
RX-packets: 731595 TX-packets: 731595 TX-dropped: 0
------- Forward Stats for RX Port= 0/Queue= 5 -> TX Port= 0/Queue=
5 -------
RX-packets: 732300 TX-packets: 732300 TX-dropped: 0
------- Forward Stats for RX Port= 0/Queue= 6 -> TX Port= 0/Queue=
6 -------
RX-packets: 732517 TX-packets: 732517 TX-dropped: 0
------- Forward Stats for RX Port= 0/Queue= 7 -> TX Port= 0/Queue=
7 -------
RX-packets: 731211 TX-packets: 731211 TX-dropped: 0
testpmd > flow create 0 ingress pattern eth / ipv4 proto is 0x11 / udp dst
spec 30720 dst mask 0xFFF0 / end actions port_id id 0 / rss queues 2 3 4 5
end types ipv4 ipv4-tcp ipv4-udp ipv6 ipv6-tcp ipv6-udp end / count / end
testpmd> start
... wait 10 seconds
testpmd > stop
------- Forward Stats for RX Port= 0/Queue= 0 -> TX Port= 0/Queue=
0 -------
RX-packets: 5 TX-packets: 5 TX-dropped: 0
------- Forward Stats for RX Port= 0/Queue= 2 -> TX Port= 0/Queue=
2 -------
RX-packets: 2833538 TX-packets: 2833538 TX-dropped: 0
------- Forward Stats for RX Port= 0/Queue= 3 -> TX Port= 0/Queue=
3 -------
RX-packets: 2834963 TX-packets: 2834963 TX-dropped: 0
------- Forward Stats for RX Port= 0/Queue= 4 -> TX Port= 0/Queue=
4 -------
RX-packets: 2835455 TX-packets: 2835455 TX-dropped: 0
------- Forward Stats for RX Port= 0/Queue= 5 -> TX Port= 0/Queue=
5 -------
RX-packets: 2834993 TX-packets: 2834993 TX-dropped: 0
testpmd> flow flush 0
testpmd> set promisc 0 off
testpmd> flow create 0 ingress pattern eth / ipv4 proto is 0x11 / udp
testpmd> dst spec 30720 dst mask 0xFFF0 / end actions port_id id 0 / rss
testpmd> queues 2 3 4 5 end types ipv4 ipv4-tcp ipv4-udp ipv6 ipv6-tcp
testpmd> ipv6-udp end / count / end start
... wait 10 seconds
testpmd> stop
---------------------- Forward statistics for port
----------------------
RX-packets: 0 RX-dropped: 0 RX-total: 0
TX-packets: 0 TX-dropped: 0 TX-total: 0
----------------------------------------------------------------------------
+++++++++++++++ Accumulated forward statistics for all
ports+++++++++++++++
RX-packets: 0 RX-dropped: 0 RX-total: 0
TX-packets: 0 TX-dropped: 0 TX-total: 0
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
As you can see:
* When there are no flows and promisc is on, we see traffic on all queues
(expected)
* When we add a flow and promisc is on, we see traffic only on these queues
(expected)
* When we remove the flow, disable promiscuous and add back the flow, we see
no traffic at all (unexpected)
If we look at the stats, we can see rx_filter_miss is counting all the
packets being filtered.
What should we do to run BNXT without promiscuous?
Thanks
Baptiste
-----Original Message-----
From: Kishore Padmanabha <kishore.padmanabha at broadcom.com>
Sent: Wednesday, August 5, 2026 4:05 PM
To: Wicht, Baptiste <bwicht at verisign.com>; users at dpdk.org
Cc: david.marchand at redhat.com; Ajit Kumar Khaparde
<ajit.khaparde at broadcom.com>
Subject: RE: Re: How to get RTE flows working with BNXT PMD?
HI Baptiste,
Testpmd enables promisc mode by default, so it can receive all the packets.
You can disable it.
Could you provide what flows are you adding to get the packets, if you
provide the testpmd logs it would be useful.
Rgds,
Kishore
-----Original Message-----
From: Wicht, Baptiste <bwicht at verisign.com>
Sent: Wednesday, August 5, 2026 5:28 AM
To: users at dpdk.org
Cc: david.marchand at redhat.com; ajit.khaparde at broadcom.com;
kishore.padmanabha at broadcom.com
Subject: RE: Re: How to get RTE flows working with BNXT PMD?
Hi team
After digging into testpmd and the debug logs, I have found that testpmd
always turn on promiscuous mode.
Once we turned it on in our program, we could get flows working. Without
promiscuous, all packets were dropped when TruFlow was enabled (with or
without flows).
Is it mandatory to run promiscuous mode on BNXT? Is there another way around
that?
Best regards
Baptiste
-----Original Message-----
From: Kishore Padmanabha <kishore.padmanabha at broadcom.com>
Sent: Monday, July 20, 2026 4:27 PM
To: Wicht, Baptiste <bwicht at verisign.com>; david.marchand at redhat.com; Ajit
Kumar Khaparde <ajit.khaparde at broadcom.com>
Cc: users at dpdk.org
Subject: [EXTERNAL] RE: Re: How to get RTE flows working with BNXT PMD?
Hi Baptiste,
As 26.07 RC is working in freebsd, I am assuming you are good with it.
As for CQE mode, it is not supported with Truflow currently. Hence if you
enable cqe_mode it shall disable Truflow and you cannot add rte flows that I
mentioned earlier. In bnxt_get_config(), there is check for
bnxt_compressed_rx_cqe_mode_enabled(), if you remove that check it should
work but this is something we have not supported officially.
Thanks,
Kishore
-----Original Message-----
From: Wicht, Baptiste <bwicht at verisign.com>
Sent: Monday, July 20, 2026 5:10 AM
To: david.marchand at redhat.com; kishore.padmanabha at broadcom.com;
ajit.khaparde at broadcom.com
Cc: users at dpdk.org
Subject: RE: Re: How to get RTE flows working with BNXT PMD?
Hi David, Kishore, DPDK users,
I have been able to reproduce your example with dpdk-testpmd compiled from
26.07 RC, the only "release" that is working on FreeBSD for BNXT. I could
get the same results you did, thanks!
I do observe some special behavior though. In our tests, we have to use
cqe_mode=1 because otherwise we do not get any unicast packets (they are all
filtered). However, in dpdk-testpmd, if I use cqe_mode=1, I do not get any
packets counted and the filter you have proposed cannot be create.
Is that behavior normal with cqe_mode=1?
Thanks
Baptiste
-----Original Message-----
From: David Marchand <david.marchand at redhat.com>
Sent: Monday, July 13, 2026 11:10 AM
To: Kishore Padmanabha <kishore.padmanabha at broadcom.com>; Ajit Khaparde
<ajit.khaparde at broadcom.com>
Cc: users at dpdk.org; Wicht, Baptiste <bwicht at verisign.com>
Subject: Re: How to get RTE flows working with BNXT PMD?
Caution: This email originated from outside the organization. Do not click
links or open attachments unless you recognize the sender and know the
content is safe.
On Mon, 13 Jul 2026 at 10:59, Wicht, Baptiste <bwicht at verisign.com> wrote:
>
> Hi DPDK users
>
> We are trying to get some RTE flows working with the BNXT PMD (on a
Broadcom P2200G). However, we cannot get any flows working. We have tried
both legacy and TruFlow modes, but neither seem to be working. Legacy mode
only let us do RSS for total number of queues (not a subset) and TruFlow
mode ends up filtering all unicast packets.
>
> Ultimately, we are trying to separate some kind of traffic (like UDP)
> to
a set of RSS queues and the rest of the traffic to another set of RSS
queues.
>
> Is that something that can be achieved with BNXT?
Better to ask the bnxt maintainers directly.
Kishore? Ajit?
--
David Marchand
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5493 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://mails.dpdk.org/archives/users/attachments/20260806/73cb86c5/attachment-0001.bin>
More information about the users
mailing list