net: dsa: enable selftest support for all switches by default
Most of generic selftest should be able to work with probably all ethernet controllers. The DSA switches are not exception, so enable it by default at least for DSA. This patch was tested with SJA1105 and AR9331. Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
b62a12fc04
commit
a71acad90a
@@ -15,6 +15,7 @@
|
||||
#include <linux/mdio.h>
|
||||
#include <net/rtnetlink.h>
|
||||
#include <net/pkt_cls.h>
|
||||
#include <net/selftests.h>
|
||||
#include <net/tc_act/tc_mirred.h>
|
||||
#include <linux/if_bridge.h>
|
||||
#include <linux/if_hsr.h>
|
||||
@@ -748,7 +749,10 @@ static void dsa_slave_get_strings(struct net_device *dev,
|
||||
if (ds->ops->get_strings)
|
||||
ds->ops->get_strings(ds, dp->index, stringset,
|
||||
data + 4 * len);
|
||||
} else if (stringset == ETH_SS_TEST) {
|
||||
net_selftest_get_strings(data);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static void dsa_slave_get_ethtool_stats(struct net_device *dev,
|
||||
@@ -794,11 +798,27 @@ static int dsa_slave_get_sset_count(struct net_device *dev, int sset)
|
||||
count += ds->ops->get_sset_count(ds, dp->index, sset);
|
||||
|
||||
return count;
|
||||
} else if (sset == ETH_SS_TEST) {
|
||||
return net_selftest_get_count();
|
||||
}
|
||||
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
static void dsa_slave_net_selftest(struct net_device *ndev,
|
||||
struct ethtool_test *etest, u64 *buf)
|
||||
{
|
||||
struct dsa_port *dp = dsa_slave_to_port(ndev);
|
||||
struct dsa_switch *ds = dp->ds;
|
||||
|
||||
if (ds->ops->self_test) {
|
||||
ds->ops->self_test(ds, dp->index, etest, buf);
|
||||
return;
|
||||
}
|
||||
|
||||
net_selftest(ndev, etest, buf);
|
||||
}
|
||||
|
||||
static void dsa_slave_get_wol(struct net_device *dev, struct ethtool_wolinfo *w)
|
||||
{
|
||||
struct dsa_port *dp = dsa_slave_to_port(dev);
|
||||
@@ -1630,6 +1650,7 @@ static const struct ethtool_ops dsa_slave_ethtool_ops = {
|
||||
.get_rxnfc = dsa_slave_get_rxnfc,
|
||||
.set_rxnfc = dsa_slave_set_rxnfc,
|
||||
.get_ts_info = dsa_slave_get_ts_info,
|
||||
.self_test = dsa_slave_net_selftest,
|
||||
};
|
||||
|
||||
/* legacy way, bypassing the bridge *****************************************/
|
||||
|
||||
Reference in New Issue
Block a user