OSDN Git Service

net: dsa: use new port type in helpers
authorVivien Didelot <vivien.didelot@savoirfairelinux.com>
Thu, 26 Oct 2017 15:22:58 +0000 (11:22 -0400)
committerDavid S. Miller <davem@davemloft.net>
Fri, 27 Oct 2017 15:00:09 +0000 (00:00 +0900)
Now that DSA exposes an enumerated type for the ports, we can use them
directly instead of checking bitmaps, which is more consistent.

Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/dsa.h

index 8da20c4..07dfbd7 100644 (file)
@@ -261,36 +261,41 @@ struct dsa_switch {
        struct dsa_port ports[];
 };
 
-static inline bool dsa_is_unused_port(struct dsa_switch *ds, int p)
+static inline const struct dsa_port *dsa_to_port(struct dsa_switch *ds, int p)
 {
-       u32 m = ds->enabled_port_mask | ds->dsa_port_mask | ds->cpu_port_mask;
+       return &ds->ports[p];
+}
 
-       return !(m & BIT(p));
+static inline bool dsa_is_unused_port(struct dsa_switch *ds, int p)
+{
+       return dsa_to_port(ds, p)->type == DSA_PORT_TYPE_UNUSED;
 }
 
 static inline bool dsa_is_cpu_port(struct dsa_switch *ds, int p)
 {
-       return !!(ds->cpu_port_mask & (1 << p));
+       return dsa_to_port(ds, p)->type == DSA_PORT_TYPE_CPU;
 }
 
 static inline bool dsa_is_dsa_port(struct dsa_switch *ds, int p)
 {
-       return !!((ds->dsa_port_mask) & (1 << p));
+       return dsa_to_port(ds, p)->type == DSA_PORT_TYPE_DSA;
 }
 
 static inline bool dsa_is_user_port(struct dsa_switch *ds, int p)
 {
-       return !!(ds->enabled_port_mask & BIT(p));
+       return dsa_to_port(ds, p)->type == DSA_PORT_TYPE_USER;
 }
 
 static inline u32 dsa_user_ports(struct dsa_switch *ds)
 {
-       return ds->enabled_port_mask;
-}
+       u32 mask = 0;
+       int p;
 
-static inline const struct dsa_port *dsa_to_port(struct dsa_switch *ds, int p)
-{
-       return &ds->ports[p];
+       for (p = 0; p < ds->num_ports; p++)
+               if (dsa_is_user_port(ds, p))
+                       mask |= BIT(p);
+
+       return mask;
 }
 
 static inline u8 dsa_upstream_port(struct dsa_switch *ds)