This patch set adds offload support for sFlow. Psample is a genetlink channel for packet sampling. TC action act_sample uses psample to send sampled packets to userspace.
When offloading sample action to TC, userspace creates a unique ID to map sFlow action and tunnel info and passes this ID to kernel instead of the sFlow info. psample will send this ID and sampled packet to userspace. Using the ID, userspace can recover the sFlow info and send sampled packet to the right sFlow monitoring host. GitHub Actions: v8: https://github.com/mishuang2017/ovs/actions/runs/420289939 v2-v1: - Fix robot errors. v3-v2: - Remove Gerrit Change-Id. - Add patch #9 to fix older kernels build issue. - Add travis test result. v4-v3: - Fix offload issue when sampling rate is 1. v5-v4: - Move polling thread from ofproto to netdev-offload-tc. v6-v5: - Rebase. - Add GitHub Actions test result. v7-v6: - Remove Gerrit Change-Id. - Fix "ERROR: Inappropriate spacing around cast" v8-v7 - Address Eelco Chaudron's comment for patch #11. Chris Mi (11): compat: Add psample and tc sample action defines for older kernels ovs-kmod-ctl: Load kernel module psample dpif: Introduce register sFlow upcall callback API ofproto: Add upcall callback to process sFlow packet netdev-offload: Introduce register sFlow upcall callback API netdev-offload-tc: Implement register sFlow upcall callback API dpif-netlink: Implement register sFlow upcall callback API netdev-offload-tc: Introduce group ID management API netdev-offload-tc: Create psample netlink socket netdev-offload-tc: Add psample receive handler netdev-offload-tc: Add offload support for sFlow include/linux/automake.mk | 4 +- include/linux/psample.h | 58 +++ include/linux/tc_act/tc_sample.h | 25 ++ lib/dpif-netdev.c | 1 + lib/dpif-netlink.c | 27 ++ lib/dpif-netlink.h | 4 + lib/dpif-provider.h | 10 + lib/dpif.c | 8 + lib/dpif.h | 26 ++ lib/netdev-offload-provider.h | 3 + lib/netdev-offload-tc.c | 600 ++++++++++++++++++++++++++++++- lib/netdev-offload.c | 30 ++ lib/netdev-offload.h | 4 + lib/tc.c | 61 +++- lib/tc.h | 10 +- ofproto/ofproto-dpif-upcall.c | 42 +++ utilities/ovs-kmod-ctl.in | 14 + 17 files changed, 915 insertions(+), 12 deletions(-) create mode 100644 include/linux/psample.h create mode 100644 include/linux/tc_act/tc_sample.h -- 2.26.2 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev