Hi
HW: ConnectX6DX - MCX623106AN-CDA_Ax, FW: 22.43.1014, Dual-port100G
Using App that uses multiple queues pr. port, and this works fine for e.x. eth.ipv4.tcp where doing RSS on ipv4 - then I receive packets on all configured queues.
When injecting traffic with mpls then RSS does not work - all packets are send to queue 0.
Is this adapter not capable of doing RSS on ipv4 if protocol is eth.mpls.ipv4.* ?
Have tried FLEX_PARSER_PROFILE_ENABLE=1 - but this does not help
have tried to match ipv4 via rte_flow api without any success
From the logs below I wonder why the HW have correctly detected L4_TCP/L4_UDP - so it actually locates ip4 and tcp/udp offsets correctly
What I’m I doing wrong?
logs:
user@server:/opt/xci/lib$ sudo ./dpdk-testpmd -l 64-100 -n 4 -a 82:00.0 – --port-numa-config=0,1,1,1 --socket-num=1 --txd=1024 --rxd=32768 --mbcache=512 --rxq=8 --txq=8 --nb-cores=8 --forward-mode=rxonly -i
EAL: Detected CPU lcores: 256
EAL: Detected NUMA nodes: 2
EAL: Detected static linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode ‘VA’
EAL: VFIO support initialized
Set rxonly packet forwarding mode
Interactive-mode selected
testpmd: Flow tunnel offload support might be limited or unavailable on port 0
testpmd: create a new mbuf pool <mb_pool_1>: n=737280, size=2176, socket=1
testpmd: preferred mempool ops selected: ring_mp_mc
Warning! port-topology=paired and odd forward ports number, the last port will pair with itself.
Configuring Port 0 (socket 1)
Port 0: B8:CE:F6:09:F8:A0
Checking link statuses…
Done
testpmd> port stop all
Stopping ports…
Checking link statuses…
Done
testpmd> port config all rss all
Port 0 modified RSS hash function based on hardware support,requested:0x137f83fffc configured:0x803afbc
rss_hf 0x137f83fffc
testpmd> port start all
Port 0: B8:CE:F6:09:F8:A0
Checking link statuses…
Done
testpmd> start
rxonly packet forwarding - ports=1 - cores=8 - streams=8 - NUMA support enabled, MP allocation mode: native
Logical Core 65 (socket 1) forwards packets on 1 streams:
RX P=0/Q=0 (socket 1) → TX P=0/Q=0 (socket 1) peer=02:00:00:00:00:00
Logical Core 66 (socket 1) forwards packets on 1 streams:
RX P=0/Q=1 (socket 1) → TX P=0/Q=1 (socket 1) peer=02:00:00:00:00:00
Logical Core 67 (socket 1) forwards packets on 1 streams:
RX P=0/Q=2 (socket 1) → TX P=0/Q=2 (socket 1) peer=02:00:00:00:00:00
Logical Core 68 (socket 1) forwards packets on 1 streams:
RX P=0/Q=3 (socket 1) → TX P=0/Q=3 (socket 1) peer=02:00:00:00:00:00
Logical Core 69 (socket 1) forwards packets on 1 streams:
RX P=0/Q=4 (socket 1) → TX P=0/Q=4 (socket 1) peer=02:00:00:00:00:00
Logical Core 70 (socket 1) forwards packets on 1 streams:
RX P=0/Q=5 (socket 1) → TX P=0/Q=5 (socket 1) peer=02:00:00:00:00:00
Logical Core 71 (socket 1) forwards packets on 1 streams:
RX P=0/Q=6 (socket 1) → TX P=0/Q=6 (socket 1) peer=02:00:00:00:00:00
Logical Core 72 (socket 1) forwards packets on 1 streams:
RX P=0/Q=7 (socket 1) → TX P=0/Q=7 (socket 1) peer=02:00:00:00:00:00
rxonly packet forwarding packets/burst=32
nb forwarding cores=8 - nb forwarding ports=1
port 0: RX queue number: 8 Tx queue number: 8
Rx offloads=0x0 Tx offloads=0x10000
RX queue: 0
RX desc=32768 - RX free threshold=64
RX threshold registers: pthresh=0 hthresh=0 wthresh=0
RX Offloads=0x0
TX queue: 0
TX desc=1024 - TX free threshold=0
TX threshold registers: pthresh=0 hthresh=0 wthresh=0
TX offloads=0x10000 - TX RS bit threshold=0
testpmd> flow flush 0
testpmd> clear fwd stats all
testpmd> set verbose 1
Change verbose level from 0 to 1
testpmd> show fwd stats all
---------------------- Forward statistics for port 0 ----------------------
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
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
testpmd>
Here injecting 2 packets:
#1 eth.mpls.ipv4.tcp
#2 eth.vlan.mpls.ipv4.udp
testpmd>
#1
port 0/queue 0: received 1 packets
src=C8:D9:D2:1B:44:8C - dst=9C:8E:99:16:69:30 - pool=mb_pool_1 - type=0x8847 - length=78 - nb_segs=1 - RSS hash=0x0 - RSS queue=0x0 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER - l2_len=14 - Receive queue=0x0
ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
#2
port 0/queue 0: received 1 packets
src=00:BB:00:00:40:00 - dst=00:BB:00:00:90:00 - pool=mb_pool_1 - type=0x8100 - length=735 - nb_segs=1 - RSS hash=0x0 - RSS queue=0x0 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER_VLAN - l2_len=18 - Receive queue=0x0
ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
testpmd> show fwd stats all
------- Forward Stats for RX Port= 0/Queue= 0 → TX Port= 0/Queue= 0 -------
RX-packets: 2 TX-packets: 0 TX-dropped: 0
---------------------- Forward statistics for port 0 ----------------------
RX-packets: 2 RX-dropped: 0 RX-total: 2
TX-packets: 0 TX-dropped: 0 TX-total: 0
+++++++++++++++ Accumulated forward statistics for all ports+++++++++++++++
RX-packets: 2 RX-dropped: 0 RX-total: 2
TX-packets: 0 TX-dropped: 0 TX-total: 0
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
testpmd>
Br. Jørgen