mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-25 16:11:45 +00:00
net: dsa: move master ethtool code
DSA overrides the master device ethtool ops, so that it can inject stats from its dedicated switch CPU port as well. The related code is currently split in dsa.c and slave.c, but it only scopes the master net device. Move it to a new master.c DSA core file. This file will be later extented with master net device specific code. Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
1943563dfd
commit
f2f2356685
7 changed files with 129 additions and 119 deletions
|
@ -112,34 +112,6 @@ const struct dsa_device_ops *dsa_resolve_tag_protocol(int tag_protocol)
|
|||
return ops;
|
||||
}
|
||||
|
||||
int dsa_cpu_port_ethtool_setup(struct dsa_port *cpu_dp)
|
||||
{
|
||||
struct dsa_switch *ds = cpu_dp->ds;
|
||||
struct net_device *master;
|
||||
struct ethtool_ops *cpu_ops;
|
||||
|
||||
master = cpu_dp->netdev;
|
||||
|
||||
cpu_ops = devm_kzalloc(ds->dev, sizeof(*cpu_ops), GFP_KERNEL);
|
||||
if (!cpu_ops)
|
||||
return -ENOMEM;
|
||||
|
||||
cpu_dp->orig_ethtool_ops = master->ethtool_ops;
|
||||
if (cpu_dp->orig_ethtool_ops)
|
||||
memcpy(cpu_ops, cpu_dp->orig_ethtool_ops, sizeof(*cpu_ops));
|
||||
|
||||
dsa_cpu_port_ethtool_init(cpu_ops);
|
||||
master->ethtool_ops = cpu_ops;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void dsa_cpu_port_ethtool_restore(struct dsa_port *cpu_dp)
|
||||
{
|
||||
cpu_dp->netdev->ethtool_ops = cpu_dp->orig_ethtool_ops;
|
||||
cpu_dp->orig_ethtool_ops = NULL;
|
||||
}
|
||||
|
||||
void dsa_cpu_dsa_destroy(struct dsa_port *port)
|
||||
{
|
||||
struct device_node *port_dn = port->dn;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue