diff options
author | Amit Kumar Salecha <amit.salecha@qlogic.com> | 2010-06-22 05:19:01 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-06-23 22:16:30 +0200 |
commit | 8a15ad1fb14d67450742cf975a76e744b3189f4d (patch) | |
tree | d64402cdeec98e3838d8c73924db199a294ba845 /drivers/net/qlcnic/qlcnic_ethtool.c | |
parent | qlcnic: fix mac address mgmt (diff) | |
download | linux-8a15ad1fb14d67450742cf975a76e744b3189f4d.tar.xz linux-8a15ad1fb14d67450742cf975a76e744b3189f4d.zip |
qlcnic: release device resources during interface down
Previously we were allocating device resources during probe and
release them during remove.
Now alloc during interface up and release in interface down.
This helps in device performance, as it doesn't need to keep
track of inactive resources.
Signed-off-by: Amit Kumar Salecha <amit.salecha@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/qlcnic/qlcnic_ethtool.c')
-rw-r--r-- | drivers/net/qlcnic/qlcnic_ethtool.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/net/qlcnic/qlcnic_ethtool.c b/drivers/net/qlcnic/qlcnic_ethtool.c index a4f112022715..d4e803e2a977 100644 --- a/drivers/net/qlcnic/qlcnic_ethtool.c +++ b/drivers/net/qlcnic/qlcnic_ethtool.c @@ -348,7 +348,7 @@ qlcnic_get_regs(struct net_device *dev, struct ethtool_regs *regs, void *p) for (i = 0; diag_registers[i] != -1; i++) regs_buff[i] = QLCRD32(adapter, diag_registers[i]); - if (adapter->is_up != QLCNIC_ADAPTER_UP_MAGIC) + if (!test_bit(__QLCNIC_DEV_UP, &adapter->state)) return; regs_buff[i++] = 0xFFEFCDAB; /* Marker btw regs and ring count*/ @@ -833,6 +833,9 @@ static int qlcnic_blink_led(struct net_device *dev, u32 val) struct qlcnic_adapter *adapter = netdev_priv(dev); int ret; + if (!test_bit(__QLCNIC_DEV_UP, &adapter->state)) + return -EIO; + ret = adapter->nic_ops->config_led(adapter, 1, 0xf); if (ret) { dev_err(&adapter->pdev->dev, @@ -904,7 +907,7 @@ static int qlcnic_set_intr_coalesce(struct net_device *netdev, { struct qlcnic_adapter *adapter = netdev_priv(netdev); - if (adapter->is_up != QLCNIC_ADAPTER_UP_MAGIC) + if (!test_bit(__QLCNIC_DEV_UP, &adapter->state)) return -EINVAL; /* |