diff options
Diffstat (limited to 'include/linux/netdevice.h')
-rw-r--r-- | include/linux/netdevice.h | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index bbfabf3012b6..2a801380b502 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -1903,15 +1903,14 @@ static inline int net_gso_ok(int features, int gso_type) | |||
1903 | 1903 | ||
1904 | static inline int skb_gso_ok(struct sk_buff *skb, int features) | 1904 | static inline int skb_gso_ok(struct sk_buff *skb, int features) |
1905 | { | 1905 | { |
1906 | return net_gso_ok(features, skb_shinfo(skb)->gso_type); | 1906 | return net_gso_ok(features, skb_shinfo(skb)->gso_type) && |
1907 | (!skb_shinfo(skb)->frag_list || (features & NETIF_F_FRAGLIST)); | ||
1907 | } | 1908 | } |
1908 | 1909 | ||
1909 | static inline int netif_needs_gso(struct net_device *dev, struct sk_buff *skb) | 1910 | static inline int netif_needs_gso(struct net_device *dev, struct sk_buff *skb) |
1910 | { | 1911 | { |
1911 | return skb_is_gso(skb) && | 1912 | return skb_is_gso(skb) && |
1912 | (!skb_gso_ok(skb, dev->features) || | 1913 | (!skb_gso_ok(skb, dev->features) || |
1913 | (skb_shinfo(skb)->frag_list && | ||
1914 | !(dev->features & NETIF_F_FRAGLIST)) || | ||
1915 | unlikely(skb->ip_summed != CHECKSUM_PARTIAL)); | 1914 | unlikely(skb->ip_summed != CHECKSUM_PARTIAL)); |
1916 | } | 1915 | } |
1917 | 1916 | ||