[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20180310030308.12947-2-igor.mitsyanko.os@quantenna.com>
Date: Fri, 9 Mar 2018 19:03:04 -0800
From: Igor Mitsyanko <igor.mitsyanko.os@...ntenna.com>
To: bridge@...ts.linux-foundation.org, netdev@...r.kernel.org
Cc: sergey.matyukevich.os@...ntenna.com, smaksimenko@...ntenna.com,
ashevchenko@...ntenna.com, dlebed@...ntenna.com, jiri@...nulli.us,
ivecera@...hat.com, igor.mitsyanko.os@...ntenna.com
Subject: [PATCH net-next 1/5] bridge: initialize port flags with switchdev defaults
Default bridge port flags for switchdev devices can be different from
what is used in bridging core. Get default value from switchdev itself
on port initialization.
Signed-off-by: Igor Mitsyanko <igor.mitsyanko.os@...ntenna.com>
---
net/bridge/br_if.c | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c
index 9ba4ed6..d658b55 100644
--- a/net/bridge/br_if.c
+++ b/net/bridge/br_if.c
@@ -342,6 +342,21 @@ static int find_portno(struct net_bridge *br)
return (index >= BR_MAX_PORTS) ? -EXFULL : index;
}
+static unsigned long nbp_flags_get_default(struct net_device *dev)
+{
+ struct switchdev_attr attr = {
+ .orig_dev = dev,
+ .id = SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS,
+ };
+ int ret;
+
+ ret = switchdev_port_attr_get(dev, &attr);
+ if (ret)
+ return BR_LEARNING | BR_FLOOD | BR_MCAST_FLOOD | BR_BCAST_FLOOD;
+ else
+ return attr.u.brport_flags;
+}
+
/* called with RTNL but without bridge lock */
static struct net_bridge_port *new_nbp(struct net_bridge *br,
struct net_device *dev)
@@ -363,7 +378,7 @@ static struct net_bridge_port *new_nbp(struct net_bridge *br,
p->path_cost = port_cost(dev);
p->priority = 0x8000 >> BR_PORT_BITS;
p->port_no = index;
- p->flags = BR_LEARNING | BR_FLOOD | BR_MCAST_FLOOD | BR_BCAST_FLOOD;
+ p->flags = nbp_flags_get_default(dev);
br_init_port(p);
br_set_state(p, BR_STATE_DISABLED);
br_stp_port_timer_init(p);
--
2.9.5
Powered by blists - more mailing lists