aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/ethernet/broadcom/bnx2.c20
-rw-r--r--drivers/net/ethernet/broadcom/tg3.c10
-rw-r--r--drivers/net/ethernet/sun/niu.c4
-rw-r--r--drivers/net/mii.c15
-rw-r--r--drivers/net/phy/phy_device.c4
5 files changed, 26 insertions, 27 deletions
diff --git a/drivers/net/ethernet/broadcom/bnx2.c b/drivers/net/ethernet/broadcom/bnx2.c
index 66f6e7f654c..83d8cefba8c 100644
--- a/drivers/net/ethernet/broadcom/bnx2.c
+++ b/drivers/net/ethernet/broadcom/bnx2.c
@@ -2054,8 +2054,8 @@ __acquires(&bp->phy_lock)
2054 2054
2055 if (bp->autoneg & AUTONEG_SPEED) { 2055 if (bp->autoneg & AUTONEG_SPEED) {
2056 u32 adv_reg, adv1000_reg; 2056 u32 adv_reg, adv1000_reg;
2057 u32 new_adv_reg = 0; 2057 u32 new_adv = 0;
2058 u32 new_adv1000_reg = 0; 2058 u32 new_adv1000 = 0;
2059 2059
2060 bnx2_read_phy(bp, bp->mii_adv, &adv_reg); 2060 bnx2_read_phy(bp, bp->mii_adv, &adv_reg);
2061 adv_reg &= (PHY_ALL_10_100_SPEED | ADVERTISE_PAUSE_CAP | 2061 adv_reg &= (PHY_ALL_10_100_SPEED | ADVERTISE_PAUSE_CAP |
@@ -2064,18 +2064,18 @@ __acquires(&bp->phy_lock)
2064 bnx2_read_phy(bp, MII_CTRL1000, &adv1000_reg); 2064 bnx2_read_phy(bp, MII_CTRL1000, &adv1000_reg);
2065 adv1000_reg &= PHY_ALL_1000_SPEED; 2065 adv1000_reg &= PHY_ALL_1000_SPEED;
2066 2066
2067 new_adv_reg = ethtool_adv_to_mii_100bt(bp->advertising); 2067 new_adv = ethtool_adv_to_mii_adv_t(bp->advertising);
2068 new_adv_reg |= ADVERTISE_CSMA; 2068 new_adv |= ADVERTISE_CSMA;
2069 new_adv_reg |= bnx2_phy_get_pause_adv(bp); 2069 new_adv |= bnx2_phy_get_pause_adv(bp);
2070 2070
2071 new_adv1000_reg |= ethtool_adv_to_mii_1000T(bp->advertising); 2071 new_adv1000 |= ethtool_adv_to_mii_ctrl1000_t(bp->advertising);
2072 2072
2073 if ((adv1000_reg != new_adv1000_reg) || 2073 if ((adv1000_reg != new_adv1000) ||
2074 (adv_reg != new_adv_reg) || 2074 (adv_reg != new_adv) ||
2075 ((bmcr & BMCR_ANENABLE) == 0)) { 2075 ((bmcr & BMCR_ANENABLE) == 0)) {
2076 2076
2077 bnx2_write_phy(bp, bp->mii_adv, new_adv_reg); 2077 bnx2_write_phy(bp, bp->mii_adv, new_adv);
2078 bnx2_write_phy(bp, MII_CTRL1000, new_adv1000_reg); 2078 bnx2_write_phy(bp, MII_CTRL1000, new_adv1000);
2079 bnx2_write_phy(bp, bp->mii_bmcr, BMCR_ANRESTART | 2079 bnx2_write_phy(bp, bp->mii_bmcr, BMCR_ANRESTART |
2080 BMCR_ANENABLE); 2080 BMCR_ANENABLE);
2081 } 2081 }
diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
index 024ca1d4d02..47c0e3a1f58 100644
--- a/drivers/net/ethernet/broadcom/tg3.c
+++ b/drivers/net/ethernet/broadcom/tg3.c
@@ -3594,7 +3594,7 @@ static int tg3_phy_autoneg_cfg(struct tg3 *tp, u32 advertise, u32 flowctrl)
3594 u32 val, new_adv; 3594 u32 val, new_adv;
3595 3595
3596 new_adv = ADVERTISE_CSMA; 3596 new_adv = ADVERTISE_CSMA;
3597 new_adv |= ethtool_adv_to_mii_100bt(advertise); 3597 new_adv |= ethtool_adv_to_mii_adv_t(advertise);
3598 new_adv |= tg3_advert_flowctrl_1000T(flowctrl); 3598 new_adv |= tg3_advert_flowctrl_1000T(flowctrl);
3599 3599
3600 err = tg3_writephy(tp, MII_ADVERTISE, new_adv); 3600 err = tg3_writephy(tp, MII_ADVERTISE, new_adv);
@@ -3604,7 +3604,7 @@ static int tg3_phy_autoneg_cfg(struct tg3 *tp, u32 advertise, u32 flowctrl)
3604 if (tp->phy_flags & TG3_PHYFLG_10_100_ONLY) 3604 if (tp->phy_flags & TG3_PHYFLG_10_100_ONLY)
3605 goto done; 3605 goto done;
3606 3606
3607 new_adv = ethtool_adv_to_mii_1000T(advertise); 3607 new_adv = ethtool_adv_to_mii_ctrl1000_t(advertise);
3608 3608
3609 if (tp->pci_chip_rev_id == CHIPREV_ID_5701_A0 || 3609 if (tp->pci_chip_rev_id == CHIPREV_ID_5701_A0 ||
3610 tp->pci_chip_rev_id == CHIPREV_ID_5701_B0) 3610 tp->pci_chip_rev_id == CHIPREV_ID_5701_B0)
@@ -3778,7 +3778,7 @@ static int tg3_copper_is_advertising_all(struct tg3 *tp, u32 mask)
3778{ 3778{
3779 u32 adv_reg, all_mask = 0; 3779 u32 adv_reg, all_mask = 0;
3780 3780
3781 all_mask = ethtool_adv_to_mii_100bt(mask); 3781 all_mask = ethtool_adv_to_mii_adv_t(mask);
3782 3782
3783 if (tg3_readphy(tp, MII_ADVERTISE, &adv_reg)) 3783 if (tg3_readphy(tp, MII_ADVERTISE, &adv_reg))
3784 return 0; 3784 return 0;
@@ -3789,7 +3789,7 @@ static int tg3_copper_is_advertising_all(struct tg3 *tp, u32 mask)
3789 if (!(tp->phy_flags & TG3_PHYFLG_10_100_ONLY)) { 3789 if (!(tp->phy_flags & TG3_PHYFLG_10_100_ONLY)) {
3790 u32 tg3_ctrl; 3790 u32 tg3_ctrl;
3791 3791
3792 all_mask = ethtool_adv_to_mii_1000T(mask); 3792 all_mask = ethtool_adv_to_mii_ctrl1000_t(mask);
3793 3793
3794 if (tg3_readphy(tp, MII_CTRL1000, &tg3_ctrl)) 3794 if (tg3_readphy(tp, MII_CTRL1000, &tg3_ctrl))
3795 return 0; 3795 return 0;
@@ -4889,7 +4889,7 @@ static int tg3_setup_fiber_mii_phy(struct tg3 *tp, int force_reset)
4889 ADVERTISE_SLCT); 4889 ADVERTISE_SLCT);
4890 4890
4891 newadv |= tg3_advert_flowctrl_1000X(tp->link_config.flowctrl); 4891 newadv |= tg3_advert_flowctrl_1000X(tp->link_config.flowctrl);
4892 newadv |= ethtool_adv_to_mii_1000X(tp->link_config.advertising); 4892 newadv |= ethtool_adv_to_mii_adv_x(tp->link_config.advertising);
4893 4893
4894 if ((newadv != adv) || !(bmcr & BMCR_ANENABLE)) { 4894 if ((newadv != adv) || !(bmcr & BMCR_ANENABLE)) {
4895 tg3_writephy(tp, MII_ADVERTISE, newadv); 4895 tg3_writephy(tp, MII_ADVERTISE, newadv);
diff --git a/drivers/net/ethernet/sun/niu.c b/drivers/net/ethernet/sun/niu.c
index 9997be52508..680b107fdab 100644
--- a/drivers/net/ethernet/sun/niu.c
+++ b/drivers/net/ethernet/sun/niu.c
@@ -1151,8 +1151,8 @@ static int link_status_mii(struct niu *np, int *link_up_p)
1151 supported |= SUPPORTED_1000baseT_Full; 1151 supported |= SUPPORTED_1000baseT_Full;
1152 lp->supported = supported; 1152 lp->supported = supported;
1153 1153
1154 advertising = mii_adv_to_ethtool_100bt(advert); 1154 advertising = mii_adv_to_ethtool_adv_t(advert);
1155 advertising |= mii_adv_to_ethtool_1000T(ctrl1000); 1155 advertising |= mii_ctrl1000_to_ethtool_adv_t(ctrl1000);
1156 1156
1157 if (bmcr & BMCR_ANENABLE) { 1157 if (bmcr & BMCR_ANENABLE) {
1158 int neg, neg1000; 1158 int neg, neg1000;
diff --git a/drivers/net/mii.c b/drivers/net/mii.c
index d0a29627271..c70c2332d15 100644
--- a/drivers/net/mii.c
+++ b/drivers/net/mii.c
@@ -35,14 +35,11 @@
35 35
36static u32 mii_get_an(struct mii_if_info *mii, u16 addr) 36static u32 mii_get_an(struct mii_if_info *mii, u16 addr)
37{ 37{
38 u32 result = 0;
39 int advert; 38 int advert;
40 39
41 advert = mii->mdio_read(mii->dev, mii->phy_id, addr); 40 advert = mii->mdio_read(mii->dev, mii->phy_id, addr);
42 if (advert & LPA_LPACK)
43 result |= ADVERTISED_Autoneg;
44 41
45 return result | mii_adv_to_ethtool_100bt(advert); 42 return mii_lpa_to_ethtool_lpa_t(advert);
46} 43}
47 44
48/** 45/**
@@ -93,12 +90,13 @@ int mii_ethtool_gset(struct mii_if_info *mii, struct ethtool_cmd *ecmd)
93 90
94 ecmd->advertising |= mii_get_an(mii, MII_ADVERTISE); 91 ecmd->advertising |= mii_get_an(mii, MII_ADVERTISE);
95 if (mii->supports_gmii) 92 if (mii->supports_gmii)
96 ecmd->advertising |= mii_adv_to_ethtool_1000T(ctrl1000); 93 ecmd->advertising |=
94 mii_ctrl1000_to_ethtool_adv_t(ctrl1000);
97 95
98 if (bmsr & BMSR_ANEGCOMPLETE) { 96 if (bmsr & BMSR_ANEGCOMPLETE) {
99 ecmd->lp_advertising = mii_get_an(mii, MII_LPA); 97 ecmd->lp_advertising = mii_get_an(mii, MII_LPA);
100 ecmd->lp_advertising |= 98 ecmd->lp_advertising |=
101 mii_lpa_to_ethtool_1000T(stat1000); 99 mii_stat1000_to_ethtool_lpa_t(stat1000);
102 } else { 100 } else {
103 ecmd->lp_advertising = 0; 101 ecmd->lp_advertising = 0;
104 } 102 }
@@ -186,10 +184,11 @@ int mii_ethtool_sset(struct mii_if_info *mii, struct ethtool_cmd *ecmd)
186 advert2 = mii->mdio_read(dev, mii->phy_id, MII_CTRL1000); 184 advert2 = mii->mdio_read(dev, mii->phy_id, MII_CTRL1000);
187 tmp2 = advert2 & ~(ADVERTISE_1000HALF | ADVERTISE_1000FULL); 185 tmp2 = advert2 & ~(ADVERTISE_1000HALF | ADVERTISE_1000FULL);
188 } 186 }
189 tmp |= ethtool_adv_to_mii_100bt(ecmd->advertising); 187 tmp |= ethtool_adv_to_mii_adv_t(ecmd->advertising);
190 188
191 if (mii->supports_gmii) 189 if (mii->supports_gmii)
192 tmp2 |= ethtool_adv_to_mii_1000T(ecmd->advertising); 190 tmp2 |=
191 ethtool_adv_to_mii_ctrl1000_t(ecmd->advertising);
193 if (advert != tmp) { 192 if (advert != tmp) {
194 mii->mdio_write(dev, mii->phy_id, MII_ADVERTISE, tmp); 193 mii->mdio_write(dev, mii->phy_id, MII_ADVERTISE, tmp);
195 mii->advertising = tmp; 194 mii->advertising = tmp;
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index edb905f8011..f320f466f03 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -565,7 +565,7 @@ static int genphy_config_advert(struct phy_device *phydev)
565 565
566 adv &= ~(ADVERTISE_ALL | ADVERTISE_100BASE4 | ADVERTISE_PAUSE_CAP | 566 adv &= ~(ADVERTISE_ALL | ADVERTISE_100BASE4 | ADVERTISE_PAUSE_CAP |
567 ADVERTISE_PAUSE_ASYM); 567 ADVERTISE_PAUSE_ASYM);
568 adv |= ethtool_adv_to_mii_100bt(advertise); 568 adv |= ethtool_adv_to_mii_adv_t(advertise);
569 569
570 if (adv != oldadv) { 570 if (adv != oldadv) {
571 err = phy_write(phydev, MII_ADVERTISE, adv); 571 err = phy_write(phydev, MII_ADVERTISE, adv);
@@ -584,7 +584,7 @@ static int genphy_config_advert(struct phy_device *phydev)
584 return adv; 584 return adv;
585 585
586 adv &= ~(ADVERTISE_1000FULL | ADVERTISE_1000HALF); 586 adv &= ~(ADVERTISE_1000FULL | ADVERTISE_1000HALF);
587 adv |= ethtool_adv_to_mii_1000T(advertise); 587 adv |= ethtool_adv_to_mii_ctrl1000_t(advertise);
588 588
589 if (adv != oldadv) { 589 if (adv != oldadv) {
590 err = phy_write(phydev, MII_CTRL1000, adv); 590 err = phy_write(phydev, MII_CTRL1000, adv);