qlcnic: fail when try to setup unsupported features
authorStanislaw Gruszka <sgruszka@redhat.com>
Sun, 27 Jun 2010 23:31:34 +0000 (23:31 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 29 Jun 2010 07:53:28 +0000 (00:53 -0700)
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/qlcnic/qlcnic_ethtool.c

index d4e803e2a9777888b5693c950ad50fd0c10a0c34..b9d5acbaf5408966ede6cc01d7b78909ac0d1244 100644 (file)
@@ -983,12 +983,19 @@ static int qlcnic_set_flags(struct net_device *netdev, u32 data)
        struct qlcnic_adapter *adapter = netdev_priv(netdev);
        int hw_lro;
 
+       if (data & ~ETH_FLAG_LRO)
+               return -EOPNOTSUPP;
+
        if (!(adapter->capabilities & QLCNIC_FW_CAPABILITY_HW_LRO))
                return -EINVAL;
 
-       ethtool_op_set_flags(netdev, data);
-
-       hw_lro = (data & ETH_FLAG_LRO) ? QLCNIC_LRO_ENABLED : 0;
+       if (data & ETH_FLAG_LRO) {
+               hw_lro = QLCNIC_LRO_ENABLED;
+               netdev->features |= NETIF_F_LRO;
+       } else {
+               hw_lro = 0;
+               netdev->features &= ~NETIF_F_LRO;
+       }
 
        if (qlcnic_config_hw_lro(adapter, hw_lro))
                return -EIO;