From: Jiri Pirko <jiri@resnulli.us>
To: Jamal Hadi Salim <jhs@mojatatu.com>
Cc: Paul Blakey <paulb@mellanox.com>,
"David S. Miller" <davem@davemloft.net>,
netdev@vger.kernel.org, Jiri Pirko <jiri@mellanox.com>,
Hadar Hen Zion <hadarh@mellanox.com>,
Or Gerlitz <ogerlitz@mellanox.com>, Roi Dayan <roid@mellanox.com>,
Roman Mashak <mrv@mojatatu.com>
Subject: Re: [PATCH net-next] net/sched: cls_flower: Add user specified data
Date: Sun, 8 Jan 2017 18:12:51 +0100 [thread overview]
Message-ID: <20170108171251.GF1971@nanopsycho> (raw)
In-Reply-To: <14675f63-4212-2f72-da4c-cd24b9d10881@mojatatu.com>
Mon, Jan 02, 2017 at 03:59:49PM CET, jhs@mojatatu.com wrote:
>
>We have been using a cookie as well for actions (which we have been
>using but have been too lazy to submit so far). I am going to port
>it over to the newer kernels and post it.
Hard to deal with something we can't look at :)
>In our case that is intended to be opaque to the kernel i.e kernel
>never inteprets it; in that case it is similar to the kernel
>FIB protocol field.
In case of this patch, kernel also never interprets it. What makes you
think otherwise. Bot kernel, it is always a binary blob.
>
>In your case - could this cookie have been a class/flowid
>(a 32 bit)?
>And would it not make more sense for it the cookie to be
>generic to all classifiers? i.e why is it specific to flower?
Correct, makes sense to have it generic for all cls and perhaps also
acts.
>
>cheers,
>jamal
>
>On 17-01-02 08:13 AM, Paul Blakey wrote:
>> This is to support saving extra data that might be helpful on retrieval.
>> First use case is upcoming openvswitch flow offloads, extra data will
>> include UFID and port mappings for each added flow.
>>
>> Signed-off-by: Paul Blakey <paulb@mellanox.com>
>> Reviewed-by: Roi Dayan <roid@mellanox.com>
>> Acked-by: Jiri Pirko <jiri@mellanox.com>
>> ---
>> include/uapi/linux/pkt_cls.h | 3 +++
>> net/sched/cls_flower.c | 22 +++++++++++++++++++++-
>> 2 files changed, 24 insertions(+), 1 deletion(-)
>>
>> diff --git a/include/uapi/linux/pkt_cls.h b/include/uapi/linux/pkt_cls.h
>> index cb4bcdc..ca9bbe3 100644
>> --- a/include/uapi/linux/pkt_cls.h
>> +++ b/include/uapi/linux/pkt_cls.h
>> @@ -471,10 +471,13 @@ enum {
>> TCA_FLOWER_KEY_ICMPV6_TYPE, /* u8 */
>> TCA_FLOWER_KEY_ICMPV6_TYPE_MASK,/* u8 */
>>
>> + TCA_FLOWER_COOKIE, /* binary */
>> +
>> __TCA_FLOWER_MAX,
>> };
>>
>> #define TCA_FLOWER_MAX (__TCA_FLOWER_MAX - 1)
>> +#define FLOWER_MAX_COOKIE_SIZE 128
>>
>> enum {
>> TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT = (1 << 0),
>> diff --git a/net/sched/cls_flower.c b/net/sched/cls_flower.c
>> index 333f8e2..e2f5b25 100644
>> --- a/net/sched/cls_flower.c
>> +++ b/net/sched/cls_flower.c
>> @@ -85,6 +85,8 @@ struct cls_fl_filter {
>> struct rcu_head rcu;
>> struct tc_to_netdev tc;
>> struct net_device *hw_dev;
>> + size_t cookie_len;
>> + long cookie[0];
>> };
>>
>> static unsigned short int fl_mask_range(const struct fl_flow_mask *mask)
>> @@ -794,6 +796,9 @@ static int fl_change(struct net *net, struct sk_buff *in_skb,
>> struct cls_fl_filter *fnew;
>> struct nlattr *tb[TCA_FLOWER_MAX + 1];
>> struct fl_flow_mask mask = {};
>> + const struct nlattr *attr;
>> + size_t cookie_len = 0;
>> + void *cookie;
>> int err;
>>
>> if (!tca[TCA_OPTIONS])
>> @@ -806,10 +811,22 @@ static int fl_change(struct net *net, struct sk_buff *in_skb,
>> if (fold && handle && fold->handle != handle)
>> return -EINVAL;
>>
>> - fnew = kzalloc(sizeof(*fnew), GFP_KERNEL);
>> + if (tb[TCA_FLOWER_COOKIE]) {
>> + attr = tb[TCA_FLOWER_COOKIE];
>> + cookie_len = nla_len(attr);
>> + cookie = nla_data(attr);
>> + if (cookie_len > FLOWER_MAX_COOKIE_SIZE)
>> + return -EINVAL;
>> + }
>> +
>> + fnew = kzalloc(sizeof(*fnew) + cookie_len, GFP_KERNEL);
>> if (!fnew)
>> return -ENOBUFS;
>>
>> + fnew->cookie_len = cookie_len;
>> + if (cookie_len)
>> + memcpy(fnew->cookie, cookie, cookie_len);
>> +
>> err = tcf_exts_init(&fnew->exts, TCA_FLOWER_ACT, 0);
>> if (err < 0)
>> goto errout;
>> @@ -1151,6 +1168,9 @@ static int fl_dump(struct net *net, struct tcf_proto *tp, unsigned long fh,
>>
>> nla_put_u32(skb, TCA_FLOWER_FLAGS, f->flags);
>>
>> + if (f->cookie_len)
>> + nla_put(skb, TCA_FLOWER_COOKIE, f->cookie_len, f->cookie);
>> +
>> if (tcf_exts_dump(skb, &f->exts))
>> goto nla_put_failure;
>>
>>
>
next prev parent reply other threads:[~2017-01-08 17:12 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-02 13:13 [PATCH net-next] net/sched: cls_flower: Add user specified data Paul Blakey
2017-01-02 14:59 ` Jamal Hadi Salim
2017-01-02 18:23 ` John Fastabend
2017-01-02 22:21 ` Jamal Hadi Salim
2017-01-02 22:58 ` John Fastabend
2017-01-03 1:22 ` Jamal Hadi Salim
2017-01-03 4:33 ` John Fastabend
2017-01-03 11:44 ` Jamal Hadi Salim
2017-01-03 12:22 ` Paul Blakey
2017-01-04 10:14 ` Simon Horman
2017-01-04 11:45 ` Paul Blakey
2017-01-05 8:03 ` Simon Horman
2017-01-14 13:06 ` Jamal Hadi Salim
2017-01-08 17:19 ` Jiri Pirko
2017-01-09 18:23 ` John Fastabend
2017-01-14 12:56 ` Jamal Hadi Salim
2017-01-14 14:48 ` Jiri Pirko
2017-01-14 15:03 ` Jamal Hadi Salim
2017-01-14 15:29 ` Jiri Pirko
2017-01-14 17:46 ` Jamal Hadi Salim
2017-01-08 17:15 ` Jiri Pirko
2017-01-08 17:12 ` Jiri Pirko [this message]
2017-01-15 17:36 ` Paul Blakey
2017-01-15 19:08 ` John Fastabend
2017-01-16 7:54 ` Paul Blakey
2017-01-16 9:51 ` Jiri Pirko
2017-01-17 11:23 ` Jamal Hadi Salim
2017-01-17 11:53 ` Paul Blakey
2017-01-18 11:06 ` Jamal Hadi Salim
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=20170108171251.GF1971@nanopsycho \
--to=jiri@resnulli.us \
--cc=davem@davemloft.net \
--cc=hadarh@mellanox.com \
--cc=jhs@mojatatu.com \
--cc=jiri@mellanox.com \
--cc=mrv@mojatatu.com \
--cc=netdev@vger.kernel.org \
--cc=ogerlitz@mellanox.com \
--cc=paulb@mellanox.com \
--cc=roid@mellanox.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 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.