Hi Dariusz,
Indeed, we are using ConnectX-6 DX cards, which explains why such matching does
not work according to your information. Thanks for your valuable clarification.
Best regards,
Tao Li
From: Dariusz Sosnowski
Date: Monday, 9. June 2025 at 12:40
To: Li, Tao
Cc: [email protected]
Subject: Re: [net/mlx5] Failed to install async pattern template matching both
src and dst IPv6 addresses (DPDK 24.11.2)
Hi,
On Tue, May 06, 2025 at 07:05:13AM +, Li, Tao wrote:
> Hi All,
>
> I am experimenting async template APIs to install flow rules to perform
> matching on IPv6 packets containing TCP payload, using DPDK 24.11.2. However,
> I found that creating a pattern template that tries to match both the source
> and destination IPv6 addresses results in an error. In the experiment, the
> following testpmd commands were used.
>
>
> port stop 2
> port stop 1
> port stop 0
> flow configure 2 queues_number 1 queues_size 10 counters_number 0
> aging_counters_number 0 meters_number 0 flags 0
> flow configure 0 queues_number 1 queues_size 10 counters_number 0
> aging_counters_number 0 meters_number 0 flags 0
> flow configure 1 queues_number 1 queues_size 10 counters_number 0
> aging_counters_number 0 meters_number 0 flags 0
> port start all
>
> # command leading to the error, only matching src or dst address works
> flow pattern_template 0 create transfer relaxed no pattern_template_id 10
> template represented_port ethdev_port_id is 1 / eth type is 0x86dd / ipv6 dst
> is ::::::: src is
> ::::::: proto is 0x0006 / tcp src is 0x
> / end
>
> flow actions_template 0 create transfer actions_template_id 10 template
> represented_port / end mask represented_port / end
>
> flow template_table 0 create group 0 priority 0 transfer wire_orig
> table_id 5 rules_number 8 pattern_template 10 actions_template 10
>
> flow queue 0 create 0 template_table 5 pattern_template 0 actions_template 0
> postpone no pattern represented_port ethdev_port_id is 0 / eth type is 0x86dd
> / ipv6 dst is 2001:0db8:beef:0001::1src is fdbe:ef00:dead:beef::2 proto is
> 0x0006 / tcp src is 0x07d2 / end actions represented_port ethdev_port_id 2 /
> end
> flow push 0 queue 0
>
>
> The error emitted from the driver is:
>
> mlx5_net: [mlx5dr_matcher_create]: Failed to initialise matcher: 7
> Pattern template #10 destroyed
> port_flow_complain(): Caught PMD error type 1 (cause unspecified): failed to
> validate pattern template: Argument list too long
>
>
> One possible mitigation trick is to use two connected groups of flow rules to
> match the IPv6 source and destination addresses separately, which of course
> makes the template and flow rule creation more complicated. Thus, I would
> like to ask: is it the intended behavior, that matching of source and
> destination IPv6 addresses at a single pattern template is NOT supported, as
> observed in the above experiment?
What kind of NIC are you using?
With NVIDIA NICs, matching on both IPv6 addresses in a single flow rule
is supported only with BlueField-3 or newer NIC.
On older NICs, the solution you mentioned (with 2 separate groups) must
be applied.
Best regards,
Dariusz Sosnowski