Commit d49c83d7 authored by David S. Miller's avatar David S. Miller

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: default avatarDavid S. Miller <davem@davemloft.net>
parents 4c8e84b2 d6994ca7
...@@ -2276,7 +2276,7 @@ int qlcnic_83xx_get_nic_info(struct qlcnic_adapter *adapter, ...@@ -2276,7 +2276,7 @@ int qlcnic_83xx_get_nic_info(struct qlcnic_adapter *adapter,
temp = (cmd.rsp.arg[8] & 0x7FFE0000) >> 17; temp = (cmd.rsp.arg[8] & 0x7FFE0000) >> 17;
npar_info->max_linkspeed_reg_offset = temp; npar_info->max_linkspeed_reg_offset = temp;
} }
if (npar_info->capabilities & QLCNIC_FW_CAPABILITY_MORE_CAPS)
memcpy(ahw->extra_capability, &cmd.rsp.arg[16], memcpy(ahw->extra_capability, &cmd.rsp.arg[16],
sizeof(ahw->extra_capability)); sizeof(ahw->extra_capability));
......
...@@ -785,8 +785,6 @@ void qlcnic_82xx_config_intr_coalesce(struct qlcnic_adapter *adapter) ...@@ -785,8 +785,6 @@ void qlcnic_82xx_config_intr_coalesce(struct qlcnic_adapter *adapter)
#define QLCNIC_ENABLE_IPV4_LRO 1 #define QLCNIC_ENABLE_IPV4_LRO 1
#define QLCNIC_ENABLE_IPV6_LRO 2 #define QLCNIC_ENABLE_IPV6_LRO 2
#define QLCNIC_NO_DEST_IPV4_CHECK (1 << 8)
#define QLCNIC_NO_DEST_IPV6_CHECK (2 << 8)
int qlcnic_82xx_config_hw_lro(struct qlcnic_adapter *adapter, int enable) int qlcnic_82xx_config_hw_lro(struct qlcnic_adapter *adapter, int enable)
{ {
...@@ -806,11 +804,10 @@ int qlcnic_82xx_config_hw_lro(struct qlcnic_adapter *adapter, int enable) ...@@ -806,11 +804,10 @@ int qlcnic_82xx_config_hw_lro(struct qlcnic_adapter *adapter, int enable)
word = 0; word = 0;
if (enable) { if (enable) {
word = QLCNIC_ENABLE_IPV4_LRO | QLCNIC_NO_DEST_IPV4_CHECK; word = QLCNIC_ENABLE_IPV4_LRO;
if (adapter->ahw->extra_capability[0] & if (adapter->ahw->extra_capability[0] &
QLCNIC_FW_CAP2_HW_LRO_IPV6) QLCNIC_FW_CAP2_HW_LRO_IPV6)
word |= QLCNIC_ENABLE_IPV6_LRO | word |= QLCNIC_ENABLE_IPV6_LRO;
QLCNIC_NO_DEST_IPV6_CHECK;
} }
req.words[0] = cpu_to_le64(word); req.words[0] = cpu_to_le64(word);
......
...@@ -1131,7 +1131,10 @@ qlcnic_initialize_nic(struct qlcnic_adapter *adapter) ...@@ -1131,7 +1131,10 @@ qlcnic_initialize_nic(struct qlcnic_adapter *adapter)
if (err == -EIO) if (err == -EIO)
return err; return err;
adapter->ahw->extra_capability[0] = temp; adapter->ahw->extra_capability[0] = temp;
} else {
adapter->ahw->extra_capability[0] = 0;
} }
adapter->ahw->max_mac_filters = nic_info.max_mac_filters; adapter->ahw->max_mac_filters = nic_info.max_mac_filters;
adapter->ahw->max_mtu = nic_info.max_mtu; adapter->ahw->max_mtu = nic_info.max_mtu;
...@@ -2159,8 +2162,7 @@ void qlcnic_set_drv_version(struct qlcnic_adapter *adapter) ...@@ -2159,8 +2162,7 @@ void qlcnic_set_drv_version(struct qlcnic_adapter *adapter)
else if (qlcnic_83xx_check(adapter)) else if (qlcnic_83xx_check(adapter))
fw_cmd = QLCNIC_CMD_83XX_SET_DRV_VER; fw_cmd = QLCNIC_CMD_83XX_SET_DRV_VER;
if ((ahw->capabilities & QLCNIC_FW_CAPABILITY_MORE_CAPS) && if (ahw->extra_capability[0] & QLCNIC_FW_CAPABILITY_SET_DRV_VER)
(ahw->extra_capability[0] & QLCNIC_FW_CAPABILITY_SET_DRV_VER))
qlcnic_fw_cmd_set_drv_version(adapter, fw_cmd); qlcnic_fw_cmd_set_drv_version(adapter, fw_cmd);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment