|
@@ -5089,6 +5089,20 @@ static netdev_features_t be_features_check(struct sk_buff *skb,
|
|
|
struct be_adapter *adapter = netdev_priv(dev);
|
|
|
u8 l4_hdr = 0;
|
|
|
|
|
|
+ if (skb_is_gso(skb)) {
|
|
|
+ /* IPv6 TSO requests with extension hdrs are a problem
|
|
|
+ * to Lancer and BE3 HW. Disable TSO6 feature.
|
|
|
+ */
|
|
|
+ if (!skyhawk_chip(adapter) && is_ipv6_ext_hdr(skb))
|
|
|
+ features &= ~NETIF_F_TSO6;
|
|
|
+
|
|
|
+ /* Lancer cannot handle the packet with MSS less than 256.
|
|
|
+ * Disable the GSO support in such cases
|
|
|
+ */
|
|
|
+ if (lancer_chip(adapter) && skb_shinfo(skb)->gso_size < 256)
|
|
|
+ features &= ~NETIF_F_GSO_MASK;
|
|
|
+ }
|
|
|
+
|
|
|
/* The code below restricts offload features for some tunneled and
|
|
|
* Q-in-Q packets.
|
|
|
* Offload features for normal (non tunnel) packets are unchanged.
|