diff options
Diffstat (limited to 'drivers/net/mdio.c')
-rw-r--r-- | drivers/net/mdio.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/drivers/net/mdio.c b/drivers/net/mdio.c index 21f8754fcf4c..c0db9d753006 100644 --- a/drivers/net/mdio.c +++ b/drivers/net/mdio.c | |||
@@ -344,11 +344,9 @@ void mdio45_ethtool_spauseparam_an(const struct mdio_if_info *mdio, | |||
344 | 344 | ||
345 | old_adv = mdio->mdio_read(mdio->dev, mdio->prtad, MDIO_MMD_AN, | 345 | old_adv = mdio->mdio_read(mdio->dev, mdio->prtad, MDIO_MMD_AN, |
346 | MDIO_AN_ADVERTISE); | 346 | MDIO_AN_ADVERTISE); |
347 | adv = old_adv & ~(ADVERTISE_PAUSE_CAP | ADVERTISE_PAUSE_ASYM); | 347 | adv = ((old_adv & ~(ADVERTISE_PAUSE_CAP | ADVERTISE_PAUSE_ASYM)) | |
348 | if (ecmd->autoneg) | 348 | mii_advertise_flowctrl((ecmd->rx_pause ? FLOW_CTRL_RX : 0) | |
349 | adv |= mii_advertise_flowctrl( | 349 | (ecmd->tx_pause ? FLOW_CTRL_TX : 0))); |
350 | (ecmd->rx_pause ? FLOW_CTRL_RX : 0) | | ||
351 | (ecmd->tx_pause ? FLOW_CTRL_TX : 0)); | ||
352 | if (adv != old_adv) { | 350 | if (adv != old_adv) { |
353 | mdio->mdio_write(mdio->dev, mdio->prtad, MDIO_MMD_AN, | 351 | mdio->mdio_write(mdio->dev, mdio->prtad, MDIO_MMD_AN, |
354 | MDIO_AN_ADVERTISE, adv); | 352 | MDIO_AN_ADVERTISE, adv); |