netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH/RFC] openvswitch: loosen restriction of output of MPLS to tunnel vports
@ 2016-02-12 19:25 Simon Horman
  2016-02-16 22:53 ` Jesse Gross
  0 siblings, 1 reply; 4+ messages in thread
From: Simon Horman @ 2016-02-12 19:25 UTC (permalink / raw)
  To: netdev; +Cc: dev, Pravin Shelar, Simon Horman

If an skb was not MPLS initially then it may be GSO and in that case if it
became MPLS then GSO can't be performed because both MPLS and tunnels make
use of the inner_protocol field of struct skbuff in order to allow GSO to
be performed in the inner packet.

On the other hand if an skb was MPLS initially then it will not be GSO,
as there is no support for GRO for MPLS. Thus in this case it is safe
to allow output of MPLS on tunnel vports.

Signed-off-by: Simon Horman <simon.horman@netronome.com>
---
 net/openvswitch/flow_netlink.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/net/openvswitch/flow_netlink.c b/net/openvswitch/flow_netlink.c
index d1bd4a45ca2d..a574796f35d2 100644
--- a/net/openvswitch/flow_netlink.c
+++ b/net/openvswitch/flow_netlink.c
@@ -2038,7 +2038,13 @@ static int validate_set(const struct nlattr *a,
 		break;
 
 	case OVS_KEY_ATTR_TUNNEL:
-		if (eth_p_mpls(eth_type))
+		/* If an skb was not MPLS initially then it may be GSO
+		 * and in that case if it became MPLS then GSO can't be
+		 * performed because both MPLS and tunnels make use
+		 * of the inner_protocol field of struct skbuff in order
+		 * to allow GSO to be performed in the inner packet.
+		 */
+		if (!eth_p_mpls(flow_key->eth.type) && eth_p_mpls(eth_type))
 			return -EINVAL;
 
 		if (masked)
-- 
2.7.0.rc3.207.g0ac5344

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

end of thread, other threads:[~2016-02-19 15:45 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-12 19:25 [PATCH/RFC] openvswitch: loosen restriction of output of MPLS to tunnel vports Simon Horman
2016-02-16 22:53 ` Jesse Gross
     [not found]   ` <CAEh+42g5GXduCgr0WCyAKvSO6LeATFuZoWU2aR0sfNDbJqG=6Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-02-19  7:59     ` Simon Horman
2016-02-19 15:45       ` Jesse Gross

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