summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2019-05-16 12:02:42 -0700
committerDavid S. Miller <davem@davemloft.net>2019-05-16 12:02:42 -0700
commit7fecf0a1b72ce84d32e63d840c775fc440fc8261 (patch)
tree5da86db80506018174b86c66d354735874e9439a
parent2407a88a13a2d03ea9b8c86bbdedb3eff80c4b9e (diff)
parent12d5cbf89a6599f6bbd7b373dba0e74b5bd9c505 (diff)
downloadlinux-7fecf0a1b72ce84d32e63d840c775fc440fc8261.tar.gz
linux-7fecf0a1b72ce84d32e63d840c775fc440fc8261.tar.bz2
linux-7fecf0a1b72ce84d32e63d840c775fc440fc8261.zip
Merge branch 'flow_offload-fix-CVLAN-support'
Edward Cree says: ==================== flow_offload: fix CVLAN support When the flow_offload infrastructure was added, CVLAN matches weren't plumbed through, and flow_rule_match_vlan() was incorrectly called in the mlx5 driver when populating CVLAN match information. This series adds flow_rule_match_cvlan(), and uses it in the mlx5 code. Both patches should also go to 5.1 stable. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/en_tc.c2
-rw-r--r--include/net/flow_offload.h2
-rw-r--r--net/core/flow_offload.c7
3 files changed, 10 insertions, 1 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
index 122f457091a2..542354b5eb4d 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
@@ -1595,7 +1595,7 @@ static int __parse_cls_flower(struct mlx5e_priv *priv,
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CVLAN)) {
struct flow_match_vlan match;
- flow_rule_match_vlan(rule, &match);
+ flow_rule_match_cvlan(rule, &match);
if (match.mask->vlan_id ||
match.mask->vlan_priority ||
match.mask->vlan_tpid) {
diff --git a/include/net/flow_offload.h b/include/net/flow_offload.h
index 6200900434e1..a2df99f9b196 100644
--- a/include/net/flow_offload.h
+++ b/include/net/flow_offload.h
@@ -71,6 +71,8 @@ void flow_rule_match_eth_addrs(const struct flow_rule *rule,
struct flow_match_eth_addrs *out);
void flow_rule_match_vlan(const struct flow_rule *rule,
struct flow_match_vlan *out);
+void flow_rule_match_cvlan(const struct flow_rule *rule,
+ struct flow_match_vlan *out);
void flow_rule_match_ipv4_addrs(const struct flow_rule *rule,
struct flow_match_ipv4_addrs *out);
void flow_rule_match_ipv6_addrs(const struct flow_rule *rule,
diff --git a/net/core/flow_offload.c b/net/core/flow_offload.c
index c3a00eac4804..5ce7d47a960e 100644
--- a/net/core/flow_offload.c
+++ b/net/core/flow_offload.c
@@ -54,6 +54,13 @@ void flow_rule_match_vlan(const struct flow_rule *rule,
}
EXPORT_SYMBOL(flow_rule_match_vlan);
+void flow_rule_match_cvlan(const struct flow_rule *rule,
+ struct flow_match_vlan *out)
+{
+ FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_CVLAN, out);
+}
+EXPORT_SYMBOL(flow_rule_match_cvlan);
+
void flow_rule_match_ipv4_addrs(const struct flow_rule *rule,
struct flow_match_ipv4_addrs *out)
{