qeth: fix rx checksum offload handling
authorThomas Richter <tmricht@linux.vnet.ibm.com>
Mon, 18 May 2015 12:27:52 +0000 (14:27 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 18 May 2015 16:14:16 +0000 (12:14 -0400)
ethtool is used to change some device driver features
such as RX/TX hardware checksum offloading.
The qeth device driver callback function to
turn on/off RX hardware check sum handling never changes
the hardware configuration.
The NETIF_F_RXCSUM bit is cleared when the feature bitset
type netdev_features_t(64bit) is assigned to 32 a bit
variable.

This patch fixes the NETIF_F_RXCSUM handling.
Also there is no need to manipulate the device's features
bit set as this is done by the caller when no error occurs.

Signed-off-by: Thomas Richter <tmricht@linux.vnet.ibm.com>
Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/s390/net/qeth_l3_main.c

index 04e42c649134c1989a3485b01ff2a43cc380a82d..70eb2f61bb9269221f4c389838b67bf90fc071ba 100644 (file)
@@ -3198,8 +3198,7 @@ static int qeth_l3_set_features(struct net_device *dev,
        netdev_features_t features)
 {
        struct qeth_card *card = dev->ml_priv;
-       u32 changed = dev->features ^ features;
-       int err;
+       netdev_features_t changed = dev->features ^ features;
 
        if (!(changed & NETIF_F_RXCSUM))
                return 0;
@@ -3208,11 +3207,7 @@ static int qeth_l3_set_features(struct net_device *dev,
            card->state == CARD_STATE_RECOVER)
                return 0;
 
-       err = qeth_l3_set_rx_csum(card, features & NETIF_F_RXCSUM);
-       if (err)
-               dev->features = features ^ NETIF_F_RXCSUM;
-
-       return err;
+       return qeth_l3_set_rx_csum(card, features & NETIF_F_RXCSUM ? 1 : 0);
 }
 
 static const struct ethtool_ops qeth_l3_ethtool_ops = {