diff options
Diffstat (limited to 'net/mpls/mpls_gso.c')
-rw-r--r-- | net/mpls/mpls_gso.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/net/mpls/mpls_gso.c b/net/mpls/mpls_gso.c index e28ed2ef5b06..e3545f21a099 100644 --- a/net/mpls/mpls_gso.c +++ b/net/mpls/mpls_gso.c | |||
@@ -48,7 +48,7 @@ static struct sk_buff *mpls_gso_segment(struct sk_buff *skb, | |||
48 | __skb_push(skb, skb->mac_len); | 48 | __skb_push(skb, skb->mac_len); |
49 | 49 | ||
50 | /* Segment inner packet. */ | 50 | /* Segment inner packet. */ |
51 | mpls_features = skb->dev->mpls_features & netif_skb_features(skb); | 51 | mpls_features = skb->dev->mpls_features & features; |
52 | segs = skb_mac_gso_segment(skb, mpls_features); | 52 | segs = skb_mac_gso_segment(skb, mpls_features); |
53 | 53 | ||
54 | 54 | ||
@@ -59,8 +59,7 @@ static struct sk_buff *mpls_gso_segment(struct sk_buff *skb, | |||
59 | * above pulled. It will be re-pushed after returning | 59 | * above pulled. It will be re-pushed after returning |
60 | * skb_mac_gso_segment(), an indirect caller of this function. | 60 | * skb_mac_gso_segment(), an indirect caller of this function. |
61 | */ | 61 | */ |
62 | __skb_push(skb, skb->data - skb_mac_header(skb)); | 62 | __skb_pull(skb, skb->data - skb_mac_header(skb)); |
63 | |||
64 | out: | 63 | out: |
65 | return segs; | 64 | return segs; |
66 | } | 65 | } |