diff options
author | Pravin B Shelar <pshelar@nicira.com> | 2014-12-24 00:20:28 (GMT) |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-12-24 04:57:31 (GMT) |
commit | cbe7e76d94f59e89302bd514e4b685e03d1ebbe4 (patch) | |
tree | 3d02656f1f35aac57b126e710be98ad68afd6949 | |
parent | ec449f40bb3e19c77f62ddabf7c1fe3ccefece6f (diff) | |
download | linux-cbe7e76d94f59e89302bd514e4b685e03d1ebbe4.tar.xz |
openvswitch: Fix GSO with multiple MPLS label.
MPLS GSO needs to know inner most protocol to process GSO packets.
Fixes: 25cd9ba0abc ("openvswitch: Add basic MPLS support to
kernel").
Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/openvswitch/actions.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/openvswitch/actions.c b/net/openvswitch/actions.c index 764fdc3..770064c 100644 --- a/net/openvswitch/actions.c +++ b/net/openvswitch/actions.c @@ -147,7 +147,8 @@ static int push_mpls(struct sk_buff *skb, struct sw_flow_key *key, hdr = eth_hdr(skb); hdr->h_proto = mpls->mpls_ethertype; - skb_set_inner_protocol(skb, skb->protocol); + if (!skb->inner_protocol) + skb_set_inner_protocol(skb, skb->protocol); skb->protocol = mpls->mpls_ethertype; invalidate_flow_key(key); |