diff options
Diffstat (limited to 'drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c')
-rw-r--r-- | drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c index 4528f8ec333b..ee013fcc3322 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | |||
@@ -977,8 +977,8 @@ qlcnic_check_options(struct qlcnic_adapter *adapter) | |||
977 | static int | 977 | static int |
978 | qlcnic_initialize_nic(struct qlcnic_adapter *adapter) | 978 | qlcnic_initialize_nic(struct qlcnic_adapter *adapter) |
979 | { | 979 | { |
980 | int err; | ||
981 | struct qlcnic_info nic_info; | 980 | struct qlcnic_info nic_info; |
981 | int err = 0; | ||
982 | 982 | ||
983 | memset(&nic_info, 0, sizeof(struct qlcnic_info)); | 983 | memset(&nic_info, 0, sizeof(struct qlcnic_info)); |
984 | err = qlcnic_get_nic_info(adapter, &nic_info, adapter->ahw->pci_func); | 984 | err = qlcnic_get_nic_info(adapter, &nic_info, adapter->ahw->pci_func); |
@@ -993,7 +993,9 @@ qlcnic_initialize_nic(struct qlcnic_adapter *adapter) | |||
993 | 993 | ||
994 | if (adapter->ahw->capabilities & QLCNIC_FW_CAPABILITY_MORE_CAPS) { | 994 | if (adapter->ahw->capabilities & QLCNIC_FW_CAPABILITY_MORE_CAPS) { |
995 | u32 temp; | 995 | u32 temp; |
996 | temp = QLCRD32(adapter, CRB_FW_CAPABILITIES_2); | 996 | temp = QLCRD32(adapter, CRB_FW_CAPABILITIES_2, &err); |
997 | if (err == -EIO) | ||
998 | return err; | ||
997 | adapter->ahw->extra_capability[0] = temp; | 999 | adapter->ahw->extra_capability[0] = temp; |
998 | } | 1000 | } |
999 | adapter->ahw->max_mac_filters = nic_info.max_mac_filters; | 1001 | adapter->ahw->max_mac_filters = nic_info.max_mac_filters; |
@@ -1383,6 +1385,8 @@ qlcnic_request_irq(struct qlcnic_adapter *adapter) | |||
1383 | if (adapter->ahw->diag_test == QLCNIC_INTERRUPT_TEST) { | 1385 | if (adapter->ahw->diag_test == QLCNIC_INTERRUPT_TEST) { |
1384 | if (qlcnic_82xx_check(adapter)) | 1386 | if (qlcnic_82xx_check(adapter)) |
1385 | handler = qlcnic_tmp_intr; | 1387 | handler = qlcnic_tmp_intr; |
1388 | else | ||
1389 | handler = qlcnic_83xx_tmp_intr; | ||
1386 | if (!QLCNIC_IS_MSI_FAMILY(adapter)) | 1390 | if (!QLCNIC_IS_MSI_FAMILY(adapter)) |
1387 | flags |= IRQF_SHARED; | 1391 | flags |= IRQF_SHARED; |
1388 | 1392 | ||
@@ -1531,12 +1535,12 @@ int __qlcnic_up(struct qlcnic_adapter *adapter, struct net_device *netdev) | |||
1531 | if (netdev->features & NETIF_F_LRO) | 1535 | if (netdev->features & NETIF_F_LRO) |
1532 | qlcnic_config_hw_lro(adapter, QLCNIC_LRO_ENABLED); | 1536 | qlcnic_config_hw_lro(adapter, QLCNIC_LRO_ENABLED); |
1533 | 1537 | ||
1538 | set_bit(__QLCNIC_DEV_UP, &adapter->state); | ||
1534 | qlcnic_napi_enable(adapter); | 1539 | qlcnic_napi_enable(adapter); |
1535 | 1540 | ||
1536 | qlcnic_linkevent_request(adapter, 1); | 1541 | qlcnic_linkevent_request(adapter, 1); |
1537 | 1542 | ||
1538 | adapter->ahw->reset_context = 0; | 1543 | adapter->ahw->reset_context = 0; |
1539 | set_bit(__QLCNIC_DEV_UP, &adapter->state); | ||
1540 | return 0; | 1544 | return 0; |
1541 | } | 1545 | } |
1542 | 1546 | ||
@@ -2139,7 +2143,7 @@ qlcnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
2139 | if (qlcnic_83xx_check(adapter) && !qlcnic_use_msi_x && | 2143 | if (qlcnic_83xx_check(adapter) && !qlcnic_use_msi_x && |
2140 | !!qlcnic_use_msi) | 2144 | !!qlcnic_use_msi) |
2141 | dev_warn(&pdev->dev, | 2145 | dev_warn(&pdev->dev, |
2142 | "83xx adapter do not support MSI interrupts\n"); | 2146 | "Device does not support MSI interrupts\n"); |
2143 | 2147 | ||
2144 | err = qlcnic_setup_intr(adapter, 0); | 2148 | err = qlcnic_setup_intr(adapter, 0); |
2145 | if (err) { | 2149 | if (err) { |
@@ -3093,6 +3097,7 @@ qlcnic_check_health(struct qlcnic_adapter *adapter) | |||
3093 | { | 3097 | { |
3094 | u32 state = 0, heartbeat; | 3098 | u32 state = 0, heartbeat; |
3095 | u32 peg_status; | 3099 | u32 peg_status; |
3100 | int err = 0; | ||
3096 | 3101 | ||
3097 | if (qlcnic_check_temp(adapter)) | 3102 | if (qlcnic_check_temp(adapter)) |
3098 | goto detach; | 3103 | goto detach; |
@@ -3139,11 +3144,11 @@ qlcnic_check_health(struct qlcnic_adapter *adapter) | |||
3139 | "PEG_NET_4_PC: 0x%x\n", | 3144 | "PEG_NET_4_PC: 0x%x\n", |
3140 | peg_status, | 3145 | peg_status, |
3141 | QLC_SHARED_REG_RD32(adapter, QLCNIC_PEG_HALT_STATUS2), | 3146 | QLC_SHARED_REG_RD32(adapter, QLCNIC_PEG_HALT_STATUS2), |
3142 | QLCRD32(adapter, QLCNIC_CRB_PEG_NET_0 + 0x3c), | 3147 | QLCRD32(adapter, QLCNIC_CRB_PEG_NET_0 + 0x3c, &err), |
3143 | QLCRD32(adapter, QLCNIC_CRB_PEG_NET_1 + 0x3c), | 3148 | QLCRD32(adapter, QLCNIC_CRB_PEG_NET_1 + 0x3c, &err), |
3144 | QLCRD32(adapter, QLCNIC_CRB_PEG_NET_2 + 0x3c), | 3149 | QLCRD32(adapter, QLCNIC_CRB_PEG_NET_2 + 0x3c, &err), |
3145 | QLCRD32(adapter, QLCNIC_CRB_PEG_NET_3 + 0x3c), | 3150 | QLCRD32(adapter, QLCNIC_CRB_PEG_NET_3 + 0x3c, &err), |
3146 | QLCRD32(adapter, QLCNIC_CRB_PEG_NET_4 + 0x3c)); | 3151 | QLCRD32(adapter, QLCNIC_CRB_PEG_NET_4 + 0x3c, &err)); |
3147 | if (QLCNIC_FWERROR_CODE(peg_status) == 0x67) | 3152 | if (QLCNIC_FWERROR_CODE(peg_status) == 0x67) |
3148 | dev_err(&adapter->pdev->dev, | 3153 | dev_err(&adapter->pdev->dev, |
3149 | "Firmware aborted with error code 0x00006700. " | 3154 | "Firmware aborted with error code 0x00006700. " |