Sat, Oct 28, 2017 at 09:53:21AM CEST, kubak...@wp.pl wrote: >On Sat, 28 Oct 2017 09:20:31 +0200, Jiri Pirko wrote: >> Sat, Oct 28, 2017 at 02:52:00AM CEST, kubak...@wp.pl wrote: >> >On Fri, 27 Oct 2017 09:27:30 +0200, Jiri Pirko wrote: >> >> Yes, it is the same. >> > >> >FWIW I also see what Amritha and Alex are describing here, for cls_bpf >> >there are no DESTROYs coming on rmmod or qdisc del. There is a DESTROY >> >if I manually remove the filter (or if an ADD with skip_sw fails). >> >> Is this different to the original behaviour? Just for cls_bpf? > >For cls_bpf the callbacks used to be 100% symmetrical, i.e. destroy >would always be guaranteed if add succeeded (regardless of state of >skip_* flags).
Hmm. It still should be symmetrical. Looking at following path: cls_bpf_destroy-> __cls_bpf_delete-> cls_bpf_stop_offload-> cls_bpf_offload_cmd(tp, prog, TC_CLSBPF_DESTROY) I don't see how any tp could be missed. Could you please check this callpath is utilized during your action (rmmod or qdisc del)? > >I haven't checked cls_flower on the nfp because it implodes on add >already... I hear the fix is simple so I can check, if that helps. >Although from quick code inspection it seems fl_hw_destroy_filter() >was always invoked before fl_destroy_filter(), so it looks like since >flower doesn't track which filters were offloaded successfully it may >send destroy events for filter drivers don't hold, but destroy should >always be guaranteed there too. You are right, that is following path: fl_delete-> fl_hw_destroy_filter I will check it.