Skip to content

Commit

Permalink
staging: dpaa2-ethsw: use netif_running when checking for port up
Browse files Browse the repository at this point in the history
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: Ioana Ciornei <ioana.ciornei@nxp.com>
Link: https://lore.kernel.org/r/20200714133431.17532-4-ioana.ciornei@nxp.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Ioana Ciornei authored and Greg Kroah-Hartman committed Jul 15, 2020
1 parent 2cde641 commit b53bb52
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions drivers/staging/fsl-dpaa2/ethsw/ethsw.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 net_device *netdev = port_priv->netdev;
struct dpsw_tci_cfg tci_cfg = { 0 };
bool is_oper;
bool up;
int err, ret;

err = dpsw_if_get_tci(ethsw->mc_io, 0, ethsw->dpsw_handle,
Expand All @@ -61,8 +61,8 @@ static int ethsw_port_set_pvid(struct ethsw_port_priv *port_priv, u16 pvid)
tci_cfg.vlan_id = pvid;

/* Interface needs to be down to change PVID */
is_oper = netif_oper_up(netdev);
if (is_oper) {
up = netif_running(netdev);
if (up) {
err = dpsw_if_disable(ethsw->mc_io, 0,
ethsw->dpsw_handle,
port_priv->idx);
Expand All @@ -85,7 +85,7 @@ static int ethsw_port_set_pvid(struct ethsw_port_priv *port_priv, u16 pvid)
port_priv->pvid = pvid;

set_tci_error:
if (is_oper) {
if (up) {
ret = dpsw_if_enable(ethsw->mc_io, 0,
ethsw->dpsw_handle,
port_priv->idx);
Expand Down Expand Up @@ -188,7 +188,7 @@ static int ethsw_port_set_stp_state(struct ethsw_port_priv *port_priv, u8 state)
};
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 */

err = dpsw_if_set_stp(port_priv->ethsw_data->mc_io, 0,
Expand Down

0 comments on commit b53bb52

Please sign in to comment.