net: dsa: mv88e6xxx: use bridge state values
authorVivien Didelot <vivien.didelot@savoirfairelinux.com>
Thu, 8 Jun 2017 22:34:10 +0000 (18:34 -0400)
committerDavid S. Miller <davem@davemloft.net>
Fri, 9 Jun 2017 16:10:58 +0000 (12:10 -0400)
Reuse the BR_STATE_* values to abstract a port STP state value.

This provides shorter names and better control over the DSA switch
operation call.

Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/mv88e6xxx/chip.c
drivers/net/dsa/mv88e6xxx/port.c

index b610429f7516c2a17c64aa085d3df22e9cbbb7b8..e25d48ecf880bcf99e769bee2679e2464067c26d 100644 (file)
@@ -915,28 +915,10 @@ static void mv88e6xxx_port_stp_state_set(struct dsa_switch *ds, int port,
                                         u8 state)
 {
        struct mv88e6xxx_chip *chip = ds->priv;
-       int stp_state;
        int err;
 
-       switch (state) {
-       case BR_STATE_DISABLED:
-               stp_state = PORT_CONTROL_STATE_DISABLED;
-               break;
-       case BR_STATE_BLOCKING:
-       case BR_STATE_LISTENING:
-               stp_state = PORT_CONTROL_STATE_BLOCKING;
-               break;
-       case BR_STATE_LEARNING:
-               stp_state = PORT_CONTROL_STATE_LEARNING;
-               break;
-       case BR_STATE_FORWARDING:
-       default:
-               stp_state = PORT_CONTROL_STATE_FORWARDING;
-               break;
-       }
-
        mutex_lock(&chip->reg_lock);
-       err = mv88e6xxx_port_set_state(chip, port, stp_state);
+       err = mv88e6xxx_port_set_state(chip, port, state);
        mutex_unlock(&chip->reg_lock);
 
        if (err)
@@ -1694,8 +1676,7 @@ static int mv88e6xxx_disable_ports(struct mv88e6xxx_chip *chip)
 
        /* Set all ports to the Disabled state */
        for (i = 0; i < mv88e6xxx_num_ports(chip); i++) {
-               err = mv88e6xxx_port_set_state(chip, i,
-                                              PORT_CONTROL_STATE_DISABLED);
+               err = mv88e6xxx_port_set_state(chip, i, BR_STATE_DISABLED);
                if (err)
                        return err;
        }
index 09e17131a6bdc174aff2d4dcbea04edb2ad9d404..46e73ca0ac4d5426f92a606d644727ef7b176572 100644 (file)
@@ -12,6 +12,7 @@
  * (at your option) any later version.
  */
 
+#include <linux/if_bridge.h>
 #include <linux/phy.h>
 
 #include "chip.h"
@@ -412,6 +413,25 @@ int mv88e6xxx_port_set_state(struct mv88e6xxx_chip *chip, int port, u8 state)
                return err;
 
        reg &= ~PORT_CONTROL_STATE_MASK;
+
+       switch (state) {
+       case BR_STATE_DISABLED:
+               state = PORT_CONTROL_STATE_DISABLED;
+               break;
+       case BR_STATE_BLOCKING:
+       case BR_STATE_LISTENING:
+               state = PORT_CONTROL_STATE_BLOCKING;
+               break;
+       case BR_STATE_LEARNING:
+               state = PORT_CONTROL_STATE_LEARNING;
+               break;
+       case BR_STATE_FORWARDING:
+               state = PORT_CONTROL_STATE_FORWARDING;
+               break;
+       default:
+               return -EINVAL;
+       }
+
        reg |= state;
 
        err = mv88e6xxx_port_write(chip, port, PORT_CONTROL, reg);