Driver was not handling external loopback diagnostic test request.
Unified · Split
| @@ -150,6 +150,7 @@ static const char qlcnic_gstrings_test[][ETH_GSTRING_LEN] = { · 149 unmodified lines | ||
| 150 | 150 | "Link_Test_on_offline", |
| 151 | 151 | "Interrupt_Test_offline", |
| 152 | 152 | "Internal_Loopback_offline", |
| 153 | + "External_Loopback_offline", | |
| 153 | 154 | "EEPROM_Test_offline" |
| 154 | 155 | }; |
| 155 | 156 | |
| @@ -1026,8 +1027,15 @@ qlcnic_diag_test(struct net_device *dev, struct ethtool_test *eth_test, · 870 unmodified lines | ||
| 1026 | 1027 | if (data[3]) |
| 1027 | 1028 | eth_test->flags |= ETH_TEST_FL_FAILED; |
| 1028 | 1029 | |
| 1029 | − data[4] = qlcnic_eeprom_test(dev); | |
| 1030 | − if (data[4]) | |
| 1030 | + if (eth_test->flags & ETH_TEST_FL_EXTERNAL_LB) { | |
| 1031 | + data[4] = qlcnic_loopback_test(dev, QLCNIC_ELB_MODE); | |
| 1032 | + if (data[4]) | |
| 1033 | + eth_test->flags |= ETH_TEST_FL_FAILED; | |
| 1034 | + eth_test->flags |= ETH_TEST_FL_EXTERNAL_LB_DONE; | |
| 1035 | + } | |
| 1036 | + | |
| 1037 | + data[5] = qlcnic_eeprom_test(dev); | |
| 1038 | + if (data[5]) | |
| 1031 | 1039 | eth_test->flags |= ETH_TEST_FL_FAILED; |
| 1032 | 1040 | } |
| 1033 | 1041 | } |