Commit b53bb527 authored by Ioana Ciornei's avatar Ioana Ciornei Committed by Greg Kroah-Hartman

staging: dpaa2-ethsw: use netif_running when checking for port up

There are some cases where the switch interface needs to be disabled so
that changes in the configuration can be made. In such cases, we should
check for a running interface (bit __LINK_STATE_START of the netdev)
instead of netif_carrier_ok(). This is because on open() we enable the
switch interface even though the link up has not come out yet.
Signed-off-by: default avatarIoana Ciornei <ioana.ciornei@nxp.com>
Link: https://lore.kernel.org/r/20200714133431.17532-4-ioana.ciornei@nxp.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 2cde6410
...@@ -48,7 +48,7 @@ static int ethsw_port_set_pvid(struct ethsw_port_priv *port_priv, u16 pvid) ...@@ -48,7 +48,7 @@ static int ethsw_port_set_pvid(struct ethsw_port_priv *port_priv, u16 pvid)
struct ethsw_core *ethsw = port_priv->ethsw_data; struct ethsw_core *ethsw = port_priv->ethsw_data;
struct net_device *netdev = port_priv->netdev; struct net_device *netdev = port_priv->netdev;
struct dpsw_tci_cfg tci_cfg = { 0 }; struct dpsw_tci_cfg tci_cfg = { 0 };
bool is_oper; bool up;
int err, ret; int err, ret;
err = dpsw_if_get_tci(ethsw->mc_io, 0, ethsw->dpsw_handle, err = dpsw_if_get_tci(ethsw->mc_io, 0, ethsw->dpsw_handle,
...@@ -61,8 +61,8 @@ static int ethsw_port_set_pvid(struct ethsw_port_priv *port_priv, u16 pvid) ...@@ -61,8 +61,8 @@ static int ethsw_port_set_pvid(struct ethsw_port_priv *port_priv, u16 pvid)
tci_cfg.vlan_id = pvid; tci_cfg.vlan_id = pvid;
/* Interface needs to be down to change PVID */ /* Interface needs to be down to change PVID */
is_oper = netif_oper_up(netdev); up = netif_running(netdev);
if (is_oper) { if (up) {
err = dpsw_if_disable(ethsw->mc_io, 0, err = dpsw_if_disable(ethsw->mc_io, 0,
ethsw->dpsw_handle, ethsw->dpsw_handle,
port_priv->idx); port_priv->idx);
...@@ -85,7 +85,7 @@ static int ethsw_port_set_pvid(struct ethsw_port_priv *port_priv, u16 pvid) ...@@ -85,7 +85,7 @@ static int ethsw_port_set_pvid(struct ethsw_port_priv *port_priv, u16 pvid)
port_priv->pvid = pvid; port_priv->pvid = pvid;
set_tci_error: set_tci_error:
if (is_oper) { if (up) {
ret = dpsw_if_enable(ethsw->mc_io, 0, ret = dpsw_if_enable(ethsw->mc_io, 0,
ethsw->dpsw_handle, ethsw->dpsw_handle,
port_priv->idx); port_priv->idx);
...@@ -188,7 +188,7 @@ static int ethsw_port_set_stp_state(struct ethsw_port_priv *port_priv, u8 state) ...@@ -188,7 +188,7 @@ static int ethsw_port_set_stp_state(struct ethsw_port_priv *port_priv, u8 state)
}; };
int err; int err;
if (!netif_oper_up(port_priv->netdev) || state == port_priv->stp_state) if (!netif_running(port_priv->netdev) || state == port_priv->stp_state)
return 0; /* Nothing to do */ return 0; /* Nothing to do */
err = dpsw_if_set_stp(port_priv->ethsw_data->mc_io, 0, err = dpsw_if_set_stp(port_priv->ethsw_data->mc_io, 0,
......
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