| From e33e36d0a1ef30afd24a47df84fe98658f780af5 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 24 Jun 2021 12:02:48 -0700 |
| Subject: e1000e: Check the PCIm state |
| |
| From: Sasha Neftin <sasha.neftin@intel.com> |
| |
| [ Upstream commit 2e7256f12cdb16eaa2515b6231d665044a07c51a ] |
| |
| Complete to commit def4ec6dce393e ("e1000e: PCIm function state support") |
| Check the PCIm state only on CSME systems. There is no point to do this |
| check on non CSME systems. |
| This patch fixes a generation a false-positive warning: |
| "Error in exiting dmoff" |
| |
| Fixes: def4ec6dce39 ("e1000e: PCIm function state support") |
| Signed-off-by: Sasha Neftin <sasha.neftin@intel.com> |
| Tested-by: Dvora Fuxbrumer <dvorax.fuxbrumer@linux.intel.com> |
| Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/intel/e1000e/netdev.c | 24 ++++++++++++---------- |
| 1 file changed, 13 insertions(+), 11 deletions(-) |
| |
| diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c |
| index a0948002ddf8..b3ad95ac3d85 100644 |
| --- a/drivers/net/ethernet/intel/e1000e/netdev.c |
| +++ b/drivers/net/ethernet/intel/e1000e/netdev.c |
| @@ -5222,18 +5222,20 @@ static void e1000_watchdog_task(struct work_struct *work) |
| pm_runtime_resume(netdev->dev.parent); |
| |
| /* Checking if MAC is in DMoff state*/ |
| - pcim_state = er32(STATUS); |
| - while (pcim_state & E1000_STATUS_PCIM_STATE) { |
| - if (tries++ == dmoff_exit_timeout) { |
| - e_dbg("Error in exiting dmoff\n"); |
| - break; |
| - } |
| - usleep_range(10000, 20000); |
| + if (er32(FWSM) & E1000_ICH_FWSM_FW_VALID) { |
| pcim_state = er32(STATUS); |
| - |
| - /* Checking if MAC exited DMoff state */ |
| - if (!(pcim_state & E1000_STATUS_PCIM_STATE)) |
| - e1000_phy_hw_reset(&adapter->hw); |
| + while (pcim_state & E1000_STATUS_PCIM_STATE) { |
| + if (tries++ == dmoff_exit_timeout) { |
| + e_dbg("Error in exiting dmoff\n"); |
| + break; |
| + } |
| + usleep_range(10000, 20000); |
| + pcim_state = er32(STATUS); |
| + |
| + /* Checking if MAC exited DMoff state */ |
| + if (!(pcim_state & E1000_STATUS_PCIM_STATE)) |
| + e1000_phy_hw_reset(&adapter->hw); |
| + } |
| } |
| |
| /* update snapshot of PHY registers on LSC */ |
| -- |
| 2.30.2 |
| |