diff options
| author | David S. Miller <davem@davemloft.net> | 2013-10-26 00:05:26 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2013-10-26 00:05:26 -0400 |
| commit | d49c83d7ab38891e2072b42f09a0c06af2bca84e (patch) | |
| tree | 18769c24f318e7981bbf13759a4a9cfa9c2fc0cb | |
| parent | 4c8e84b22aa1bfee40b047d7810ba08615235c05 (diff) | |
| parent | d6994ca798f5897a4342f727b21d77e01d92f093 (diff) | |
Merge branch 'qlcnic'
Shahed Shaikh says:
====================
qlcnic: Bug fixes
This patch series contains following fixes-
* Performace drop because driver was forcing adapter not to check
destination IP for LRO.
* driver was not issuing qlcnic_fw_cmd_set_drv_version() to 83xx adapter
becasue of improper handling of QLCNIC_FW_CAPABILITY_MORE_CAPS bit.
====================
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_hw.c | 7 | ||||
| -rw-r--r-- | drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | 6 |
3 files changed, 9 insertions, 10 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_hw.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_hw.c index f8adc7b01f1f..b64e2bef9428 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_hw.c +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_hw.c | |||
| @@ -785,8 +785,6 @@ void qlcnic_82xx_config_intr_coalesce(struct qlcnic_adapter *adapter) | |||
| 785 | 785 | ||
| 786 | #define QLCNIC_ENABLE_IPV4_LRO 1 | 786 | #define QLCNIC_ENABLE_IPV4_LRO 1 |
| 787 | #define QLCNIC_ENABLE_IPV6_LRO 2 | 787 | #define QLCNIC_ENABLE_IPV6_LRO 2 |
| 788 | #define QLCNIC_NO_DEST_IPV4_CHECK (1 << 8) | ||
| 789 | #define QLCNIC_NO_DEST_IPV6_CHECK (2 << 8) | ||
| 790 | 788 | ||
| 791 | int qlcnic_82xx_config_hw_lro(struct qlcnic_adapter *adapter, int enable) | 789 | int qlcnic_82xx_config_hw_lro(struct qlcnic_adapter *adapter, int enable) |
| 792 | { | 790 | { |
| @@ -806,11 +804,10 @@ int qlcnic_82xx_config_hw_lro(struct qlcnic_adapter *adapter, int enable) | |||
| 806 | 804 | ||
| 807 | word = 0; | 805 | word = 0; |
| 808 | if (enable) { | 806 | if (enable) { |
| 809 | word = QLCNIC_ENABLE_IPV4_LRO | QLCNIC_NO_DEST_IPV4_CHECK; | 807 | word = QLCNIC_ENABLE_IPV4_LRO; |
| 810 | if (adapter->ahw->extra_capability[0] & | 808 | if (adapter->ahw->extra_capability[0] & |
| 811 | QLCNIC_FW_CAP2_HW_LRO_IPV6) | 809 | QLCNIC_FW_CAP2_HW_LRO_IPV6) |
| 812 | word |= QLCNIC_ENABLE_IPV6_LRO | | 810 | word |= QLCNIC_ENABLE_IPV6_LRO; |
| 813 | QLCNIC_NO_DEST_IPV6_CHECK; | ||
| 814 | } | 811 | } |
| 815 | 812 | ||
| 816 | req.words[0] = cpu_to_le64(word); | 813 | req.words[0] = cpu_to_le64(word); |
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 | ||
