|
@@ -887,12 +887,19 @@ static int netxen_nic_set_flags(struct net_device *netdev, u32 data)
|
|
|
struct netxen_adapter *adapter = netdev_priv(netdev);
|
|
|
int hw_lro;
|
|
|
|
|
|
+ if (data & ~ETH_FLAG_LRO)
|
|
|
+ return -EOPNOTSUPP;
|
|
|
+
|
|
|
if (!(adapter->capabilities & NX_FW_CAPABILITY_HW_LRO))
|
|
|
return -EINVAL;
|
|
|
|
|
|
- ethtool_op_set_flags(netdev, data);
|
|
|
-
|
|
|
- hw_lro = (data & ETH_FLAG_LRO) ? NETXEN_NIC_LRO_ENABLED : 0;
|
|
|
+ if (data & ETH_FLAG_LRO) {
|
|
|
+ hw_lro = NETXEN_NIC_LRO_ENABLED;
|
|
|
+ netdev->features |= NETIF_F_LRO;
|
|
|
+ } else {
|
|
|
+ hw_lro = 0;
|
|
|
+ netdev->features &= ~NETIF_F_LRO;
|
|
|
+ }
|
|
|
|
|
|
if (netxen_config_hw_lro(adapter, hw_lro))
|
|
|
return -EIO;
|