Hi all, I'm using ovs-dpdk with this patch: ``` commit 4c226944f7c55c9d6e7c85f7c33c5ce11c35ce54 Author: Jianbo Liu <jian...@nvidia.com> Date: Fri Jul 8 03:06:26 2022 +0000
netdev-offload-tc: Implement meter offload API for tc ``` This patch is for offload flow meter by tc. Now I found a bug: ovs crash when add meter openflow. 1. How to produce: (NOTICE: This bug is not always reproducible.) ``` Add these commands: ovs-ofctl -O OpenFlow13 add-meter br-int meter=1,kbps,band=type=drop,rate=1000 ovs-ofctl -O OpenFlow13 add-flow br-int in_port=\"pf0vf0\",ip,nw_src= 16.0.0.0/24,nw_dst=48.0.0.0/24,nw_proto=17,actions=\"meter:1,output:p0\" ovs-ofctl -O OpenFlow13 add-flow br-int in_port=\"pf0vf0\",udp6,ipv6_src=2001:4860:0:2001::/64,ipv6_dst=2001:0:4137:9350:8000:f12a:b9c8:2815,actions=\"meter:1,output:p0\" Then ovs crash, this is core file call trace: (gdb) bt #0 id_pool_alloc_id (pool=0x0, id_=id_@entry=0x7fff180c841c) at lib/id-pool.c:112 #1 0x000000000055f0a0 in meter_alloc_police_index (police_index=0x7fff180c841c) at lib/netdev-offload-tc.c:2530 #2 meter_tc_set_policer (meter_id=..., config=0x7fff180c8538) at lib/netdev-offload-tc.c:2567 #3 0x00000000004af207 in meter_offload_set (meter_id=meter_id@entry=..., config=config@entry=0x7fff180c8538) at lib/netdev-offload.c:207 #4 0x0000000000474c2b in dpif_netdev_meter_set (dpif=<optimized out>, meter_id=..., config=0x7fff180c8538) at lib/dpif-netdev.c:9137 #5 0x000000000048e3fd in dpif_meter_set (dpif=0x28cfd10, meter_id=..., config=<optimized out>) at lib/dpif.c:1973 #6 0x000000000042daf8 in meter_set (ofproto_=0x28cc670, meter_id=0x7fff180c8590, config=<optimized out>) at ofproto/ofproto-dpif.c:6751 #7 0x0000000000423e91 in handle_add_meter (mm=0x7fff180c8530, ofproto=0x28cc670) at ofproto/ofproto.c:6905 #8 handle_meter_mod (ofconn=0x29073d0, oh=0x291bd40) at ofproto/ofproto.c:7013 #9 0x0000000000426d21 in handle_single_part_openflow (type=OFPTYPE_METER_MOD, oh=0x291bd40, ofconn=0x29073d0) at ofproto/ofproto.c:8668 #10 handle_openflow (ofconn=0x29073d0, msgs=0x7fff180c88c0) at ofproto/ofproto.c:8843 #11 0x000000000045b3b4 in ofconn_run (handle_openflow=0x4267b0 <handle_openflow>, ofconn=0x29073d0) at ofproto/connmgr.c:1329 #12 connmgr_run (mgr=0x272a200, handle_openflow=handle_openflow@entry=0x4267b0 <handle_openflow>) at ofproto/connmgr.c:356 #13 0x00000000004209be in ofproto_run (p=0x28cc670) at ofproto/ofproto.c:1964 #14 0x000000000040da44 in bridge_run__ () at vswitchd/bridge.c:3251 #15 0x00000000004138ec in bridge_run () at vswitchd/bridge.c:3310 #16 0x000000000040955d in main (argc=<optimized out>, argv=<optimized out>) at vswitchd/ovs-vswitchd.c:129 ``` 2. Check code: ``` Notice #0 id_pool_alloc_id (pool=0x0, id_=id_@entry=0x7fff180c841c) at lib/id-pool.c:112 the @pool param is NULL. This is happened ONLY when @netdev_tc_init_flow_api is NOT called. But in code, ONLY after @netdev_tc_init_flow_api is called, the @handle_meter_mod could works on netdev with system type. ``` 3. My question: - How this BUG happen? - Is there patch to solve this BUG? ---- Simon Jones _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev