diff options
author | Felix Fietkau <nbd@nbd.name> | 2021-03-08 17:20:20 +0100 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2021-03-12 20:23:52 +0100 |
commit | 0d5bf53197481d291f9a541eefa03b11a34033f9 (patch) | |
tree | aa1f2523ef12bd5e13469b148e0bec7528126777 /target/linux/generic/pending-5.10/640-16-dsa-slave-add-support-for-TC_SETUP_FT.patch | |
parent | e90e75b12c818c49704755b9e530491aee2d554c (diff) | |
download | upstream-0d5bf53197481d291f9a541eefa03b11a34033f9.tar.gz upstream-0d5bf53197481d291f9a541eefa03b11a34033f9.tar.bz2 upstream-0d5bf53197481d291f9a541eefa03b11a34033f9.zip |
kernel: update 5.10 flow offload patches
Includes PPPoE support and VLAN related fixes
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'target/linux/generic/pending-5.10/640-16-dsa-slave-add-support-for-TC_SETUP_FT.patch')
-rw-r--r-- | target/linux/generic/pending-5.10/640-16-dsa-slave-add-support-for-TC_SETUP_FT.patch | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/target/linux/generic/pending-5.10/640-16-dsa-slave-add-support-for-TC_SETUP_FT.patch b/target/linux/generic/pending-5.10/640-16-dsa-slave-add-support-for-TC_SETUP_FT.patch new file mode 100644 index 0000000000..58a2064c03 --- /dev/null +++ b/target/linux/generic/pending-5.10/640-16-dsa-slave-add-support-for-TC_SETUP_FT.patch @@ -0,0 +1,53 @@ +From: Pablo Neira Ayuso <pablo@netfilter.org> +Date: Mon, 18 Jan 2021 22:39:17 +0100 +Subject: [PATCH] dsa: slave: add support for TC_SETUP_FT + +The dsa infrastructure provides a well-defined hierarchy of devices, +pass up the call to set up the flow block to the master device. From the +software dataplane, the netfilter infrastructure uses the dsa slave +devices to refer to the input and output device for the given skbuff. +Similarly, the flowtable definition in the ruleset refers to the dsa +slave port devices. + +This patch adds the glue code to call ndo_setup_tc with TC_SETUP_FT +with the master device via the dsa slave devices. + +Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> +--- + +--- a/net/dsa/slave.c ++++ b/net/dsa/slave.c +@@ -1202,14 +1202,32 @@ static int dsa_slave_setup_tc_block(stru + } + } + ++static int dsa_slave_setup_ft_block(struct dsa_switch *ds, int port, ++ void *type_data) ++{ ++ struct dsa_port *cpu_dp = dsa_to_port(ds, port)->cpu_dp; ++ struct net_device *master = cpu_dp->master; ++ ++ if (!master->netdev_ops->ndo_setup_tc) ++ return -EOPNOTSUPP; ++ ++ return master->netdev_ops->ndo_setup_tc(master, TC_SETUP_FT, type_data); ++} ++ + static int dsa_slave_setup_tc(struct net_device *dev, enum tc_setup_type type, + void *type_data) + { + struct dsa_port *dp = dsa_slave_to_port(dev); + struct dsa_switch *ds = dp->ds; + +- if (type == TC_SETUP_BLOCK) ++ switch (type) { ++ case TC_SETUP_BLOCK: + return dsa_slave_setup_tc_block(dev, type_data); ++ case TC_SETUP_FT: ++ return dsa_slave_setup_ft_block(ds, dp->index, type_data); ++ default: ++ break; ++ } + + if (!ds->ops->port_setup_tc) + return -EOPNOTSUPP; |