netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net 0/2] nfp: flower: fixes for flower offload
@ 2018-09-11 13:38 Jakub Kicinski
  2018-09-11 13:38 ` [PATCH net 1/2] nfp: flower: fix vlan match by checking both vlan id and vlan pcp Jakub Kicinski
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Jakub Kicinski @ 2018-09-11 13:38 UTC (permalink / raw)
  To: davem; +Cc: netdev, oss-drivers, Jakub Kicinski

Hi!

Two fixes for flower matching and tunnel encap.  Pieter fixes
VLAN matching if the entire VLAN id is masked out and match
is only performed on the PCP field.  Louis adds validation of
tunnel flags for encap, most importantly we should not offload
actions on IPv6 tunnels if it's not supported.

Louis Peens (1):
  nfp: flower: reject tunnel encap with ipv6 outer headers for
    offloading

Pieter Jansen van Vuuren (1):
  nfp: flower: fix vlan match by checking both vlan id and vlan pcp

 drivers/net/ethernet/netronome/nfp/flower/action.c  |  6 ++++++
 drivers/net/ethernet/netronome/nfp/flower/main.h    |  1 +
 drivers/net/ethernet/netronome/nfp/flower/match.c   |  2 +-
 drivers/net/ethernet/netronome/nfp/flower/offload.c | 11 +++++++++++
 4 files changed, 19 insertions(+), 1 deletion(-)

-- 
2.17.1

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH net 1/2] nfp: flower: fix vlan match by checking both vlan id and vlan pcp
  2018-09-11 13:38 [PATCH net 0/2] nfp: flower: fixes for flower offload Jakub Kicinski
@ 2018-09-11 13:38 ` Jakub Kicinski
  2018-09-11 13:38 ` [PATCH net 2/2] nfp: flower: reject tunnel encap with ipv6 outer headers for offloading Jakub Kicinski
  2018-09-12 20:19 ` [PATCH net 0/2] nfp: flower: fixes for flower offload David Miller
  2 siblings, 0 replies; 4+ messages in thread
From: Jakub Kicinski @ 2018-09-11 13:38 UTC (permalink / raw)
  To: davem; +Cc: netdev, oss-drivers, Pieter Jansen van Vuuren

From: Pieter Jansen van Vuuren <pieter.jansenvanvuuren@netronome.com>

Previously we only checked if the vlan id field is present when trying
to match a vlan tag. The vlan id and vlan pcp field should be treated
independently.

Fixes: 5571e8c9f241 ("nfp: extend flower matching capabilities")
Signed-off-by: Pieter Jansen van Vuuren <pieter.jansenvanvuuren@netronome.com>
Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com>
---
 drivers/net/ethernet/netronome/nfp/flower/main.h    |  1 +
 drivers/net/ethernet/netronome/nfp/flower/match.c   |  2 +-
 drivers/net/ethernet/netronome/nfp/flower/offload.c | 11 +++++++++++
 3 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/netronome/nfp/flower/main.h b/drivers/net/ethernet/netronome/nfp/flower/main.h
index 85f8209bf007..81d941ab895c 100644
--- a/drivers/net/ethernet/netronome/nfp/flower/main.h
+++ b/drivers/net/ethernet/netronome/nfp/flower/main.h
@@ -70,6 +70,7 @@ struct nfp_app;
 #define NFP_FL_FEATS_GENEVE		BIT(0)
 #define NFP_FL_NBI_MTU_SETTING		BIT(1)
 #define NFP_FL_FEATS_GENEVE_OPT		BIT(2)
