IPv6 remove/push on ConnectX-6/7

Maayan Kashani mkashani at nvidia.com
Sun Apr 12 08:52:11 CEST 2026


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š <sismis at dyna-nic.com>
Sent: Wednesday, 8 April 2026 14:39
To: users at dpdk.org
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mails.dpdk.org/archives/users/attachments/20260412/e623ab1c/attachment-0001.htm>


More information about the users mailing list