qlcnic: add 82xx adapter specific checks
authorSony Chacko <sony.chacko@qlogic.com>
Tue, 4 Dec 2012 03:33:52 +0000 (03:33 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 4 Dec 2012 18:00:11 +0000 (13:00 -0500)
Add 82xx adapter ID check before 82xx specific operations as part of
refactoring the driver to enable support for new adapter.

Signed-off-by: Sony Chacko <sony.chacko@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/qlogic/qlcnic/qlcnic.h
drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c

index 082eecbf414832739d577fe9173626d15c1df206..ebc5b069dddd63b46ee817f752322a0a20c5413e 100644 (file)
@@ -1515,4 +1515,11 @@ struct qlcnic_nic_template {
                        __func__, ##_args);             \
        } while (0)
 
+#define PCI_DEVICE_ID_QLOGIC_QLE824X   0x8020
+static inline bool qlcnic_82xx_check(struct qlcnic_adapter *adapter)
+{
+       unsigned short device = adapter->pdev->device;
+       return (device == PCI_DEVICE_ID_QLOGIC_QLE824X) ? true : false;
+}
+
 #endif                         /* __QLCNIC_H_ */
index 0110db1d0a346da4423abbbb8e3b4f4bde1b0d6c..f838a17cb326117491ea6f9f92abc46e73287dc1 100644 (file)
@@ -1561,7 +1561,9 @@ qlcnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 
        pci_set_drvdata(pdev, adapter);
 
-       qlcnic_schedule_work(adapter, qlcnic_fw_poll_work, FW_POLL_DELAY);
+       if (qlcnic_82xx_check(adapter))
+               qlcnic_schedule_work(adapter, qlcnic_fw_poll_work,
+                                    FW_POLL_DELAY);
 
        switch (adapter->ahw->port_type) {
        case QLCNIC_GBE:
@@ -1640,7 +1642,8 @@ static void qlcnic_remove(struct pci_dev *pdev)
        if (adapter->eswitch != NULL)
                kfree(adapter->eswitch);
 
-       qlcnic_clr_all_drv_state(adapter, 0);
+       if (qlcnic_82xx_check(adapter))
+               qlcnic_clr_all_drv_state(adapter, 0);
 
        clear_bit(__QLCNIC_RESETTING, &adapter->state);
 
@@ -1676,7 +1679,8 @@ static int __qlcnic_shutdown(struct pci_dev *pdev)
        if (netif_running(netdev))
                qlcnic_down(adapter, netdev);
 
-       qlcnic_clr_all_drv_state(adapter, 0);
+       if (qlcnic_82xx_check(adapter))
+               qlcnic_clr_all_drv_state(adapter, 0);
 
        clear_bit(__QLCNIC_RESETTING, &adapter->state);
 
@@ -1684,9 +1688,11 @@ static int __qlcnic_shutdown(struct pci_dev *pdev)
        if (retval)
                return retval;
 
-       if (qlcnic_wol_supported(adapter)) {
-               pci_enable_wake(pdev, PCI_D3cold, 1);
-               pci_enable_wake(pdev, PCI_D3hot, 1);
+       if (qlcnic_82xx_check(adapter)) {
+               if (qlcnic_wol_supported(adapter)) {
+                       pci_enable_wake(pdev, PCI_D3cold, 1);
+                       pci_enable_wake(pdev, PCI_D3hot, 1);
+               }
        }
 
        return 0;
@@ -1824,10 +1830,11 @@ static void qlcnic_free_lb_filters_mem(struct qlcnic_adapter *adapter)
 static int qlcnic_check_temp(struct qlcnic_adapter *adapter)
 {
        struct net_device *netdev = adapter->netdev;
-       u32 temp, temp_state, temp_val;
+       u32 temp_state, temp_val, temp = 0;
        int rv = 0;
 
-       temp = QLCRD32(adapter, CRB_TEMP_STATE);
+       if (qlcnic_82xx_check(adapter))
+               temp = QLCRD32(adapter, CRB_TEMP_STATE);
 
        temp_state = qlcnic_get_temp_state(temp);
        temp_val = qlcnic_get_temp_val(temp);