lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID:
 <MN0PR18MB5847B49581DEBD1B6CDE17B3D31AA@MN0PR18MB5847.namprd18.prod.outlook.com>
Date: Tue, 30 Sep 2025 09:47:32 +0000
From: Ratheesh Kannoth <rkannoth@...vell.com>
To: Netdev <netdev@...r.kernel.org>, Jamal Hadi Salim <jhs@...atatu.com>
CC: Eelco Chaudron <echaudro@...hat.com>
Subject: OVS L3 offload not working

Hi,

We are trying ovs offload  on 6.6.46 for marvell octeontx2 hw.   

L2 acceleration works fine; but L3 acceleration does not. (Please note that slow path works fine, only issue with acceleration).   Any clue on what could be wrong ?

I am still debugging the issue.  I added below prints (please find below Kernel patch) in fl_change() function; and could see proper values for L2 acceleration case . But all 0's for L3 forwarding case.
I also added debug prints in OVS userspace daemon as well (netdev_tc_flow_put() function) to double confirm that in case of L3 proper values are Pushed.

I chose  fl_change() function to add debug prints as it was  kind of a middle function  between ovs application's   AND  ndo->setup_tc() while flow is pushed for offload.

OVS userspace prints are appearing  in both l2 and l3 case.  
But kernel prints are correct only for L2 case.  


------------------ Kernel_debug.patch ------------------------------------
diff --git a/net/sched/cls_flower.c b/net/sched/cls_flower.c
index 6ee7064c82fc..ac9bbd4f4da4 100644
--- a/net/sched/cls_flower.c
+++ b/net/sched/cls_flower.c
@@ -2365,6 +2365,8 @@ static int fl_change(struct net *net, struct sk_buff *in_skb,
                goto errout_mask;

        if (!tc_skip_hw(fnew->flags)) {
+               pr_err("ETH src=%pM dst=%pM\n", f->mkey.eth.src, f->mkey.eth.dst);
+               pr_err("IP src=%pI4 dst=%pI4\n", &f->mkey.ipv4.src, &f->mkey.ipv4.dst);
                err = fl_hw_replace_filter(tp, fnew, rtnl_held, extack);
                if (err)
                        goto errout_ht;


Bridge L2 forwarding configuration (Working case)
-----------------------------------------------------------------

ovs-vsctl add-br br0
ovs-vsctl add-port br0 eth0
ovs-vsctl add-port br0 sdp1-0
ovs-ofctl dump-flows br0
ovs-ofctl del-flows br0
ovs-ofctl add-flow br0 tcp,nw_src=192.168.9.100,nw_dst=192.168.9.200,in_port=1,actions=output:2
ovs-ofctl add-flow br0 tcp,nw_src=192.168.9.200,nw_dst=192.168.9.100,in_port=2,actions=output:1
ovs-ofctl add-flow br0 udp,nw_src=192.168.9.100,nw_dst=192.168.9.200,in_port=1,actions=output:2
ovs-ofctl add-flow br0 udp,nw_src=192.168.9.200,nw_dst=192.168.9.100,in_port=2,actions=output:1
ovs-ofctl add-flow br0 icmp,nw_src=192.168.9.100,nw_dst=192.168.9.200,in_port=1,actions=output:2
ovs-ofctl add-flow br0 icmp,nw_src=192.168.9.200,nw_dst=192.168.9.100,in_port=2,actions=output:1
ovs-ofctl add-flow br0 arp,in_port=2,actions=output:1
ovs-ofctl add-flow br0 arp,in_port=1,actions=output:2
ovs-vsctl set Open_vSwitch . other_config:tc-policy=skip_sw
ovs-vsctl set Open_vSwitch . other_config:hw-offload=true


L3 forwarding case. (Non working case)
----------------------------------------

ovs-vsctl add-br br0
ovs-vsctl add-port br0 eth0
ovs-vsctl add-port br0 sdp1-0
ovs-ofctl dump-flows br0
ovs-ofctl del-flows br0
ovs-ofctl add-flow br0 tcp,nw_src=192.168.9.100,nw_dst=192.168.11.200,in_port=1,actions=mod_dl_src:5a:0e:52:82:21:ea,mod_dl_dst:00:00:00:01:01:00,output:2
ovs-ofctl add-flow br0 tcp,nw_src=192.168.11.200,nw_dst=192.168.9.100,in_port=2,actions=mod_dl_src:3a:5a:d7:27:26:6b,mod_dl_dst:b8:3f:d2:2a:13:54,output:1
ovs-ofctl add-flow br0 icmp,nw_src=192.168.9.100,nw_dst=192.168.11.200,in_port=1,actions=mod_dl_src:5a:0e:52:82:21:ea,mod_dl_dst:00:00:00:01:01:00,output:2
ovs-ofctl add-flow br0 icmp,nw_src=192.168.11.200,nw_dst=192.168.9.100,in_port=2,actions=mod_dl_src:3a:5a:d7:27:26:6b,mod_dl_dst:b8:3f:d2:2a:13:54,output:1
ovs-ofctl add-flow br0 arp,in_port=2,actions=output:1
ovs-ofctl add-flow br0 arp,in_port=1,actions=output:2
ovs-vsctl set Open_vSwitch . other_config:tc-policy=skip_sw
ovs-vsctl set Open_vSwitch . other_config:hw-offload=true

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