qlcnic: Fix max ring count calculation
Do not read max rings count from qlcnic_get_nic_info(). Use driver defined values for 82xx adapters. In case of 83xx adapters, use minimum of firmware provided and driver defined values. Signed-off-by: Shahed Shaikh <shahed.shaikh@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
4d52e1e8d1
commit
7b546842b1
@@ -2139,8 +2139,6 @@ static int qlcnic_83xx_get_nic_configuration(struct qlcnic_adapter *adapter)
|
|||||||
ahw->max_mac_filters = nic_info.max_mac_filters;
|
ahw->max_mac_filters = nic_info.max_mac_filters;
|
||||||
ahw->max_mtu = nic_info.max_mtu;
|
ahw->max_mtu = nic_info.max_mtu;
|
||||||
|
|
||||||
adapter->max_tx_rings = ahw->max_tx_ques;
|
|
||||||
adapter->max_sds_rings = ahw->max_rx_ques;
|
|
||||||
/* eSwitch capability indicates vNIC mode.
|
/* eSwitch capability indicates vNIC mode.
|
||||||
* vNIC and SRIOV are mutually exclusive operational modes.
|
* vNIC and SRIOV are mutually exclusive operational modes.
|
||||||
* If SR-IOV capability is detected, SR-IOV physical function
|
* If SR-IOV capability is detected, SR-IOV physical function
|
||||||
@@ -2161,6 +2159,7 @@ static int qlcnic_83xx_get_nic_configuration(struct qlcnic_adapter *adapter)
|
|||||||
int qlcnic_83xx_configure_opmode(struct qlcnic_adapter *adapter)
|
int qlcnic_83xx_configure_opmode(struct qlcnic_adapter *adapter)
|
||||||
{
|
{
|
||||||
struct qlcnic_hardware_context *ahw = adapter->ahw;
|
struct qlcnic_hardware_context *ahw = adapter->ahw;
|
||||||
|
u16 max_sds_rings, max_tx_rings;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = qlcnic_83xx_get_nic_configuration(adapter);
|
ret = qlcnic_83xx_get_nic_configuration(adapter);
|
||||||
@@ -2173,18 +2172,21 @@ int qlcnic_83xx_configure_opmode(struct qlcnic_adapter *adapter)
|
|||||||
if (qlcnic_83xx_config_vnic_opmode(adapter))
|
if (qlcnic_83xx_config_vnic_opmode(adapter))
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
|
||||||
adapter->max_sds_rings = QLCNIC_MAX_VNIC_SDS_RINGS;
|
max_sds_rings = QLCNIC_MAX_VNIC_SDS_RINGS;
|
||||||
adapter->max_tx_rings = QLCNIC_MAX_VNIC_TX_RINGS;
|
max_tx_rings = QLCNIC_MAX_VNIC_TX_RINGS;
|
||||||
} else if (ret == QLC_83XX_DEFAULT_OPMODE) {
|
} else if (ret == QLC_83XX_DEFAULT_OPMODE) {
|
||||||
ahw->nic_mode = QLCNIC_DEFAULT_MODE;
|
ahw->nic_mode = QLCNIC_DEFAULT_MODE;
|
||||||
adapter->nic_ops->init_driver = qlcnic_83xx_init_default_driver;
|
adapter->nic_ops->init_driver = qlcnic_83xx_init_default_driver;
|
||||||
ahw->idc.state_entry = qlcnic_83xx_idc_ready_state_entry;
|
ahw->idc.state_entry = qlcnic_83xx_idc_ready_state_entry;
|
||||||
adapter->max_sds_rings = QLCNIC_MAX_SDS_RINGS;
|
max_sds_rings = QLCNIC_MAX_SDS_RINGS;
|
||||||
adapter->max_tx_rings = QLCNIC_MAX_TX_RINGS;
|
max_tx_rings = QLCNIC_MAX_TX_RINGS;
|
||||||
} else {
|
} else {
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
adapter->max_sds_rings = min(ahw->max_rx_ques, max_sds_rings);
|
||||||
|
adapter->max_tx_rings = min(ahw->max_tx_ques, max_tx_rings);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -883,8 +883,6 @@ int qlcnic_82xx_get_nic_info(struct qlcnic_adapter *adapter,
|
|||||||
npar_info->max_rx_ques = le16_to_cpu(nic_info->max_rx_ques);
|
npar_info->max_rx_ques = le16_to_cpu(nic_info->max_rx_ques);
|
||||||
npar_info->capabilities = le32_to_cpu(nic_info->capabilities);
|
npar_info->capabilities = le32_to_cpu(nic_info->capabilities);
|
||||||
npar_info->max_mtu = le16_to_cpu(nic_info->max_mtu);
|
npar_info->max_mtu = le16_to_cpu(nic_info->max_mtu);
|
||||||
adapter->max_tx_rings = npar_info->max_tx_ques;
|
|
||||||
adapter->max_sds_rings = npar_info->max_rx_ques;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
qlcnic_free_mbx_args(&cmd);
|
qlcnic_free_mbx_args(&cmd);
|
||||||
|
Reference in New Issue
Block a user