|
@@ -3357,6 +3357,24 @@ int i40evf_process_config(struct i40evf_adapter *adapter)
|
|
|
if (vfres->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_VLAN)
|
|
|
netdev->features |= NETIF_F_HW_VLAN_CTAG_FILTER;
|
|
|
|
|
|
+ /* Do not turn on offloads when they are requested to be turned off.
|
|
|
+ * TSO needs minimum 576 bytes to work correctly.
|
|
|
+ */
|
|
|
+ if (netdev->wanted_features) {
|
|
|
+ if (!(netdev->wanted_features & NETIF_F_TSO) ||
|
|
|
+ netdev->mtu < 576)
|
|
|
+ netdev->features &= ~NETIF_F_TSO;
|
|
|
+ if (!(netdev->wanted_features & NETIF_F_TSO6) ||
|
|
|
+ netdev->mtu < 576)
|
|
|
+ netdev->features &= ~NETIF_F_TSO6;
|
|
|
+ if (!(netdev->wanted_features & NETIF_F_TSO_ECN))
|
|
|
+ netdev->features &= ~NETIF_F_TSO_ECN;
|
|
|
+ if (!(netdev->wanted_features & NETIF_F_GRO))
|
|
|
+ netdev->features &= ~NETIF_F_GRO;
|
|
|
+ if (!(netdev->wanted_features & NETIF_F_GSO))
|
|
|
+ netdev->features &= ~NETIF_F_GSO;
|
|
|
+ }
|
|
|
+
|
|
|
adapter->vsi.id = adapter->vsi_res->vsi_id;
|
|
|
|
|
|
adapter->vsi.back = adapter;
|