forcedeth: run loopback test only on chipsets that support it
The driver incorrectly run loopback test on chips that don't support it. Loopback test is only supported by chips that has DEV_HAS_TEST_EXTENDED flag and returns 4 (NV_TEST_COUNT_EXTENDED) as test count. Signed-off-by: Ivan Vecera <ivecera@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
89015c18ff
commit
86d9be263a
|
@ -5150,8 +5150,10 @@ static void nv_self_test(struct net_device *dev, struct ethtool_test *test, u64
|
|||
{
|
||||
struct fe_priv *np = netdev_priv(dev);
|
||||
u8 __iomem *base = get_hwbase(dev);
|
||||
int result;
|
||||
memset(buffer, 0, nv_get_sset_count(dev, ETH_SS_TEST)*sizeof(u64));
|
||||
int result, count;
|
||||
|
||||
count = nv_get_sset_count(dev, ETH_SS_TEST);
|
||||
memset(buffer, 0, count * sizeof(u64));
|
||||
|
||||
if (!nv_link_test(dev)) {
|
||||
test->flags |= ETH_TEST_FL_FAILED;
|
||||
|
@ -5195,7 +5197,7 @@ static void nv_self_test(struct net_device *dev, struct ethtool_test *test, u64
|
|||
return;
|
||||
}
|
||||
|
||||
if (!nv_loopback_test(dev)) {
|
||||
if (count > NV_TEST_COUNT_BASE && !nv_loopback_test(dev)) {
|
||||
test->flags |= ETH_TEST_FL_FAILED;
|
||||
buffer[3] = 1;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue