aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/qlcnic/qlcnic_ethtool.c
diff options
context:
space:
mode:
authorAmit Kumar Salecha <amit.salecha@qlogic.com>2010-06-21 23:19:01 -0400
committerDavid S. Miller <davem@davemloft.net>2010-06-23 16:16:30 -0400
commit8a15ad1fb14d67450742cf975a76e744b3189f4d (patch)
treed64402cdeec98e3838d8c73924db199a294ba845 /drivers/net/qlcnic/qlcnic_ethtool.c
parent42f65cbad4168958dff8a307bfe4b528409951d3 (diff)
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.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/net/qlcnic/qlcnic_ethtool.c b/drivers/net/qlcnic/qlcnic_ethtool.c
index a4f11202271..d4e803e2a97 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)
348 for (i = 0; diag_registers[i] != -1; i++) 348 for (i = 0; diag_registers[i] != -1; i++)
349 regs_buff[i] = QLCRD32(adapter, diag_registers[i]); 349 regs_buff[i] = QLCRD32(adapter, diag_registers[i]);
350 350
351 if (adapter->is_up != QLCNIC_ADAPTER_UP_MAGIC) 351 if (!test_bit(__QLCNIC_DEV_UP, &adapter->state))
352 return; 352 return;
353 353
354 regs_buff[i++] = 0xFFEFCDAB; /* Marker btw regs and ring count*/ 354 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)
833 struct qlcnic_adapter *adapter = netdev_priv(dev); 833 struct qlcnic_adapter *adapter = netdev_priv(dev);
834 int ret; 834 int ret;
835 835
836 if (!test_bit(__QLCNIC_DEV_UP, &adapter->state))
837 return -EIO;
838
836 ret = adapter->nic_ops->config_led(adapter, 1, 0xf); 839 ret = adapter->nic_ops->config_led(adapter, 1, 0xf);
837 if (ret) { 840 if (ret) {
838 dev_err(&adapter->pdev->dev, 841 dev_err(&adapter->pdev->dev,
@@ -904,7 +907,7 @@ static int qlcnic_set_intr_coalesce(struct net_device *netdev,
904{ 907{
905 struct qlcnic_adapter *adapter = netdev_priv(netdev); 908 struct qlcnic_adapter *adapter = netdev_priv(netdev);
906 909
907 if (adapter->is_up != QLCNIC_ADAPTER_UP_MAGIC) 910 if (!test_bit(__QLCNIC_DEV_UP, &adapter->state))
908 return -EINVAL; 911 return -EINVAL;
909 912
910 /* 913 /*