aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/dsa/b53/b53_common.c10
-rw-r--r--drivers/net/dsa/b53/b53_regs.h4
2 files changed, 14 insertions, 0 deletions
diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c
index 8cf4801994e8..ca7f3b005a29 100644
--- a/drivers/net/dsa/b53/b53_common.c
+++ b/drivers/net/dsa/b53/b53_common.c
@@ -326,6 +326,7 @@ static void b53_get_vlan_entry(struct b53_device *dev, u16 vid,
326 326
327static void b53_set_forwarding(struct b53_device *dev, int enable) 327static void b53_set_forwarding(struct b53_device *dev, int enable)
328{ 328{
329 struct dsa_switch *ds = dev->ds;
329 u8 mgmt; 330 u8 mgmt;
330 331
331 b53_read8(dev, B53_CTRL_PAGE, B53_SWITCH_MODE, &mgmt); 332 b53_read8(dev, B53_CTRL_PAGE, B53_SWITCH_MODE, &mgmt);
@@ -336,6 +337,15 @@ static void b53_set_forwarding(struct b53_device *dev, int enable)
336 mgmt &= ~SM_SW_FWD_EN; 337 mgmt &= ~SM_SW_FWD_EN;
337 338
338 b53_write8(dev, B53_CTRL_PAGE, B53_SWITCH_MODE, mgmt); 339 b53_write8(dev, B53_CTRL_PAGE, B53_SWITCH_MODE, mgmt);
340
341 /* Include IMP port in dumb forwarding mode when no tagging protocol is
342 * set
343 */
344 if (ds->ops->get_tag_protocol(ds) == DSA_TAG_PROTO_NONE) {
345 b53_read8(dev, B53_CTRL_PAGE, B53_SWITCH_CTRL, &mgmt);
346 mgmt |= B53_MII_DUMB_FWDG_EN;
347 b53_write8(dev, B53_CTRL_PAGE, B53_SWITCH_CTRL, mgmt);
348 }
339} 349}
340 350
341static void b53_enable_vlan(struct b53_device *dev, bool enable) 351static void b53_enable_vlan(struct b53_device *dev, bool enable)
diff --git a/drivers/net/dsa/b53/b53_regs.h b/drivers/net/dsa/b53/b53_regs.h
index 9fd24c418fa4..f2a060e7a637 100644
--- a/drivers/net/dsa/b53/b53_regs.h
+++ b/drivers/net/dsa/b53/b53_regs.h
@@ -104,6 +104,10 @@
104#define B53_UC_FWD_EN BIT(6) 104#define B53_UC_FWD_EN BIT(6)
105#define B53_MC_FWD_EN BIT(7) 105#define B53_MC_FWD_EN BIT(7)
106 106
107/* Switch control (8 bit) */
108#define B53_SWITCH_CTRL 0x22
109#define B53_MII_DUMB_FWDG_EN BIT(6)
110
107/* (16 bit) */ 111/* (16 bit) */
108#define B53_UC_FLOOD_MASK 0x32 112#define B53_UC_FLOOD_MASK 0x32
109#define B53_MC_FLOOD_MASK 0x34 113#define B53_MC_FLOOD_MASK 0x34