diff options
author | Jiri Pirko <jiri@mellanox.com> | 2019-06-19 09:41:04 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-06-19 10:09:22 -0400 |
commit | 9558a83aee62be7c3ce9eddd6484a5da16aad4cf (patch) | |
tree | 65c61d5c49d7b75ac4057d24ad0b70b9e464ac07 | |
parent | 8212ed777f40c7f801454c92ca8566db51aa73e8 (diff) | |
download | linux-9558a83aee62be7c3ce9eddd6484a5da16aad4cf.tar.gz linux-9558a83aee62be7c3ce9eddd6484a5da16aad4cf.tar.bz2 linux-9558a83aee62be7c3ce9eddd6484a5da16aad4cf.zip |
net: flow_offload: implement support for meta key
Implement support for previously added flow dissector meta key.
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | include/net/flow_offload.h | 6 | ||||
-rw-r--r-- | net/core/flow_offload.c | 7 |
2 files changed, 13 insertions, 0 deletions
diff --git a/include/net/flow_offload.h b/include/net/flow_offload.h index 36fdb85c974d..36127c1858a4 100644 --- a/include/net/flow_offload.h +++ b/include/net/flow_offload.h @@ -10,6 +10,10 @@ struct flow_match { void *key; }; +struct flow_match_meta { + struct flow_dissector_key_meta *key, *mask; +}; + struct flow_match_basic { struct flow_dissector_key_basic *key, *mask; }; @@ -64,6 +68,8 @@ struct flow_match_enc_opts { struct flow_rule; +void flow_rule_match_meta(const struct flow_rule *rule, + struct flow_match_meta *out); void flow_rule_match_basic(const struct flow_rule *rule, struct flow_match_basic *out); void flow_rule_match_control(const struct flow_rule *rule, diff --git a/net/core/flow_offload.c b/net/core/flow_offload.c index 3d93e51b83e0..f52fe0bc4017 100644 --- a/net/core/flow_offload.c +++ b/net/core/flow_offload.c @@ -25,6 +25,13 @@ EXPORT_SYMBOL(flow_rule_alloc); (__out)->key = skb_flow_dissector_target(__d, __type, (__m)->key); \ (__out)->mask = skb_flow_dissector_target(__d, __type, (__m)->mask); \ +void flow_rule_match_meta(const struct flow_rule *rule, + struct flow_match_meta *out) +{ + FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_META, out); +} +EXPORT_SYMBOL(flow_rule_match_meta); + void flow_rule_match_basic(const struct flow_rule *rule, struct flow_match_basic *out) { |