diff options
Diffstat (limited to 'drivers/net/e1000e/ethtool.c')
-rw-r--r-- | drivers/net/e1000e/ethtool.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/drivers/net/e1000e/ethtool.c b/drivers/net/e1000e/ethtool.c index e21c9e0f3738..a89498dcb636 100644 --- a/drivers/net/e1000e/ethtool.c +++ b/drivers/net/e1000e/ethtool.c | |||
@@ -781,6 +781,7 @@ static int e1000_reg_test(struct e1000_adapter *adapter, u64 *data) | |||
781 | case e1000_82573: | 781 | case e1000_82573: |
782 | case e1000_ich8lan: | 782 | case e1000_ich8lan: |
783 | case e1000_ich9lan: | 783 | case e1000_ich9lan: |
784 | case e1000_ich10lan: | ||
784 | toggle = 0x7FFFF033; | 785 | toggle = 0x7FFFF033; |
785 | break; | 786 | break; |
786 | default: | 787 | default: |
@@ -833,7 +834,9 @@ static int e1000_reg_test(struct e1000_adapter *adapter, u64 *data) | |||
833 | REG_PATTERN_TEST(E1000_TIDV, 0x0000FFFF, 0x0000FFFF); | 834 | REG_PATTERN_TEST(E1000_TIDV, 0x0000FFFF, 0x0000FFFF); |
834 | for (i = 0; i < mac->rar_entry_count; i++) | 835 | for (i = 0; i < mac->rar_entry_count; i++) |
835 | REG_PATTERN_TEST_ARRAY(E1000_RA, ((i << 1) + 1), | 836 | REG_PATTERN_TEST_ARRAY(E1000_RA, ((i << 1) + 1), |
836 | 0x8003FFFF, 0xFFFFFFFF); | 837 | ((mac->type == e1000_ich10lan) ? |
838 | 0x8007FFFF : 0x8003FFFF), | ||
839 | 0xFFFFFFFF); | ||
837 | 840 | ||
838 | for (i = 0; i < mac->mta_reg_count; i++) | 841 | for (i = 0; i < mac->mta_reg_count; i++) |
839 | REG_PATTERN_TEST_ARRAY(E1000_MTA, i, 0xFFFFFFFF, 0xFFFFFFFF); | 842 | REG_PATTERN_TEST_ARRAY(E1000_MTA, i, 0xFFFFFFFF, 0xFFFFFFFF); |
@@ -905,12 +908,23 @@ static int e1000_intr_test(struct e1000_adapter *adapter, u64 *data) | |||
905 | 908 | ||
906 | /* Test each interrupt */ | 909 | /* Test each interrupt */ |
907 | for (i = 0; i < 10; i++) { | 910 | for (i = 0; i < 10; i++) { |
908 | if ((adapter->flags & FLAG_IS_ICH) && (i == 8)) | ||
909 | continue; | ||
910 | |||
911 | /* Interrupt to test */ | 911 | /* Interrupt to test */ |
912 | mask = 1 << i; | 912 | mask = 1 << i; |
913 | 913 | ||
914 | if (adapter->flags & FLAG_IS_ICH) { | ||
915 | switch (mask) { | ||
916 | case E1000_ICR_RXSEQ: | ||
917 | continue; | ||
918 | case 0x00000100: | ||
919 | if (adapter->hw.mac.type == e1000_ich8lan || | ||
920 | adapter->hw.mac.type == e1000_ich9lan) | ||
921 | continue; | ||
922 | break; | ||
923 | default: | ||
924 | break; | ||
925 | } | ||
926 | } | ||
927 | |||
914 | if (!shared_int) { | 928 | if (!shared_int) { |
915 | /* | 929 | /* |
916 | * Disable the interrupt to be reported in | 930 | * Disable the interrupt to be reported in |