+#define NFP_FL_FEATS_VLAN_PCP		BIT(3)
 #define NFP_FL_FEATS_LAG		BIT(31)
 
 struct nfp_fl_mask_id {
diff --git a/drivers/net/ethernet/netronome/nfp/flower/match.c b/drivers/net/ethernet/netronome/nfp/flower/match.c
index a0c72f277faa..17acb8cc6044 100644
--- a/drivers/net/ethernet/netronome/nfp/flower/match.c
+++ b/drivers/net/ethernet/netronome/nfp/flower/match.c
@@ -56,7 +56,7 @@ nfp_flower_compile_meta_tci(struct nfp_flower_meta_tci *frame,
 						      FLOW_DISSECTOR_KEY_VLAN,
 						      target);
 		/* Populate the tci field. */
-		if (flow_vlan->vlan_id) {
+		if (flow_vlan->vlan_id || flow_vlan->vlan_priority) {
 			tmp_tci = FIELD_PREP(NFP_FLOWER_MASK_VLAN_PRIO,
 					     flow_vlan->vlan_priority) |
 				  FIELD_PREP(NFP_FLOWER_MASK_VLAN_VID,
diff --git a/drivers/net/ethernet/netronome/nfp/flower/offload.c b/drivers/net/ethernet/netronome/nfp/flower/offload.c
index 2edab01c3beb..bd19624f10cf 100644
--- a/drivers/net/ethernet/netronome/nfp/flower/offload.c
+++ b/drivers/net/ethernet/netronome/nfp/flower/offload.c
@@ -192,6 +192,17 @@ nfp_flower_calculate_key_layers(struct nfp_app *app,
 		key_size += sizeof(struct nfp_flower_mac_mpls);
 	}
 
+	if (dissector_uses_key(flow->dissector, FLOW_DISSECTOR_KEY_VLAN)) {
+		struct flow_dissector_key_vlan *flow_vlan;
+
+		flow_vlan = skb_flow_dissector_target(flow->dissector,
+						      FLOW_DISSECTOR_KEY_VLAN,
+						      flow->mask);
+		if (!(priv->flower_ext_feats & NFP_FL_FEATS_VLAN_PCP) &&
+		    flow_vlan->vlan_priority)
+			return -EOPNOTSUPP;
+	}
+
 	if (dissector_uses_key(flow->dissector,
 			       FLOW_DISSECTOR_KEY_ENC_CONTROL)) {
 		struct flow_dissector_key_ipv4_addrs *mask_ipv4 = NULL;
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH net 2/2] nfp: flower: reject tunnel encap with ipv6 outer headers for offloading
  2018-09-11 13:38 [PATCH net 0/2] nfp: flower: fixes for flower offload Jakub Kicinski
  2018-09-11 13:38 ` [PATCH net 1/2] nfp: flower: fix vlan match by checking both vlan id and vlan pcp Jakub Kicinski
@ 2018-09-11 13:38 ` Jakub Kicinski
  2018-09-12 20:19 ` [PATCH net 0/2] nfp: flower: fixes for flower offload David Miller
  2 siblings, 0 replies; 4+ messages in thread
From: Jakub Kicinski @ 2018-09-11 13:38 UTC (permalink / raw)
  To: davem; +Cc: netdev, oss-drivers, Louis Peens

From: Louis Peens <louis.peens@netronome.com>

This fixes a bug where ipv6 tunnels would report that it is
getting offloaded to hardware but would actually be rejected
by hardware.

Fixes: b27d6a95a70d ("nfp: compile flower vxlan tunnel set actions")
Signed-off-by: Louis Peens <louis.peens@netronome.com>
Reviewed-by: John Hurley <john.hurley@netronome.com>
Reviewed-by: Simon Horman <simon.horman@netronome.com>
Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com>
---
 drivers/net/ethernet/netronome/nfp/flower/action.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/net/ethernet/netronome/nfp/flower/action.c b/drivers/net/ethernet/netronome/nfp/flower/action.c
index 9044496803e6..46ba0cf257c6 100644
--- a/drivers/net/ethernet/netronome/nfp/flower/action.c
+++ b/drivers/net/ethernet/netronome/nfp/flower/action.c
@@ -52,6 +52,7 @@
 #define NFP_FL_TUNNEL_CSUM			cpu_to_be16(0x01)
 #define NFP_FL_TUNNEL_KEY			cpu_to_be16(0x04)
 #define NFP_FL_TUNNEL_GENEVE_OPT		cpu_to_be16(0x0800)
+#define NFP_FL_SUPPORTED_TUNNEL_INFO_FLAGS	IP_TUNNEL_INFO_TX
 #define NFP_FL_SUPPORTED_IPV4_UDP_TUN_FLAGS	(NFP_FL_TUNNEL_CSUM | \
 						 NFP_FL_TUNNEL_KEY | \
 						 NFP_FL_TUNNEL_GENEVE_OPT)
@@ -741,11 +742,16 @@ nfp_flower_loop_action(struct nfp_app *app, const struct tc_action *a,
 		nfp_fl_push_vlan(psh_v, a);
 		*a_len += sizeof(struct nfp_fl_push_vlan);
 	} else if (is_tcf_tunnel_set(a)) {
+		struct ip_tunnel_info *ip_tun = tcf_tunnel_info(a);
 		struct nfp_repr *repr = netdev_priv(netdev);
+
 		*tun_type = nfp_fl_get_tun_from_act_l4_port(repr->app, a);
 		if (*tun_type == NFP_FL_TUNNEL_NONE)
 			return -EOPNOTSUPP;
 
+		if (ip_tun->mode & ~NFP_FL_SUPPORTED_TUNNEL_INFO_FLAGS)
+			return -EOPNOTSUPP;
+
 		/* Pre-tunnel action is required for tunnel encap.
 		 * This checks for next hop entries on NFP.
 		 * If none, the packet falls back before applying other actions.
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH net 0/2] nfp: flower: fixes for flower offload
  2018-09-11 13:38 [PATCH net 0/2] nfp: flower: fixes for flower offload Jakub Kicinski
  2018-09-11 13:38 ` [PATCH net 1/2] nfp: flower: fix vlan match by checking both vlan id and vlan pcp Jakub Kicinski
  2018-09-11 13:38 ` [PATCH net 2/2] nfp: flower: reject tunnel encap with ipv6 outer headers for offloading Jakub Kicinski
@ 2018-09-12 20:19 ` David Miller
  2 siblings, 0 replies; 4+ messages in thread
From: David Miller @ 2018-09-12 20:19 UTC (permalink / raw)
  To: jakub.kicinski; +Cc: netdev, oss-drivers

From: Jakub Kicinski <jakub.kicinski@netronome.com>
Date: Tue, 11 Sep 2018 06:38:43 -0700

> Two fixes for flower matching and tunnel encap.  Pieter fixes
> VLAN matching if the entire VLAN id is masked out and match
> is only performed on the PCP field.  Louis adds validation of
> tunnel flags for encap, most importantly we should not offload
> actions on IPv6 tunnels if it's not supported.

Series applied, thanks.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-09-13  1:26 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-09-11 13:38 [PATCH net 0/2] nfp: flower: fixes for flower offload Jakub Kicinski
2018-09-11 13:38 ` [PATCH net 1/2] nfp: flower: fix vlan match by checking both vlan id and vlan pcp Jakub Kicinski
2018-09-11 13:38 ` [PATCH net 2/2] nfp: flower: reject tunnel encap with ipv6 outer headers for offloading Jakub Kicinski
2018-09-12 20:19 ` [PATCH net 0/2] nfp: flower: fixes for flower offload David Miller

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).