On 29/05/2023 14:48, Ido Schimmel wrote:
> Add the 'TCA_FLOWER_L2_MISS' netlink attribute that allows user space to
> match on packets that encountered a layer 2 miss. The miss indication is
> set as metadata in the tc skb extension by the bridge driver upon FDB or
> MDB lookup miss and dissected by the flow dissector to the
> 'FLOW_DISSECTOR_KEY_META' key.
>
> The use of this skb extension is guarded by the 'tc_skb_ext_tc' static
> key. As such, enable / disable this key when filters that match on layer
> 2 miss are added / deleted.
>
> Tested:
>
> # cat tc_skb_ext_tc.py
> #!/usr/bin/env -S drgn -s vmlinux
>
> refcount = prog["tc_skb_ext_tc"].key.enabled.counter.value_()
> print(f"tc_skb_ext_tc reference count is {refcount}")
>
> # ./tc_skb_ext_tc.py
> tc_skb_ext_tc reference count is 0
>
> # tc filter add dev swp1 egress proto all handle 101 pref 1 flower src_mac
> 00:11:22:33:44:55 action drop
> # tc filter add dev swp1 egress proto all handle 102 pref 2 flower src_mac
> 00:11:22:33:44:55 l2_miss true action drop
> # tc filter add dev swp1 egress proto all handle 103 pref 3 flower src_mac
> 00:11:22:33:44:55 l2_miss false action drop
>
> # ./tc_skb_ext_tc.py
> tc_skb_ext_tc reference count is 2
>
> # tc filter replace dev swp1 egress proto all handle 102 pref 2 flower
> src_mac 00:01:02:03:04:05 l2_miss false action drop
>
> # ./tc_skb_ext_tc.py
> tc_skb_ext_tc reference count is 2
>
> # tc filter del dev swp1 egress proto all handle 103 pref 3 flower
> # tc filter del dev swp1 egress proto all handle 102 pref 2 flower
> # tc filter del dev swp1 egress proto all handle 101 pref 1 flower
>
> # ./tc_skb_ext_tc.py
> tc_skb_ext_tc reference count is 0
>
> Signed-off-by: Ido Schimmel <[email protected]>
> ---
>
> Notes:
> v2:
> * Split flow_dissector changes to a previous patch.
> * Use tc skb extension instead of 'skb->l2_miss'.
>
> include/uapi/linux/pkt_cls.h | 2 ++
> net/sched/cls_flower.c | 30 ++++++++++++++++++++++++++++--
> 2 files changed, 30 insertions(+), 2 deletions(-)
Reviewed-by: Nikolay Aleksandrov <[email protected]>