|
@@ -6676,6 +6676,19 @@ static void e1000_eeprom_checks(struct e1000_adapter *adapter)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+static netdev_features_t e1000_fix_features(struct net_device *netdev,
|
|
|
+ netdev_features_t features)
|
|
|
+{
|
|
|
+ struct e1000_adapter *adapter = netdev_priv(netdev);
|
|
|
+ struct e1000_hw *hw = &adapter->hw;
|
|
|
+
|
|
|
+ /* Jumbo frame workaround on 82579 and newer requires CRC be stripped */
|
|
|
+ if ((hw->mac.type >= e1000_pch2lan) && (netdev->mtu > ETH_DATA_LEN))
|
|
|
+ features &= ~NETIF_F_RXFCS;
|
|
|
+
|
|
|
+ return features;
|
|
|
+}
|
|
|
+
|
|
|
static int e1000_set_features(struct net_device *netdev,
|
|
|
netdev_features_t features)
|
|
|
{
|
|
@@ -6732,6 +6745,7 @@ static const struct net_device_ops e1000e_netdev_ops = {
|
|
|
.ndo_poll_controller = e1000_netpoll,
|
|
|
#endif
|
|
|
.ndo_set_features = e1000_set_features,
|
|
|
+ .ndo_fix_features = e1000_fix_features,
|
|
|
};
|
|
|
|
|
|
/**
|