diff options
author | Shahed Shaikh <shahed.shaikh@qlogic.com> | 2013-10-25 10:38:37 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-10-26 00:04:49 -0400 |
commit | d6994ca798f5897a4342f727b21d77e01d92f093 (patch) | |
tree | 18769c24f318e7981bbf13759a4a9cfa9c2fc0cb | |
parent | 598c45b309eb401510653fed45fe74efae93be4e (diff) |
qlcnic: Do not read QLCNIC_FW_CAPABILITY_MORE_CAPS bit for 83xx adapter
Only 82xx adapter advertises QLCNIC_FW_CAPABILITY_MORE_CAPS bit.
Reading this bit from 83xx adapter causes the driver to skip
extra capabilities registers.
Because of this, driver was not issuing qlcnic_fw_cmd_set_drv_version()
for 83xx adapter.
This bug was introduced in commit 8af3f33db05c6d0146ad14905145a5c923770856
("qlcnic: Add support for 'set driver version' in 83XX").
Signed-off-by: Shahed Shaikh <shahed.shaikh@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c | 6 | ||||
-rw-r--r-- | drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | 6 |
2 files changed, 7 insertions, 5 deletions
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c index 3ca00e05f23d..ace217c447dd 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c | |||
@@ -2276,9 +2276,9 @@ int qlcnic_83xx_get_nic_info(struct qlcnic_adapter *adapter, | |||
2276 | temp = (cmd.rsp.arg[8] & 0x7FFE0000) >> 17; | 2276 | temp = (cmd.rsp.arg[8] & 0x7FFE0000) >> 17; |
2277 | npar_info->max_linkspeed_reg_offset = temp; | 2277 | npar_info->max_linkspeed_reg_offset = temp; |
2278 | } | 2278 | } |
2279 | if (npar_info->capabilities & QLCNIC_FW_CAPABILITY_MORE_CAPS) | 2279 | |
2280 | memcpy(ahw->extra_capability, &cmd.rsp.arg[16], | 2280 | memcpy(ahw->extra_capability, &cmd.rsp.arg[16], |
2281 | sizeof(ahw->extra_capability)); | 2281 | sizeof(ahw->extra_capability)); |
2282 | 2282 | ||
2283 | out: | 2283 | out: |
2284 | qlcnic_free_mbx_args(&cmd); | 2284 | qlcnic_free_mbx_args(&cmd); |
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c index 9e61eb867452..d8f4897e9e82 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | |||
@@ -1131,7 +1131,10 @@ qlcnic_initialize_nic(struct qlcnic_adapter *adapter) | |||
1131 | if (err == -EIO) | 1131 | if (err == -EIO) |
1132 | return err; | 1132 | return err; |
1133 | adapter->ahw->extra_capability[0] = temp; | 1133 | adapter->ahw->extra_capability[0] = temp; |
1134 | } else { | ||
1135 | adapter->ahw->extra_capability[0] = 0; | ||
1134 | } | 1136 | } |
1137 | |||
1135 | adapter->ahw->max_mac_filters = nic_info.max_mac_filters; | 1138 | adapter->ahw->max_mac_filters = nic_info.max_mac_filters; |
1136 | adapter->ahw->max_mtu = nic_info.max_mtu; | 1139 | adapter->ahw->max_mtu = nic_info.max_mtu; |
1137 | 1140 | ||
@@ -2159,8 +2162,7 @@ void qlcnic_set_drv_version(struct qlcnic_adapter *adapter) | |||
2159 | else if (qlcnic_83xx_check(adapter)) | 2162 | else if (qlcnic_83xx_check(adapter)) |
2160 | fw_cmd = QLCNIC_CMD_83XX_SET_DRV_VER; | 2163 | fw_cmd = QLCNIC_CMD_83XX_SET_DRV_VER; |
2161 | 2164 | ||
2162 | if ((ahw->capabilities & QLCNIC_FW_CAPABILITY_MORE_CAPS) && | 2165 | if (ahw->extra_capability[0] & QLCNIC_FW_CAPABILITY_SET_DRV_VER) |
2163 | (ahw->extra_capability[0] & QLCNIC_FW_CAPABILITY_SET_DRV_VER)) | ||
2164 | qlcnic_fw_cmd_set_drv_version(adapter, fw_cmd); | 2166 | qlcnic_fw_cmd_set_drv_version(adapter, fw_cmd); |
2165 | } | 2167 | } |
2166 | 2168 | ||