Commit 62734c74 authored by Ioana Ciornei's avatar Ioana Ciornei Committed by David S. Miller

dpaa2-switch: keep track of the current learning state per port

Keep track of the current learning state per port so that we can
reference it in the next patches when setting up a STP state.
Signed-off-by: default avatarIoana Ciornei <ioana.ciornei@nxp.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 90f07102
...@@ -1329,6 +1329,7 @@ static int dpaa2_switch_port_bridge_flags(struct net_device *netdev, ...@@ -1329,6 +1329,7 @@ static int dpaa2_switch_port_bridge_flags(struct net_device *netdev,
err = dpaa2_switch_port_set_learning(port_priv, learn_ena); err = dpaa2_switch_port_set_learning(port_priv, learn_ena);
if (err) if (err)
return err; return err;
port_priv->learn_ena = learn_ena;
} }
if (flags.mask & (BR_BCAST_FLOOD | BR_FLOOD | BR_MCAST_FLOOD)) { if (flags.mask & (BR_BCAST_FLOOD | BR_FLOOD | BR_MCAST_FLOOD)) {
...@@ -1637,6 +1638,7 @@ static int dpaa2_switch_port_bridge_join(struct net_device *netdev, ...@@ -1637,6 +1638,7 @@ static int dpaa2_switch_port_bridge_join(struct net_device *netdev,
/* Inherit the initial bridge port learning state */ /* Inherit the initial bridge port learning state */
learn_ena = br_port_flag_is_set(netdev, BR_LEARNING); learn_ena = br_port_flag_is_set(netdev, BR_LEARNING);
err = dpaa2_switch_port_set_learning(port_priv, learn_ena); err = dpaa2_switch_port_set_learning(port_priv, learn_ena);
port_priv->learn_ena = learn_ena;
/* Setup the egress flood policy (broadcast, unknown unicast) */ /* Setup the egress flood policy (broadcast, unknown unicast) */
err = dpaa2_switch_fdb_set_egress_flood(ethsw, port_priv->fdb->fdb_id); err = dpaa2_switch_fdb_set_egress_flood(ethsw, port_priv->fdb->fdb_id);
...@@ -1719,6 +1721,7 @@ static int dpaa2_switch_port_bridge_leave(struct net_device *netdev) ...@@ -1719,6 +1721,7 @@ static int dpaa2_switch_port_bridge_leave(struct net_device *netdev)
err = dpaa2_switch_port_set_learning(port_priv, false); err = dpaa2_switch_port_set_learning(port_priv, false);
if (err) if (err)
return err; return err;
port_priv->learn_ena = false;
/* Add the VLAN 1 as PVID when not under a bridge. We need this since /* Add the VLAN 1 as PVID when not under a bridge. We need this since
* the dpaa2 switch interfaces are not capable to be VLAN unaware * the dpaa2 switch interfaces are not capable to be VLAN unaware
...@@ -2839,6 +2842,7 @@ static int dpaa2_switch_probe_port(struct ethsw_core *ethsw, ...@@ -2839,6 +2842,7 @@ static int dpaa2_switch_probe_port(struct ethsw_core *ethsw,
err = dpaa2_switch_port_set_learning(port_priv, false); err = dpaa2_switch_port_set_learning(port_priv, false);
if (err) if (err)
goto err_port_probe; goto err_port_probe;
port_priv->learn_ena = false;
return 0; return 0;
......
...@@ -115,6 +115,7 @@ struct ethsw_port_priv { ...@@ -115,6 +115,7 @@ struct ethsw_port_priv {
struct dpaa2_switch_fdb *fdb; struct dpaa2_switch_fdb *fdb;
bool bcast_flood; bool bcast_flood;
bool ucast_flood; bool ucast_flood;
bool learn_ena;
u16 acl_tbl; u16 acl_tbl;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment