Skip to content

Commit

Permalink
net: dsa: enable and disable all ports
Browse files Browse the repository at this point in the history
Call the .port_enable and .port_disable functions for all ports,
not only the user ports, so that drivers may optimize the power
consumption of all ports after a successful setup.

Unused ports are now disabled on setup. CPU and DSA ports are now
enabled on setup and disabled on teardown. User ports were already
enabled at slave creation and disabled at slave destruction.

Signed-off-by: Vivien Didelot <vivien.didelot@gmail.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Vivien Didelot authored and David S. Miller committed Aug 20, 2019
1 parent 74be4ba commit 0394a63
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions net/dsa/dsa2.c
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,7 @@ static int dsa_port_setup(struct dsa_port *dp)

switch (dp->type) {
case DSA_PORT_TYPE_UNUSED:
dsa_port_disable(dp);
break;
case DSA_PORT_TYPE_CPU:
memset(dlp, 0, sizeof(*dlp));
Expand All @@ -274,6 +275,10 @@ static int dsa_port_setup(struct dsa_port *dp)
return err;

err = dsa_port_link_register_of(dp);
if (err)
return err;

err = dsa_port_enable(dp, NULL);
if (err)
return err;
break;
Expand All @@ -286,6 +291,10 @@ static int dsa_port_setup(struct dsa_port *dp)
return err;

err = dsa_port_link_register_of(dp);
if (err)
return err;

err = dsa_port_enable(dp, NULL);
if (err)
return err;
break;
Expand Down Expand Up @@ -317,11 +326,13 @@ static void dsa_port_teardown(struct dsa_port *dp)
case DSA_PORT_TYPE_UNUSED:
break;
case DSA_PORT_TYPE_CPU:
dsa_port_disable(dp);
dsa_tag_driver_put(dp->tag_ops);
devlink_port_unregister(dlp);
dsa_port_link_unregister_of(dp);
break;
case DSA_PORT_TYPE_DSA:
dsa_port_disable(dp);
devlink_port_unregister(dlp);
dsa_port_link_unregister_of(dp);
break;
Expand Down

0 comments on commit 0394a63

Please sign in to comment.