mirror of https://gitee.com/openkylin/linux.git
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:
parent
af85d0e06c
commit
4acfc4393e
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue