|
@@ -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_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.
|
|
|
* vNIC and SRIOV are mutually exclusive operational modes.
|
|
|
* 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)
|
|
|
{
|
|
|
struct qlcnic_hardware_context *ahw = adapter->ahw;
|
|
|
+ u16 max_sds_rings, max_tx_rings;
|
|
|
int ret;
|
|
|
|
|
|
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))
|
|
|
return -EIO;
|
|
|
|
|
|
- adapter->max_sds_rings = QLCNIC_MAX_VNIC_SDS_RINGS;
|
|
|
- adapter->max_tx_rings = QLCNIC_MAX_VNIC_TX_RINGS;
|
|
|
+ max_sds_rings = QLCNIC_MAX_VNIC_SDS_RINGS;
|
|
|
+ max_tx_rings = QLCNIC_MAX_VNIC_TX_RINGS;
|
|
|
} else if (ret == QLC_83XX_DEFAULT_OPMODE) {
|
|
|
ahw->nic_mode = QLCNIC_DEFAULT_MODE;
|
|
|
adapter->nic_ops->init_driver = qlcnic_83xx_init_default_driver;
|
|
|
ahw->idc.state_entry = qlcnic_83xx_idc_ready_state_entry;
|
|
|
- adapter->max_sds_rings = QLCNIC_MAX_SDS_RINGS;
|
|
|
- adapter->max_tx_rings = QLCNIC_MAX_TX_RINGS;
|
|
|
+ max_sds_rings = QLCNIC_MAX_SDS_RINGS;
|
|
|
+ max_tx_rings = QLCNIC_MAX_TX_RINGS;
|
|
|
} else {
|
|
|
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;
|
|
|
}
|
|
|
|
|
@@ -2348,15 +2350,16 @@ int qlcnic_83xx_init(struct qlcnic_adapter *adapter, int pci_using_dac)
|
|
|
goto disable_intr;
|
|
|
}
|
|
|
|
|
|
+ INIT_DELAYED_WORK(&adapter->idc_aen_work, qlcnic_83xx_idc_aen_work);
|
|
|
+
|
|
|
err = qlcnic_83xx_setup_mbx_intr(adapter);
|
|
|
if (err)
|
|
|
goto disable_mbx_intr;
|
|
|
|
|
|
qlcnic_83xx_clear_function_resources(adapter);
|
|
|
-
|
|
|
- INIT_DELAYED_WORK(&adapter->idc_aen_work, qlcnic_83xx_idc_aen_work);
|
|
|
-
|
|
|
+ qlcnic_dcb_enable(adapter->dcb);
|
|
|
qlcnic_83xx_initialize_nic(adapter, 1);
|
|
|
+ qlcnic_dcb_get_info(adapter->dcb);
|
|
|
|
|
|
/* Configure default, SR-IOV or Virtual NIC mode of operation */
|
|
|
err = qlcnic_83xx_configure_opmode(adapter);
|