From: Vivien Didelot Date: Thu, 26 Oct 2017 15:22:51 +0000 (-0400) Subject: net: dsa: add dsa_is_unused_port helper X-Git-Tag: v4.15~390^2~280^2~8 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=bff7b688d5b10a8cb8cecefdea5e255408b78f2f;p=mirror_ubuntu-bionic-kernel.git net: dsa: add dsa_is_unused_port helper As the comment above the chunk states, the b53 driver attempts to disable the unused ports. But using ds->enabled_port_mask is misleading, because this mask reports in fact the user ports. To avoid confusion and fix this, this patch introduces an explicit dsa_is_unused_port helper which ensures the corresponding bit is not masked in any of the switch port masks. Signed-off-by: Vivien Didelot Reviewed-by: Florian Fainelli Signed-off-by: David S. Miller --- diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c index b48cf0487b43..c74a50112551 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -873,7 +873,7 @@ static int b53_setup(struct dsa_switch *ds) for (port = 0; port < dev->num_ports; port++) { if (dsa_is_cpu_port(ds, port)) b53_enable_cpu_port(dev, port); - else if (!(BIT(port) & ds->enabled_port_mask)) + else if (dsa_is_unused_port(ds, port)) b53_disable_port(ds, port, NULL); } diff --git a/include/net/dsa.h b/include/net/dsa.h index 38961ef91d3d..6b1bc1c8f7e2 100644 --- a/include/net/dsa.h +++ b/include/net/dsa.h @@ -254,6 +254,13 @@ struct dsa_switch { struct dsa_port ports[]; }; +static inline bool dsa_is_unused_port(struct dsa_switch *ds, int p) +{ + u32 m = ds->enabled_port_mask | ds->dsa_port_mask | ds->cpu_port_mask; + + return !(m & BIT(p)); +} + static inline bool dsa_is_cpu_port(struct dsa_switch *ds, int p) { return !!(ds->cpu_port_mask & (1 << p));