|
@@ -6469,28 +6469,27 @@ static int qeth_set_ipa_rx_csum(struct qeth_card *card, bool on)
|
|
|
#define QETH_HW_FEATURES (NETIF_F_RXCSUM | NETIF_F_IP_CSUM | NETIF_F_TSO | \
|
|
|
NETIF_F_IPV6_CSUM)
|
|
|
/**
|
|
|
- * qeth_recover_features() - Restore device features after recovery
|
|
|
- * @dev: the recovering net_device
|
|
|
- *
|
|
|
- * Caller must hold rtnl lock.
|
|
|
+ * qeth_enable_hw_features() - (Re-)Enable HW functions for device features
|
|
|
+ * @dev: a net_device
|
|
|
*/
|
|
|
-void qeth_recover_features(struct net_device *dev)
|
|
|
+void qeth_enable_hw_features(struct net_device *dev)
|
|
|
{
|
|
|
- netdev_features_t features = dev->features;
|
|
|
struct qeth_card *card = dev->ml_priv;
|
|
|
+ netdev_features_t features;
|
|
|
|
|
|
+ rtnl_lock();
|
|
|
+ features = dev->features;
|
|
|
/* force-off any feature that needs an IPA sequence.
|
|
|
* netdev_update_features() will restart them.
|
|
|
*/
|
|
|
dev->features &= ~QETH_HW_FEATURES;
|
|
|
netdev_update_features(dev);
|
|
|
-
|
|
|
- if (features == dev->features)
|
|
|
- return;
|
|
|
- dev_warn(&card->gdev->dev,
|
|
|
- "Device recovery failed to restore all offload features\n");
|
|
|
+ if (features != dev->features)
|
|
|
+ dev_warn(&card->gdev->dev,
|
|
|
+ "Device recovery failed to restore all offload features\n");
|
|
|
+ rtnl_unlock();
|
|
|
}
|
|
|
-EXPORT_SYMBOL_GPL(qeth_recover_features);
|
|
|
+EXPORT_SYMBOL_GPL(qeth_enable_hw_features);
|
|
|
|
|
|
int qeth_set_features(struct net_device *dev, netdev_features_t features)
|
|
|
{
|