ixgbe: refactor initialization of feature flags
This patch reshuffles the switch/case structure of the flag assignment to allow for the flags to be set for each MAC type separately. This is needed for new HW that does not have feature parity with older HW. Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com> Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com> Tested-by: Jack Morgan <jack.morgan@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
Родитель
a6053d76bd
Коммит
8fc3bb6daa
|
@ -4480,38 +4480,56 @@ static int ixgbe_sw_init(struct ixgbe_adapter *adapter)
|
||||||
hw->subsystem_vendor_id = pdev->subsystem_vendor;
|
hw->subsystem_vendor_id = pdev->subsystem_vendor;
|
||||||
hw->subsystem_device_id = pdev->subsystem_device;
|
hw->subsystem_device_id = pdev->subsystem_device;
|
||||||
|
|
||||||
/* Set capability flags */
|
/* Set common capability flags and settings */
|
||||||
rss = min_t(int, IXGBE_MAX_RSS_INDICES, num_online_cpus());
|
rss = min_t(int, IXGBE_MAX_RSS_INDICES, num_online_cpus());
|
||||||
adapter->ring_feature[RING_F_RSS].limit = rss;
|
adapter->ring_feature[RING_F_RSS].limit = rss;
|
||||||
|
adapter->flags2 |= IXGBE_FLAG2_RSC_CAPABLE;
|
||||||
|
adapter->flags2 |= IXGBE_FLAG2_RSC_ENABLED;
|
||||||
|
adapter->ring_feature[RING_F_FDIR].limit = IXGBE_MAX_FDIR_INDICES;
|
||||||
|
adapter->max_q_vectors = MAX_Q_VECTORS_82599;
|
||||||
|
adapter->atr_sample_rate = 20;
|
||||||
|
adapter->fdir_pballoc = IXGBE_FDIR_PBALLOC_64K;
|
||||||
|
#ifdef CONFIG_IXGBE_DCA
|
||||||
|
adapter->flags |= IXGBE_FLAG_DCA_CAPABLE;
|
||||||
|
#endif
|
||||||
|
#ifdef IXGBE_FCOE
|
||||||
|
adapter->flags |= IXGBE_FLAG_FCOE_CAPABLE;
|
||||||
|
adapter->flags &= ~IXGBE_FLAG_FCOE_ENABLED;
|
||||||
|
#ifdef CONFIG_IXGBE_DCB
|
||||||
|
/* Default traffic class to use for FCoE */
|
||||||
|
adapter->fcoe.up = IXGBE_FCOE_DEFTC;
|
||||||
|
#endif /* CONFIG_IXGBE_DCB */
|
||||||
|
#endif /* IXGBE_FCOE */
|
||||||
|
|
||||||
|
/* Set MAC specific capability flags and exceptions */
|
||||||
switch (hw->mac.type) {
|
switch (hw->mac.type) {
|
||||||
case ixgbe_mac_82598EB:
|
case ixgbe_mac_82598EB:
|
||||||
|
adapter->flags2 &= ~IXGBE_FLAG2_RSC_CAPABLE;
|
||||||
|
adapter->flags2 &= ~IXGBE_FLAG2_RSC_ENABLED;
|
||||||
|
|
||||||
if (hw->device_id == IXGBE_DEV_ID_82598AT)
|
if (hw->device_id == IXGBE_DEV_ID_82598AT)
|
||||||
adapter->flags |= IXGBE_FLAG_FAN_FAIL_CAPABLE;
|
adapter->flags |= IXGBE_FLAG_FAN_FAIL_CAPABLE;
|
||||||
|
|
||||||
adapter->max_q_vectors = MAX_Q_VECTORS_82598;
|
adapter->max_q_vectors = MAX_Q_VECTORS_82598;
|
||||||
|
adapter->ring_feature[RING_F_FDIR].limit = 0;
|
||||||
|
adapter->atr_sample_rate = 0;
|
||||||
|
adapter->fdir_pballoc = 0;
|
||||||
|
#ifdef IXGBE_FCOE
|
||||||
|
adapter->flags &= ~IXGBE_FLAG_FCOE_CAPABLE;
|
||||||
|
adapter->flags &= ~IXGBE_FLAG_FCOE_ENABLED;
|
||||||
|
#ifdef CONFIG_IXGBE_DCB
|
||||||
|
adapter->fcoe.up = 0;
|
||||||
|
#endif /* IXGBE_DCB */
|
||||||
|
#endif /* IXGBE_FCOE */
|
||||||
|
break;
|
||||||
|
case ixgbe_mac_82599EB:
|
||||||
|
if (hw->device_id == IXGBE_DEV_ID_82599_T3_LOM)
|
||||||
|
adapter->flags2 |= IXGBE_FLAG2_TEMP_SENSOR_CAPABLE;
|
||||||
break;
|
break;
|
||||||
case ixgbe_mac_X540:
|
case ixgbe_mac_X540:
|
||||||
fwsm = IXGBE_READ_REG(hw, IXGBE_FWSM);
|
fwsm = IXGBE_READ_REG(hw, IXGBE_FWSM);
|
||||||
if (fwsm & IXGBE_FWSM_TS_ENABLED)
|
if (fwsm & IXGBE_FWSM_TS_ENABLED)
|
||||||
adapter->flags2 |= IXGBE_FLAG2_TEMP_SENSOR_CAPABLE;
|
adapter->flags2 |= IXGBE_FLAG2_TEMP_SENSOR_CAPABLE;
|
||||||
case ixgbe_mac_82599EB:
|
|
||||||
adapter->max_q_vectors = MAX_Q_VECTORS_82599;
|
|
||||||
adapter->flags2 |= IXGBE_FLAG2_RSC_CAPABLE;
|
|
||||||
adapter->flags2 |= IXGBE_FLAG2_RSC_ENABLED;
|
|
||||||
if (hw->device_id == IXGBE_DEV_ID_82599_T3_LOM)
|
|
||||||
adapter->flags2 |= IXGBE_FLAG2_TEMP_SENSOR_CAPABLE;
|
|
||||||
/* Flow Director hash filters enabled */
|
|
||||||
adapter->atr_sample_rate = 20;
|
|
||||||
adapter->ring_feature[RING_F_FDIR].limit =
|
|
||||||
IXGBE_MAX_FDIR_INDICES;
|
|
||||||
adapter->fdir_pballoc = IXGBE_FDIR_PBALLOC_64K;
|
|
||||||
#ifdef IXGBE_FCOE
|
|
||||||
adapter->flags |= IXGBE_FLAG_FCOE_CAPABLE;
|
|
||||||
adapter->flags &= ~IXGBE_FLAG_FCOE_ENABLED;
|
|
||||||
#ifdef CONFIG_IXGBE_DCB
|
|
||||||
/* Default traffic class to use for FCoE */
|
|
||||||
adapter->fcoe.up = IXGBE_FCOE_DEFTC;
|
|
||||||
#endif
|
|
||||||
#endif /* IXGBE_FCOE */
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче