Bug ID 1502
Summary [dpdk-24.07] l3fwdacl/l3fwdacl_acl_rule: core dump when receiving packets
Product DPDK
Version 24.07
Hardware x86
OS Linux
Status UNCONFIRMED
Severity normal
Priority Normal
Component examples
Assignee dev@dpdk.org
Reporter songx.jiale@intel.com
Target Milestone ---

[Environment]
DPDK version: 
dpdk24.07-rc3:82c47f005b9a0a1e3a649664b7713443d18abe43
Other software versions: N/A.
OS: Anolis OS 8.8/5.10.134-13.an8.x86_64
Compiler: gcc version 8.5.0 20210514
Hardware platform: Intel(R) Xeon(R) Gold 6139 CPU @ 2.30GHz
NIC hardware: Intel Corporation Ethernet Controller E810-C for SFP [8086:1593]
(rev 01)
NIC driver: ice-1.14.11
NIC firmware: 4.50 0x8001d8b6 1.3597.0

[Test Setup]
1.compile dpdk
rm -rf x86_64-native-linuxapp-gcc
CC=gcc meson -Denable_kmods=True -Dlibdir=lib --default-library=static
-Db_sanitize=address -Dexamples=l3fwd x86_64-native-linuxapp-gcc
ninja -C x86_64-native-linuxapp-gcc  
2. bind pf to vfio-pci 
./usertools/dpdk-devbind.py -b vfio-pci 18:00.0 18:00.1

3.prepare acl rules 
echo '' > /root/rule_ipv4.db
echo 'R0.0.0.0/0 0.0.0.0/0 0 : 65535 0 : 65535 0x00/0x00 1' >>
/root/rule_ipv4.db
echo '' > /root/rule_ipv6.db
echo 'R0:0:0:0:0:0:0:0/0 0:0:0:0:0:0:0:0/0 0 : 65535 0 : 65535 0x00/0x00 1' >>
/root/rule_ipv6.db
echo '' > /root/rule_ipv4.db
echo @200.10.0.1/32 0.0.0.0/0 0 : 65535 0 : 65535 0x00/0x00  >>
/root/rule_ipv4.db
echo R0.0.0.0/0 0.0.0.0/0 0 : 65535 0 : 65535 0x00/0x00 1 >> /root/rule_ipv4.db

4.launch dpdk-l3fwd 
x86_64-native-linuxapp-gcc/examples/dpdk-l3fwd -l 1-4 -n 4 -a 0000:18:00.0 -a
0000:18:00.1 --force-max-simd-bitwidth=0 -- -p 0x3 --lookup acl
--config="(0,0,2),(1,0,3)" --rule_ipv4="/root/rule_ipv4.db"
--rule_ipv6="/root/rule_ipv6.db" --parse-ptype  
5.Send packets
sendp([Ether(dst="{rx_port_mac}")/IP(src="200.10.0.1",dst="100.10.0.1")/UDP(sport=11,dport=101)],iface="ens7",count=1,inter=0,verbose=False)

[Show the output from the previous commands.]

Segmentation fault

[Expected Result]

The application can receive and send packages normally.

[Regression]
Is this issue a regression: (Y/N)Y

commit aa7c6077c19bd39b48ac17cd844b91f0dd03319f
Author: Konstantin Ananyev <konstantin.ananyev@huawei.com>
Date:   Thu May 2 16:28:16 2024 +0100

    examples/l3fwd: avoid packets reorder in ACL mode

    In ACL mode l3fwd first do classify() and send() for ipv4 packets,
    then the same procedure for ipv6.
    That might cause packets reordering within one ingress queue.
    Probably not a big deal, as order within each flow are still preserved,
    but better to be avoided anyway.
    Specially considering that in other modes (lpm, fib, em)
    l3fwd does preserve the order no matter of packet's IP version.
    This patch aims to make ACL mode to behave in the same manner
    and preserve packet's order within the same ingress queue.
    Also these changes allow ACL mode to use common
    (and hopefully better optimized) send_packets_multi() function at Tx path.

    Signed-off-by: Konstantin Ananyev <konstantin.ananyev@huawei.com>

 examples/l3fwd/l3fwd_acl.c        | 125 ++++++++++++++++++++++++--------------
 examples/l3fwd/l3fwd_acl_scalar.h |  71 ++++++++++++----------
 2 files changed, 118 insertions, 78 deletions
          


You are receiving this mail because: