aboutsummaryrefslogtreecommitdiff
path: root/net/dsa/port.c
diff options
context:
space:
mode:
authorGravatar Russell King <rmk+kernel@armlinux.org.uk> 2019-02-20 15:35:04 -0800
committerGravatar David S. Miller <davem@davemloft.net> 2019-02-21 14:53:07 -0800
commit57652796aa979d5754406c8177f716cb2cf60616 (patch)
tree45f7bcc667916bc0e0f6e5f2c62225b3b4050741 /net/dsa/port.c
parentbridge: remove redundant check on err in br_multicast_ipv4_rcv (diff)
downloadlinux-57652796aa979d5754406c8177f716cb2cf60616.tar.gz
linux-57652796aa979d5754406c8177f716cb2cf60616.tar.bz2
linux-57652796aa979d5754406c8177f716cb2cf60616.zip
net: dsa: add support for bridge flags
The Linux bridge implementation allows various properties of the bridge to be controlled, such as flooding unknown unicast and multicast frames. This patch adds the necessary DSA infrastructure to allow the Linux bridge support to control these properties for DSA switches. Reviewed-by: Vivien Didelot <vivien.didelot@gmail.com> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> [florian: Add missing dp and ds variables declaration to fix build] Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/dsa/port.c')
-rw-r--r--net/dsa/port.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/net/dsa/port.c b/net/dsa/port.c
index 2d7e01b23572..6df29bddf37e 100644
--- a/net/dsa/port.c
+++ b/net/dsa/port.c
@@ -177,6 +177,23 @@ int dsa_port_ageing_time(struct dsa_port *dp, clock_t ageing_clock,
return dsa_port_notify(dp, DSA_NOTIFIER_AGEING_TIME, &info);
}
+int dsa_port_bridge_flags(const struct dsa_port *dp, unsigned long flags,
+ struct switchdev_trans *trans)
+{
+ struct dsa_switch *ds = dp->ds;
+ int port = dp->index;
+ int err = 0;
+
+ if (switchdev_trans_ph_prepare(trans))
+ return 0;
+
+ if (ds->ops->port_egress_floods)
+ err = ds->ops->port_egress_floods(ds, port, flags & BR_FLOOD,
+ flags & BR_MCAST_FLOOD);
+
+ return err;
+}
+
int dsa_port_fdb_add(struct dsa_port *dp, const unsigned char *addr,
u16 vid)
{