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.

<Install async rules>
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 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff src is 
ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff proto is 0x0006 / tcp  src is 0xffff / 
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
</Install async rules>

The error emitted from the driver is:
<emitted error>
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
</emitted error>

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?

Many thanks in advance.

Best regards,
Tao






Reply via email to