Hi, Lukas,
Thanks for reaching out.
You’re already using the right testpmd CLI; the failure is coming from missing
HW/FW capabilities, not from the commands.
1. Why you see “Dynamic flex parser is not supported on HWS”
The error comes straight from mlx5 HWS code when trying to allocate a flex
parser for SRH:
if (!config->hca_attr.parse_graph_flex_node ||
!config->hca_attr.flex.query_match_sample_info) {
DRV_LOG(ERR, "Dynamic flex parser is not supported on HWS");
return -ENOTSUP;
}
This means: on your CX7, in HWS / template API mode (dv_flow_en=2), the HCA
capabilities do not report support for “parse graph flex node” +
“query_match_sample_info” → HWS cannot create the SRH flex parser, so IPv6 ext
push/remove offload is rejected.
________________________________
1. HW/FW and configuration requirements
From the DPDK docs and your own “uptream vs mlnx Doc” matrix:
* Hardware requirements (SRv6 push/remove feature):
* REMOVE action: ConnectX-6 Dx and above
* PUSH action: ConnectX-7 and above (your card qualifies)
* HWS flex-parser configuration needed for IPv6 ext push/remove tests:
* FLEX_PARSER_PROFILE_ENABLE = 4
* PROG_PARSE_GRAPH = 1
* And note: “push not supported with CX6DX, only CX7”
If these FW knobs aren’t set on your CX7, the mlx5 HWS layer will hit exactly
the “Dynamic flex parser is not supported on HWS” path you’re seeing.
________________________________
1. What you should do
1. Verify FW flex-parser settings on the CX7:
o Use mlxconfig -d 0000:a1:00.0 -e (or equivalent) and check:
§ FLEX_PARSER_PROFILE_ENABLE
§ PROG_PARSE_GRAPH
o For IPv6 ext push/remove in HWS, they must be:
§ FLEX_PARSER_PROFILE_ENABLE=4
§ PROG_PARSE_GRAPH=1
2. If needed, update FW configuration and reboot:
o Change those values with mlxconfig, burn FW, and reboot the host (or reset
the adapter) so the new profile and parse graph are applied.
o Make sure you’re using a FW/driver combo that corresponds to
MLNX_DPDK_22.11_24xx/25xx where SRv6 push/remove is listed as supported and
where FLEX_PARSER_PROFILE_ENABLE=4 is used for these actions.
3. Retry with HWS / template API:
o Your testpmd devargs and CLI are fine for this feature:
§ -a 0000:a1:00.0,representor=[0-1],dv_flow_en=2 (template API / HWS)
§ The set ipv6_ext_remove + pattern_template + actions_template +
template_table sequence is exactly per the docs.
If, after enabling FLEX_PARSER_PROFILE_ENABLE=4 and PROG_PARSE_GRAPH=1, you
still get the same HWS flex-parser error on this FW version, then that specific
FW build likely doesn’t expose parse_graph_flex_node / query_match_sample_info
yet for SRH; in that case you’ll need to move to a FW/driver combo version
where SRv6 Push/Remove Actions and FLEX_PARSER_PROFILE_ENABLE=4 are documented
as supported.
________________________________
Please let me know if above helped you solve the issue,
Regards,
Maayan Kashani
From: Lukáš Šišmiš <[email protected]>
Sent: Wednesday, 8 April 2026 14:39
To: [email protected]
Subject: IPv6 remove/push on ConnectX-6/7
External email: Use caution opening links or attachments
Hello,
I am trying to reproduce the usage of ipv6_ext_remove/ipv6_ext_push in the
testpmd on top of MLX/NVIDIA ConnectX-6 and ConnectX-7 cards. I tried to follow
https://docs.nvidia.com/networking/display/mlnxdpdk2211231051lts/template+api,
but to no avail, and I couldn't find a more up-to-date guide.
I am generally blocked by:
mlx5_net: Dynamic flex parser is not supported on HWS
Pattern template #1 destroyed
port_flow_complain(): Caught PMD error type 1 (cause unspecified): cannot
create IPv6 routing extension support: Operation not supported
This is my DPDK command:
```
sudo dpdk-testpmd -a 0000:a1:00.0,representor=[0-1],dv_flow_en=2 -l 0,2
--file-prefix=tpmd -- -i --rxq=1 --txq=1
```
These are DPDK commands:
```
port stop 1
port stop 2
port stop 0
flow configure 1 queues_number 1 queues_size 64
flow configure 2 queues_number 1 queues_size 64
flow configure 0 queues_number 1 queues_size 64
port start 0
port start 1
port start 2
set ipv6_ext_remove 1 ipv6_ext type is 43 / end_set
flow pattern_template 0 create transfer relaxed no pattern_template_id 1
template represented_port ethdev_port_id is 0 / eth / ipv6 / ipv6_routing_ext /
udp src is 100 / end
flow actions_template 0 create transfer actions_template_id 1 template
ipv6_ext_remove index 1 / represented_port ethdev_port_id 1 / end mask
ipv6_ext_remove index 1 / represented_port ethdev_port_id 1 / end
flow template_table 0 create group 0 priority 0 transfer table_id 1
rules_number 128 pattern_template 1 actions_template 1
```
DPDK was self-compiled to 25.11. FW on 28.43.2026.
```
sudo mlxfwmanager --query -d 0000:a1:00.0
Device #1:
----------
Device Type: ConnectX7
Part Number: MCX75310AAS-NEA_Ax
Description: NVIDIA ConnectX-7 HHHL Adapter card; 400GbE / NDR IB
(default mode); Single-port OSFP; PCIe 5.0 x16; Crypto Disabled; Secure Boot
Enabled;
PCI Device Name: 0000:a1:00.0
Versions: Current Available
FW 28.43.2026 N/A
PXE 3.7.0500 N/A
UEFI 14.36.0021 N/A
```
Is there any updated guide on how to set it up?
Thank you.
Lukas