summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVivien Didelot <vivien.didelot@savoirfairelinux.com>2017-10-26 11:22:58 -0400
committerDavid S. Miller <davem@davemloft.net>2017-10-28 00:00:09 +0900
commitc38c5a66506e4e8223fd03e950b1bde99190701e (patch)
tree3e4fb0167bcaecb903f754b3df36bdf2b63572f9
parent057cad2c59d73b0c4a6638546f3099d6fb444094 (diff)
net: dsa: use new port type in helpers
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>
-rw-r--r--include/net/dsa.h27
1 files changed, 16 insertions, 11 deletions
diff --git a/include/net/dsa.h b/include/net/dsa.h
index 8da20c4a6552..07dfbd7f4fd5 100644
--- a/include/net/dsa.h
+++ b/include/net/dsa.h
@@ -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)