qlcnic: fix loopback test
authorAmit Kumar Salecha <amit.salecha@qlogic.com>
Sat, 24 Jul 2010 18:32:17 +0000 (18:32 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sun, 25 Jul 2010 23:32:40 +0000 (16:32 -0700)
o Loopback not supported for virtual function.

Signed-off-by: Amit Kumar Salecha <amit.salecha@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/qlcnic/qlcnic.h
drivers/net/qlcnic/qlcnic_ethtool.c
drivers/net/qlcnic/qlcnic_main.c

index fad8e9a51a54a537902ebecc79d6161106f4c931..970389331bbc4cb5c91da180fd04d282db872ac5 100644 (file)
@@ -1301,8 +1301,6 @@ struct qlcnic_nic_template {
        int (*get_mac_addr) (struct qlcnic_adapter *, u8*);
        int (*config_bridged_mode) (struct qlcnic_adapter *, u32);
        int (*config_led) (struct qlcnic_adapter *, u32, u32);
-       int (*set_ilb_mode) (struct qlcnic_adapter *);
-       void (*clear_ilb_mode) (struct qlcnic_adapter *);
        int (*start_firmware) (struct qlcnic_adapter *);
 };
 
index 7d6558e33dca46cd663cd3939da60b3468a72809..9328d59e21e0c6c2ff8011b19eb30f5f041fed5d 100644 (file)
@@ -678,6 +678,12 @@ static int qlcnic_loopback_test(struct net_device *netdev)
        int max_sds_rings = adapter->max_sds_rings;
        int ret;
 
+       if (adapter->op_mode == QLCNIC_NON_PRIV_FUNC) {
+               dev_warn(&adapter->pdev->dev, "Loopback test not supported"
+                               "for non privilege function\n");
+               return 0;
+       }
+
        if (test_and_set_bit(__QLCNIC_RESETTING, &adapter->state))
                return -EIO;
 
@@ -685,13 +691,13 @@ static int qlcnic_loopback_test(struct net_device *netdev)
        if (ret)
                goto clear_it;
 
-       ret = adapter->nic_ops->set_ilb_mode(adapter);
+       ret = qlcnic_set_ilb_mode(adapter);
        if (ret)
                goto done;
 
        ret = qlcnic_do_ilb_test(adapter);
 
-       adapter->nic_ops->clear_ilb_mode(adapter);
+       qlcnic_clear_ilb_mode(adapter);
 
 done:
        qlcnic_diag_free_res(netdev, max_sds_rings);
index f1f7acfbf412a661405e32ef37cacf5995afe737..f147958e05a15e564f136c34674d561b5610d386 100644 (file)
@@ -107,8 +107,6 @@ static void qlcnic_config_indev_addr(struct net_device *dev, unsigned long);
 static int qlcnic_start_firmware(struct qlcnic_adapter *);
 
 static void qlcnic_dev_set_npar_ready(struct qlcnic_adapter *);
-static void qlcnicvf_clear_ilb_mode(struct qlcnic_adapter *);
-static int qlcnicvf_set_ilb_mode(struct qlcnic_adapter *);
 static int qlcnicvf_config_led(struct qlcnic_adapter *, u32, u32);
 static int qlcnicvf_config_bridged_mode(struct qlcnic_adapter *, u32);
 static int qlcnicvf_start_firmware(struct qlcnic_adapter *);
@@ -381,8 +379,6 @@ static struct qlcnic_nic_template qlcnic_ops = {
        .get_mac_addr = qlcnic_get_mac_address,
        .config_bridged_mode = qlcnic_config_bridged_mode,
        .config_led = qlcnic_config_led,
-       .set_ilb_mode = qlcnic_set_ilb_mode,
-       .clear_ilb_mode = qlcnic_clear_ilb_mode,
        .start_firmware = qlcnic_start_firmware
 };
 
@@ -390,8 +386,6 @@ static struct qlcnic_nic_template qlcnic_vf_ops = {
        .get_mac_addr = qlcnic_get_mac_address,
        .config_bridged_mode = qlcnicvf_config_bridged_mode,
        .config_led = qlcnicvf_config_led,
-       .set_ilb_mode = qlcnicvf_set_ilb_mode,
-       .clear_ilb_mode = qlcnicvf_clear_ilb_mode,
        .start_firmware = qlcnicvf_start_firmware
 };
 
@@ -2841,18 +2835,6 @@ qlcnicvf_config_led(struct qlcnic_adapter *adapter, u32 state, u32 rate)
        return -EOPNOTSUPP;
 }
 
-static int
-qlcnicvf_set_ilb_mode(struct qlcnic_adapter *adapter)
-{
-       return -EOPNOTSUPP;
-}
-
-static void
-qlcnicvf_clear_ilb_mode(struct qlcnic_adapter *adapter)
-{
-       return;
-}
-
 static ssize_t
 qlcnic_store_bridged_mode(struct device *dev,
                struct device_attribute *attr, const char *buf, size_t len)