|
@@ -5012,8 +5012,7 @@ static int i40e_init_pf_dcb(struct i40e_pf *pf)
|
|
|
int err = 0;
|
|
|
|
|
|
/* Do not enable DCB for SW1 and SW2 images even if the FW is capable */
|
|
|
- if (((pf->hw.aq.fw_maj_ver == 4) && (pf->hw.aq.fw_min_ver < 33)) ||
|
|
|
- (pf->hw.aq.fw_maj_ver < 4))
|
|
|
+ if (pf->flags & I40E_FLAG_NO_DCB_SUPPORT)
|
|
|
goto out;
|
|
|
|
|
|
/* Get the initial DCB configuration */
|
|
@@ -8425,11 +8424,25 @@ static int i40e_sw_init(struct i40e_pf *pf)
|
|
|
pf->hw.func_caps.fd_filters_best_effort;
|
|
|
}
|
|
|
|
|
|
- if (((pf->hw.mac.type == I40E_MAC_X710) ||
|
|
|
- (pf->hw.mac.type == I40E_MAC_XL710)) &&
|
|
|
+ if (i40e_is_mac_710(&pf->hw) &&
|
|
|
(((pf->hw.aq.fw_maj_ver == 4) && (pf->hw.aq.fw_min_ver < 33)) ||
|
|
|
- (pf->hw.aq.fw_maj_ver < 4)))
|
|
|
+ (pf->hw.aq.fw_maj_ver < 4))) {
|
|
|
pf->flags |= I40E_FLAG_RESTART_AUTONEG;
|
|
|
+ /* No DCB support for FW < v4.33 */
|
|
|
+ pf->flags |= I40E_FLAG_NO_DCB_SUPPORT;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* Disable FW LLDP if FW < v4.3 */
|
|
|
+ if (i40e_is_mac_710(&pf->hw) &&
|
|
|
+ (((pf->hw.aq.fw_maj_ver == 4) && (pf->hw.aq.fw_min_ver < 3)) ||
|
|
|
+ (pf->hw.aq.fw_maj_ver < 4)))
|
|
|
+ pf->flags |= I40E_FLAG_STOP_FW_LLDP;
|
|
|
+
|
|
|
+ /* Use the FW Set LLDP MIB API if FW > v4.40 */
|
|
|
+ if (i40e_is_mac_710(&pf->hw) &&
|
|
|
+ (((pf->hw.aq.fw_maj_ver == 4) && (pf->hw.aq.fw_min_ver >= 40)) ||
|
|
|
+ (pf->hw.aq.fw_maj_ver >= 5)))
|
|
|
+ pf->flags |= I40E_FLAG_USE_SET_LLDP_MIB;
|
|
|
|
|
|
if (pf->hw.func_caps.vmdq) {
|
|
|
pf->num_vmdq_vsis = I40E_DEFAULT_NUM_VMDQ_VSI;
|
|
@@ -8458,6 +8471,7 @@ static int i40e_sw_init(struct i40e_pf *pf)
|
|
|
I40E_FLAG_WB_ON_ITR_CAPABLE |
|
|
|
I40E_FLAG_MULTIPLE_TCP_UDP_RSS_PCTYPE |
|
|
|
I40E_FLAG_100M_SGMII_CAPABLE |
|
|
|
+ I40E_FLAG_USE_SET_LLDP_MIB |
|
|
|
I40E_FLAG_GENEVE_OFFLOAD_CAPABLE;
|
|
|
} else if ((pf->hw.aq.api_maj_ver > 1) ||
|
|
|
((pf->hw.aq.api_maj_ver == 1) &&
|
|
@@ -10825,8 +10839,7 @@ static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|
|
* Ignore error return codes because if it was already disabled via
|
|
|
* hardware settings this will fail
|
|
|
*/
|
|
|
- if (((pf->hw.aq.fw_maj_ver == 4) && (pf->hw.aq.fw_min_ver < 3)) ||
|
|
|
- (pf->hw.aq.fw_maj_ver < 4)) {
|
|
|
+ if (pf->flags & I40E_FLAG_STOP_FW_LLDP) {
|
|
|
dev_info(&pdev->dev, "Stopping firmware LLDP agent.\n");
|
|
|
i40e_aq_stop_lldp(hw, true, NULL);
|
|
|
}
|