iwlwifi: add missing rcu_read_lock
[safe/jmp/linux-2.6] / drivers / net / mdio.c
index 21f8754..e85bf04 100644 (file)
@@ -162,6 +162,10 @@ static u32 mdio45_get_an(const struct mdio_if_info *mdio, u16 addr)
                result |= ADVERTISED_100baseT_Half;
        if (reg & ADVERTISE_100FULL)
                result |= ADVERTISED_100baseT_Full;
+       if (reg & ADVERTISE_PAUSE_CAP)
+               result |= ADVERTISED_Pause;
+       if (reg & ADVERTISE_PAUSE_ASYM)
+               result |= ADVERTISED_Asym_Pause;
        return result;
 }
 
@@ -344,11 +348,9 @@ void mdio45_ethtool_spauseparam_an(const struct mdio_if_info *mdio,
 
        old_adv = mdio->mdio_read(mdio->dev, mdio->prtad, MDIO_MMD_AN,
                                  MDIO_AN_ADVERTISE);
-       adv = old_adv & ~(ADVERTISE_PAUSE_CAP | ADVERTISE_PAUSE_ASYM);
-       if (ecmd->autoneg)
-               adv |= mii_advertise_flowctrl(
-                       (ecmd->rx_pause ? FLOW_CTRL_RX : 0) |
-                       (ecmd->tx_pause ? FLOW_CTRL_TX : 0));
+       adv = ((old_adv & ~(ADVERTISE_PAUSE_CAP | ADVERTISE_PAUSE_ASYM)) |
+              mii_advertise_flowctrl((ecmd->rx_pause ? FLOW_CTRL_RX : 0) |
+                                     (ecmd->tx_pause ? FLOW_CTRL_TX : 0)));
        if (adv != old_adv) {
                mdio->mdio_write(mdio->dev, mdio->prtad, MDIO_MMD_AN,
                                 MDIO_AN_ADVERTISE, adv);