i40e: Detect ATR HW Evict NVM issue and disable the feature
authorAnjali Singhai Jain <anjali.singhai@intel.com>
Fri, 23 Jun 2017 08:24:48 +0000 (04:24 -0400)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Fri, 25 Aug 2017 21:46:26 +0000 (14:46 -0700)
This patch fixes a problem with the HW ATR eviction feature where the
NVM setting was incorrect.  This patch detects the issue on X720
adapters and disables the feature if the NVM setting is incorrect.

Without this patch, HW ATR Evict feature does not work on broken NVMs
and is not detected either.  If the HW ATR Evict feature is disabled
the SW Eviction feature will take effect.

Signed-off-by: Anjali Singhai Jain <anjali.singhai@intel.com>
Signed-off-by: Alice Michael <alice.michael@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/i40e/i40e_main.c

index 4d1eb0c19028beaea679e486108a795508141394..6a59d9367a2a56f59bc5effdfbc248baaab8bc0b 100644 (file)
@@ -8963,6 +8963,14 @@ static int i40e_sw_init(struct i40e_pf *pf)
                                    I40E_HW_PTP_L4_CAPABLE |
                                    I40E_HW_WOL_MC_MAGIC_PKT_WAKE |
                                    I40E_HW_OUTER_UDP_CSUM_CAPABLE);
+
+#define I40E_FDEVICT_PCTYPE_DEFAULT 0xc03
+               if (rd32(&pf->hw, I40E_GLQF_FDEVICTENA(1)) !=
+                   I40E_FDEVICT_PCTYPE_DEFAULT) {
+                       dev_warn(&pf->pdev->dev,
+                                "FD EVICT PCTYPES are not right, disable FD HW EVICT\n");
+                       pf->hw_features &= ~I40E_HW_ATR_EVICT_CAPABLE;
+               }
        } else if ((pf->hw.aq.api_maj_ver > 1) ||
                   ((pf->hw.aq.api_maj_ver == 1) &&
                    (pf->hw.aq.api_min_ver > 4))) {