staging: dpaa2-ethsw: setup the STP state for all installed VLANs

Setup the STP state for all VLANs installed on the port. This is also
avoiding the error situation when the DEFAULT_VLAN_ID is not installed
on the port (thus the firmware complains that it cannot setup the
required STP state).

Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
Link: https://lore.kernel.org/r/20200721091919.20394-4-ioana.ciornei@nxp.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Ioana Ciornei 2020-07-21 12:19:16 +03:00 committed by Greg Kroah-Hartman
parent af85d0e06c
commit 4acfc4393e
1 changed files with 13 additions and 8 deletions

View File

@ -183,14 +183,17 @@ static int ethsw_port_set_flood(struct ethsw_port_priv *port_priv, bool enable)
static int ethsw_port_set_stp_state(struct ethsw_port_priv *port_priv, u8 state)
{
struct dpsw_stp_cfg stp_cfg = {
.vlan_id = DEFAULT_VLAN_ID,
.state = state,
};
int err;
u16 vid;
if (!netif_running(port_priv->netdev) || state == port_priv->stp_state)
return 0; /* Nothing to do */
for (vid = 0; vid <= VLAN_VID_MASK; vid++) {
if (port_priv->vlans[vid] & ETHSW_VLAN_MEMBER) {
stp_cfg.vlan_id = vid;
err = dpsw_if_set_stp(port_priv->ethsw_data->mc_io, 0,
port_priv->ethsw_data->dpsw_handle,
port_priv->idx, &stp_cfg);
@ -199,6 +202,8 @@ static int ethsw_port_set_stp_state(struct ethsw_port_priv *port_priv, u8 state)
"dpsw_if_set_stp err %d\n", err);
return err;
}
}
}
port_priv->stp_state = state;