aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel/e1000e/ethtool.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/intel/e1000e/ethtool.c')
-rw-r--r--drivers/net/ethernet/intel/e1000e/ethtool.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/drivers/net/ethernet/intel/e1000e/ethtool.c b/drivers/net/ethernet/intel/e1000e/ethtool.c
index 4f1edd9c22f1..d863075df7a4 100644
--- a/drivers/net/ethernet/intel/e1000e/ethtool.c
+++ b/drivers/net/ethernet/intel/e1000e/ethtool.c
@@ -773,6 +773,7 @@ static int e1000_reg_test(struct e1000_adapter *adapter, u64 *data)
773 u32 i; 773 u32 i;
774 u32 toggle; 774 u32 toggle;
775 u32 mask; 775 u32 mask;
776 u32 wlock_mac = 0;
776 777
777 /* 778 /*
778 * The status register is Read Only, so a write should fail. 779 * The status register is Read Only, so a write should fail.
@@ -838,19 +839,31 @@ static int e1000_reg_test(struct e1000_adapter *adapter, u64 *data)
838 case e1000_ich10lan: 839 case e1000_ich10lan:
839 case e1000_pchlan: 840 case e1000_pchlan:
840 case e1000_pch2lan: 841 case e1000_pch2lan:
842 case e1000_pch_lpt:
841 mask |= (1 << 18); 843 mask |= (1 << 18);
842 break; 844 break;
843 default: 845 default:
844 break; 846 break;
845 } 847 }
846 for (i = 0; i < mac->rar_entry_count; i++) 848
849 if (mac->type == e1000_pch_lpt)
850 wlock_mac = (er32(FWSM) & E1000_FWSM_WLOCK_MAC_MASK) >>
851 E1000_FWSM_WLOCK_MAC_SHIFT;
852
853 for (i = 0; i < mac->rar_entry_count; i++) {
854 /* Cannot test write-protected SHRAL[n] registers */
855 if ((wlock_mac == 1) || (wlock_mac && (i > wlock_mac)))
856 continue;
857
847 REG_PATTERN_TEST_ARRAY(E1000_RA, ((i << 1) + 1), 858 REG_PATTERN_TEST_ARRAY(E1000_RA, ((i << 1) + 1),
848 mask, 0xFFFFFFFF); 859 mask, 0xFFFFFFFF);
860 }
849 861
850 for (i = 0; i < mac->mta_reg_count; i++) 862 for (i = 0; i < mac->mta_reg_count; i++)
851 REG_PATTERN_TEST_ARRAY(E1000_MTA, i, 0xFFFFFFFF, 0xFFFFFFFF); 863 REG_PATTERN_TEST_ARRAY(E1000_MTA, i, 0xFFFFFFFF, 0xFFFFFFFF);
852 864
853 *data = 0; 865 *data = 0;
866
854 return 0; 867 return 0;
855} 868}
856 869