From: Jiri Pirko <jiri@resnulli.us>
To: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
Cc: netdev@vger.kernel.org, davem@davemloft.net,
hariprasad@chelsio.com, leedom@chelsio.com,
nirranjan@chelsio.com, indranil@chelsio.com
Subject: Re: [PATCH net-next 7/7] cxgb4: add support for drop and redirect actions
Date: Mon, 12 Sep 2016 10:52:53 +0200 [thread overview]
Message-ID: <20160912085253.GF2021@nanopsycho> (raw)
In-Reply-To: <13800cc26e45257999003861820b0bc65ab7a8d1.1473667613.git.rahul.lakkireddy@chelsio.com>
Mon, Sep 12, 2016 at 10:12:40AM CEST, rahul.lakkireddy@chelsio.com wrote:
>Add support for dropping matched packets in hardware. Also add support
>for re-directing matched packets to a specified port in hardware.
>
>Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
>Signed-off-by: Hariprasad Shenai <hariprasad@chelsio.com>
>---
> drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_u32.c | 63 +++++++++++++++++++++++
> 1 file changed, 63 insertions(+)
>
>diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_u32.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_u32.c
>index 31847e3..584ccb3 100644
>--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_u32.c
>+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_u32.c
>@@ -32,6 +32,9 @@
> * SOFTWARE.
> */
>
>+#include <net/tc_act/tc_gact.h>
>+#include <net/tc_act/tc_mirred.h>
>+
> #include "cxgb4.h"
> #include "cxgb4_tc_u32_parse.h"
> #include "cxgb4_tc_u32.h"
>@@ -83,6 +86,59 @@ static int fill_match_fields(struct adapter *adap,
> return 0;
> }
>
>+/* Fill ch_filter_specification with parsed action. */
>+static int fill_action_fields(struct adapter *adap,
>+ struct ch_filter_specification *fs,
>+ struct tc_cls_u32_offload *cls)
>+{
>+ const struct tc_action *a;
>+ struct tcf_exts *exts;
>+ LIST_HEAD(actions);
>+ unsigned int num_actions = 0;
>+ bool found = false;
>+
>+ exts = cls->knode.exts;
>+ if (tc_no_actions(exts))
>+ return -EINVAL;
>+
>+ tcf_exts_to_list(exts, &actions);
>+ list_for_each_entry(a, &actions, list) {
>+ /* Don't allow more than one action per rule. */
>+ if (num_actions)
>+ return -EINVAL;
Looking at this, unrelated to this patch, we really need some advanced
reporting to user about what went wrong. Otherwise he's playing a
guessing game.
>+
>+ /* Drop in hardware. */
>+ if (is_tcf_gact_shot(a)) {
>+ fs->action = FILTER_DROP;
>+ found = true;
>+ }
>+
>+ /* Re-direct to specified port in hardware. */
>+ if (is_tcf_mirred_redirect(a)) {
else if ?
>+ struct net_device *n_dev;
>+ unsigned int i, index;
>+
>+ index = tcf_mirred_ifindex(a);
>+ for_each_port(adap, i) {
>+ n_dev = adap->port[i];
>+ if (index == n_dev->ifindex) {
>+ fs->action = FILTER_SWITCH;
>+ fs->eport = i;
>+ break;
>+ }
>+ }
>+ found = true;
>+ }
You need to report an error in case you don't support the action.
>+
>+ num_actions++;
>+ }
>+
>+ if (!found)
>+ return -EINVAL;
Oh, I guess this is to fail on unsupported action. Odd. Rather just
return directly the list_for_each_entry loop
>+
>+ return 0;
>+}
>+
> int cxgb4_config_knode(struct net_device *dev, __be16 protocol,
> struct tc_cls_u32_offload *cls)
> {
>@@ -236,6 +292,13 @@ int cxgb4_config_knode(struct net_device *dev, __be16 protocol,
> if (ret)
> goto out;
>
>+ /* Fill ch_filter_specification action fields to be shipped to
>+ * hardware.
>+ */
>+ ret = fill_action_fields(adapter, &fs, cls);
>+ if (ret)
>+ goto out;
>+
> /* The filter spec has been completely built from the info
> * provided from u32. We now set some default fields in the
> * spec for sanity.
>--
>2.5.3
>
next prev parent reply other threads:[~2016-09-12 8:52 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-12 8:12 [PATCH net-next 0/7] cxgb4: add support for offloading TC u32 filters Rahul Lakkireddy
2016-09-12 8:12 ` [PATCH net-next 1/7] cxgb4: move common filter code to separate file Rahul Lakkireddy
2016-09-12 8:12 ` [PATCH net-next 2/7] cxgb4: add common api support for configuring filters Rahul Lakkireddy
2016-09-12 8:57 ` Jiri Pirko
2016-09-12 8:12 ` [PATCH net-next 3/7] cxgb4: add debugfs support to dump filter debug logs Rahul Lakkireddy
2016-09-12 8:36 ` Jiri Pirko
2016-09-12 8:12 ` [PATCH net-next 4/7] cxgb4: add parser to translate u32 filters to internal spec Rahul Lakkireddy
2016-09-12 8:12 ` [PATCH net-next 5/7] cxgb4: add support for setting u32 filters Rahul Lakkireddy
2016-09-12 8:40 ` Jiri Pirko
2016-09-12 8:12 ` [PATCH net-next 6/7] cxgb4: add support for deleting " Rahul Lakkireddy
2016-09-12 8:47 ` Jiri Pirko
2016-09-12 8:12 ` [PATCH net-next 7/7] cxgb4: add support for drop and redirect actions Rahul Lakkireddy
2016-09-12 8:52 ` Jiri Pirko [this message]
2016-09-12 15:17 ` John Fastabend
2016-09-13 9:07 ` [PATCH net-next 0/7] cxgb4: add support for offloading TC u32 filters Rahul Lakkireddy
2016-09-13 16:12 ` David Miller
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=20160912085253.GF2021@nanopsycho \
--to=jiri@resnulli.us \
--cc=davem@davemloft.net \
--cc=hariprasad@chelsio.com \
--cc=indranil@chelsio.com \
--cc=leedom@chelsio.com \
--cc=netdev@vger.kernel.org \
--cc=nirranjan@chelsio.com \
--cc=rahul.lakkireddy@chelsio.com \
/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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).