aboutsummaryrefslogtreecommitdiff
path: root/drivers/net/dsa/b53/b53_common.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/dsa/b53/b53_common.c')
-rw-r--r--drivers/net/dsa/b53/b53_common.c32
1 files changed, 13 insertions, 19 deletions
diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c
index 44a9a03bff55..f72aeb9ed12a 100644
--- a/drivers/net/dsa/b53/b53_common.c
+++ b/drivers/net/dsa/b53/b53_common.c
@@ -541,7 +541,8 @@ EXPORT_SYMBOL(b53_disable_port);
void b53_brcm_hdr_setup(struct dsa_switch *ds, int port)
{
- bool tag_en = !!(ds->ops->get_tag_protocol(ds) == DSA_TAG_PROTO_BRCM);
+ bool tag_en = !!(ds->ops->get_tag_protocol(ds, port) ==
+ DSA_TAG_PROTO_BRCM);
struct b53_device *dev = ds->priv;
u8 hdr_ctl, val;
u16 reg;
@@ -1478,38 +1479,31 @@ void b53_br_fast_age(struct dsa_switch *ds, int port)
}
EXPORT_SYMBOL(b53_br_fast_age);
-static bool b53_can_enable_brcm_tags(struct dsa_switch *ds)
+static bool b53_can_enable_brcm_tags(struct dsa_switch *ds, int port)
{
- unsigned int brcm_tag_mask;
- unsigned int i;
-
/* Broadcom switches will accept enabling Broadcom tags on the
* following ports: 5, 7 and 8, any other port is not supported
*/
- brcm_tag_mask = BIT(B53_CPU_PORT_25) | BIT(7) | BIT(B53_CPU_PORT);
-
- for (i = 0; i < ds->num_ports; i++) {
- if (dsa_is_cpu_port(ds, i)) {
- if (!(BIT(i) & brcm_tag_mask)) {
- dev_warn(ds->dev,
- "Port %d is not Broadcom tag capable\n",
- i);
- return false;
- }
- }
+ switch (port) {
+ case B53_CPU_PORT_25:
+ case 7:
+ case B53_CPU_PORT:
+ return true;
}
- return true;
+ dev_warn(ds->dev, "Port %d is not Broadcom tag capable\n", port);
+ return false;
}
-static enum dsa_tag_protocol b53_get_tag_protocol(struct dsa_switch *ds)
+static enum dsa_tag_protocol b53_get_tag_protocol(struct dsa_switch *ds,
+ int port)
{
struct b53_device *dev = ds->priv;
/* Older models support a different tag format that we do not
* support in net/dsa/tag_brcm.c yet.
*/
- if (is5325(dev) || is5365(dev) || !b53_can_enable_brcm_tags(ds))
+ if (is5325(dev) || is5365(dev) || !b53_can_enable_brcm_tags(ds, port))
return DSA_TAG_PROTO_NONE;
else
return DSA_TAG_PROTO_BRCM;