From: Vinicius Costa Gomes <vinicius.gomes@intel.com> To: intel-wired-lan@lists.osuosl.org Cc: Vinicius Costa Gomes <vinicius.gomes@intel.com>, jeffrey.t.kirsher@intel.com, netdev@vger.kernel.org, jesus.sanchez-palencia@intel.com Subject: [next-queue PATCH 6/8] igb: Add the skeletons for tc-flower offloading Date: Fri, 23 Feb 2018 17:20:34 -0800 [thread overview] Message-ID: <20180224012036.5834-7-vinicius.gomes@intel.com> (raw) In-Reply-To: <20180224012036.5834-1-vinicius.gomes@intel.com> This adds basic functions needed to implement offloading for filters created by tc-flower. Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com> --- drivers/net/ethernet/intel/igb/igb_main.c | 66 +++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c index 5dfbdf05f765..5344261e6f45 100644 --- a/drivers/net/ethernet/intel/igb/igb_main.c +++ b/drivers/net/ethernet/intel/igb/igb_main.c @@ -35,6 +35,7 @@ #include <net/checksum.h> #include <net/ip6_checksum.h> #include <net/pkt_sched.h> +#include <net/pkt_cls.h> #include <linux/net_tstamp.h> #include <linux/mii.h> #include <linux/ethtool.h> @@ -2496,6 +2497,69 @@ static int igb_offload_cbs(struct igb_adapter *adapter, return 0; } +static int igb_configure_clsflower(struct igb_adapter *adapter, + struct tc_cls_flower_offload *cls_flower) +{ + return -EOPNOTSUPP; +} + +static int igb_delete_clsflower(struct igb_adapter *adapter, + struct tc_cls_flower_offload *cls_flower) +{ + return -EOPNOTSUPP; +} + +static int igb_setup_tc_cls_flower(struct igb_adapter *adapter, + struct tc_cls_flower_offload *cls_flower) +{ + switch (cls_flower->command) { + case TC_CLSFLOWER_REPLACE: + return igb_configure_clsflower(adapter, cls_flower); + case TC_CLSFLOWER_DESTROY: + return igb_delete_clsflower(adapter, cls_flower); + case TC_CLSFLOWER_STATS: + return -EOPNOTSUPP; + default: + return -EINVAL; + } +} + +static int igb_setup_tc_block_cb(enum tc_setup_type type, void *type_data, + void *cb_priv) +{ + struct igb_adapter *adapter = cb_priv; + + if (!tc_cls_can_offload_and_chain0(adapter->netdev, type_data)) + return -EOPNOTSUPP; + + switch (type) { + case TC_SETUP_CLSFLOWER: + return igb_setup_tc_cls_flower(adapter, type_data); + + default: + return -EOPNOTSUPP; + } +} + +static int igb_setup_tc_block(struct igb_adapter *adapter, + struct tc_block_offload *f) +{ + if (f->binder_type != TCF_BLOCK_BINDER_TYPE_CLSACT_INGRESS) + return -EOPNOTSUPP; + + switch (f->command) { + case TC_BLOCK_BIND: + return tcf_block_cb_register(f->block, igb_setup_tc_block_cb, + adapter, adapter); + case TC_BLOCK_UNBIND: + tcf_block_cb_unregister(f->block, igb_setup_tc_block_cb, + adapter); + return 0; + default: + return -EOPNOTSUPP; + } +} + static int igb_setup_tc(struct net_device *dev, enum tc_setup_type type, void *type_data) { @@ -2504,6 +2568,8 @@ static int igb_setup_tc(struct net_device *dev, enum tc_setup_type type, switch (type) { case TC_SETUP_QDISC_CBS: return igb_offload_cbs(adapter, type_data); + case TC_SETUP_BLOCK: + return igb_setup_tc_block(adapter, type_data); default: return -EOPNOTSUPP; -- 2.16.2
WARNING: multiple messages have this Message-ID (diff)
From: Vinicius Costa Gomes <vinicius.gomes@intel.com> To: intel-wired-lan@osuosl.org Subject: [Intel-wired-lan] [next-queue PATCH 6/8] igb: Add the skeletons for tc-flower offloading Date: Fri, 23 Feb 2018 17:20:34 -0800 [thread overview] Message-ID: <20180224012036.5834-7-vinicius.gomes@intel.com> (raw) In-Reply-To: <20180224012036.5834-1-vinicius.gomes@intel.com> This adds basic functions needed to implement offloading for filters created by tc-flower. Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com> --- drivers/net/ethernet/intel/igb/igb_main.c | 66 +++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c index 5dfbdf05f765..5344261e6f45 100644 --- a/drivers/net/ethernet/intel/igb/igb_main.c +++ b/drivers/net/ethernet/intel/igb/igb_main.c @@ -35,6 +35,7 @@ #include <net/checksum.h> #include <net/ip6_checksum.h> #include <net/pkt_sched.h> +#include <net/pkt_cls.h> #include <linux/net_tstamp.h> #include <linux/mii.h> #include <linux/ethtool.h> @@ -2496,6 +2497,69 @@ static int igb_offload_cbs(struct igb_adapter *adapter, return 0; } +static int igb_configure_clsflower(struct igb_adapter *adapter, + struct tc_cls_flower_offload *cls_flower) +{ + return -EOPNOTSUPP; +} + +static int igb_delete_clsflower(struct igb_adapter *adapter, + struct tc_cls_flower_offload *cls_flower) +{ + return -EOPNOTSUPP; +} + +static int igb_setup_tc_cls_flower(struct igb_adapter *adapter, + struct tc_cls_flower_offload *cls_flower) +{ + switch (cls_flower->command) { + case TC_CLSFLOWER_REPLACE: + return igb_configure_clsflower(adapter, cls_flower); + case TC_CLSFLOWER_DESTROY: + return igb_delete_clsflower(adapter, cls_flower); + case TC_CLSFLOWER_STATS: + return -EOPNOTSUPP; + default: + return -EINVAL; + } +} + +static int igb_setup_tc_block_cb(enum tc_setup_type type, void *type_data, + void *cb_priv) +{ + struct igb_adapter *adapter = cb_priv; + + if (!tc_cls_can_offload_and_chain0(adapter->netdev, type_data)) + return -EOPNOTSUPP; + + switch (type) { + case TC_SETUP_CLSFLOWER: + return igb_setup_tc_cls_flower(adapter, type_data); + + default: + return -EOPNOTSUPP; + } +} + +static int igb_setup_tc_block(struct igb_adapter *adapter, + struct tc_block_offload *f) +{ + if (f->binder_type != TCF_BLOCK_BINDER_TYPE_CLSACT_INGRESS) + return -EOPNOTSUPP; + + switch (f->command) { + case TC_BLOCK_BIND: + return tcf_block_cb_register(f->block, igb_setup_tc_block_cb, + adapter, adapter); + case TC_BLOCK_UNBIND: + tcf_block_cb_unregister(f->block, igb_setup_tc_block_cb, + adapter); + return 0; + default: + return -EOPNOTSUPP; + } +} + static int igb_setup_tc(struct net_device *dev, enum tc_setup_type type, void *type_data) { @@ -2504,6 +2568,8 @@ static int igb_setup_tc(struct net_device *dev, enum tc_setup_type type, switch (type) { case TC_SETUP_QDISC_CBS: return igb_offload_cbs(adapter, type_data); + case TC_SETUP_BLOCK: + return igb_setup_tc_block(adapter, type_data); default: return -EOPNOTSUPP; -- 2.16.2
next prev parent reply other threads:[~2018-02-24 1:21 UTC|newest] Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-02-24 1:20 [next-queue PATCH 0/8] igb: offloading of receive filters Vinicius Costa Gomes 2018-02-24 1:20 ` [Intel-wired-lan] " Vinicius Costa Gomes 2018-02-24 1:20 ` [next-queue PATCH 1/8] igb: Fix not adding filter elements to the list Vinicius Costa Gomes 2018-02-24 1:20 ` [Intel-wired-lan] " Vinicius Costa Gomes 2018-02-24 1:20 ` [next-queue PATCH 2/8] igb: Fix queue selection on MAC filters on i210 and i211 Vinicius Costa Gomes 2018-02-24 1:20 ` [Intel-wired-lan] " Vinicius Costa Gomes 2018-02-24 1:20 ` [next-queue PATCH 3/8] igb: Enable the hardware traffic class feature bit for igb models Vinicius Costa Gomes 2018-02-24 1:20 ` [Intel-wired-lan] " Vinicius Costa Gomes 2018-02-25 22:37 ` Alexander Duyck 2018-02-25 22:37 ` Alexander Duyck 2018-02-26 18:49 ` Vinicius Costa Gomes 2018-02-26 18:49 ` Vinicius Costa Gomes 2018-02-24 1:20 ` [next-queue PATCH 4/8] igb: Add support for MAC address filters specifying source addresses Vinicius Costa Gomes 2018-02-24 1:20 ` [Intel-wired-lan] " Vinicius Costa Gomes 2018-02-25 22:42 ` Alexander Duyck 2018-02-25 22:42 ` Alexander Duyck 2018-02-26 19:24 ` Vinicius Costa Gomes 2018-02-26 19:24 ` Vinicius Costa Gomes 2018-02-24 1:20 ` [next-queue PATCH 5/8] igb: Add support for ethtool MAC address filters Vinicius Costa Gomes 2018-02-24 1:20 ` [Intel-wired-lan] " Vinicius Costa Gomes 2018-02-24 4:38 ` Florian Fainelli 2018-02-24 4:38 ` [Intel-wired-lan] " Florian Fainelli 2018-02-26 19:30 ` Vinicius Costa Gomes 2018-02-26 19:30 ` [Intel-wired-lan] " Vinicius Costa Gomes 2018-02-24 1:20 ` Vinicius Costa Gomes [this message] 2018-02-24 1:20 ` [Intel-wired-lan] [next-queue PATCH 6/8] igb: Add the skeletons for tc-flower offloading Vinicius Costa Gomes 2018-02-24 1:20 ` [next-queue PATCH 7/8] igb: Add support for adding offloaded clsflower filters Vinicius Costa Gomes 2018-02-24 1:20 ` [Intel-wired-lan] " Vinicius Costa Gomes 2018-02-24 4:45 ` Florian Fainelli 2018-02-24 4:45 ` [Intel-wired-lan] " Florian Fainelli 2018-02-27 0:40 ` Vinicius Costa Gomes 2018-02-27 0:40 ` [Intel-wired-lan] " Vinicius Costa Gomes 2018-02-27 0:51 ` Florian Fainelli 2018-02-27 0:51 ` [Intel-wired-lan] " Florian Fainelli 2018-02-27 1:51 ` Vinicius Costa Gomes 2018-02-27 1:51 ` [Intel-wired-lan] " Vinicius Costa Gomes 2018-02-26 0:12 ` kbuild test robot 2018-02-26 0:12 ` kbuild test robot 2018-02-24 1:20 ` [next-queue PATCH 8/8] igb: Add support for removing offloaded tc-flower filters Vinicius Costa Gomes 2018-02-24 1:20 ` [Intel-wired-lan] " Vinicius Costa Gomes 2018-02-24 4:36 ` Florian Fainelli 2018-02-24 4:36 ` [Intel-wired-lan] " Florian Fainelli 2018-02-26 20:59 ` Vinicius Costa Gomes 2018-02-26 20:59 ` [Intel-wired-lan] " Vinicius Costa Gomes
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20180224012036.5834-7-vinicius.gomes@intel.com \ --to=vinicius.gomes@intel.com \ --cc=intel-wired-lan@lists.osuosl.org \ --cc=jeffrey.t.kirsher@intel.com \ --cc=jesus.sanchez-palencia@intel.com \ --cc=netdev@vger.kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.