Skip to content

Commit f10b09e

Browse files
tlfalcondavem330
authored andcommitted
ibmvnic: Handle TSO backing device errata
TSO packets with one segment or with an MSS less than 224 can cause errors on some backing devices, so disable GSO in those cases. Signed-off-by: Thomas Falcon <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 1f247a6 commit f10b09e

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

drivers/net/ethernet/ibm/ibmvnic.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2049,6 +2049,23 @@ static int ibmvnic_change_mtu(struct net_device *netdev, int new_mtu)
20492049
return wait_for_reset(adapter);
20502050
}
20512051

2052+
static netdev_features_t ibmvnic_features_check(struct sk_buff *skb,
2053+
struct net_device *dev,
2054+
netdev_features_t features)
2055+
{
2056+
/* Some backing hardware adapters can not
2057+
* handle packets with a MSS less than 224
2058+
* or with only one segment.
2059+
*/
2060+
if (skb_is_gso(skb)) {
2061+
if (skb_shinfo(skb)->gso_size < 224 ||
2062+
skb_shinfo(skb)->gso_segs == 1)
2063+
features &= ~NETIF_F_GSO_MASK;
2064+
}
2065+
2066+
return features;
2067+
}
2068+
20522069
static const struct net_device_ops ibmvnic_netdev_ops = {
20532070
.ndo_open = ibmvnic_open,
20542071
.ndo_stop = ibmvnic_close,
@@ -2061,6 +2078,7 @@ static const struct net_device_ops ibmvnic_netdev_ops = {
20612078
.ndo_poll_controller = ibmvnic_netpoll_controller,
20622079
#endif
20632080
.ndo_change_mtu = ibmvnic_change_mtu,
2081+
.ndo_features_check = ibmvnic_features_check,
20642082
};
20652083

20662084
/* ethtool functions */

0 commit comments

Comments
 (0)