Skip to content

Commit 58056c1

Browse files
lunndavem330
authored andcommitted
net: ethernet: Use phy_set_max_speed() to limit advertised speed
Many Ethernet MAC drivers want to limit the PHY to only advertise a maximum speed of 100Mbs or 1Gbps. Rather than using a mask, make use of the helper function phy_set_max_speed(). Signed-off-by: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 15d8daf commit 58056c1

File tree

28 files changed

+47
-110
lines changed

28 files changed

+47
-110
lines changed

drivers/net/ethernet/8390/ax88796.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -377,9 +377,7 @@ static int ax_mii_probe(struct net_device *dev)
377377
return ret;
378378
}
379379

380-
/* mask with MAC supported features */
381-
phy_dev->supported &= PHY_BASIC_FEATURES;
382-
phy_dev->advertising = phy_dev->supported;
380+
phy_set_max_speed(phy_dev, SPEED_100);
383381

384382
netdev_info(dev, "PHY driver [%s] (mii_bus:phy_addr=%s, irq=%d)\n",
385383
phy_dev->drv->name, phydev_name(phy_dev), phy_dev->irq);

drivers/net/ethernet/aeroflex/greth.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1279,9 +1279,9 @@ static int greth_mdio_probe(struct net_device *dev)
12791279
}
12801280

12811281
if (greth->gbit_mac)
1282-
phy->supported &= PHY_GBIT_FEATURES;
1282+
phy_set_max_speed(phy, SPEED_1000);
12831283
else
1284-
phy->supported &= PHY_BASIC_FEATURES;
1284+
phy_set_max_speed(phy, SPEED_100);
12851285

12861286
phy->advertising = phy->supported;
12871287

drivers/net/ethernet/agere/et131x.c

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3258,19 +3258,11 @@ static int et131x_mii_probe(struct net_device *netdev)
32583258
return PTR_ERR(phydev);
32593259
}
32603260

3261-
phydev->supported &= (SUPPORTED_10baseT_Half |
3262-
SUPPORTED_10baseT_Full |
3263-
SUPPORTED_100baseT_Half |
3264-
SUPPORTED_100baseT_Full |
3265-
SUPPORTED_Autoneg |
3266-
SUPPORTED_MII |
3267-
SUPPORTED_TP);
3261+
phy_set_max_speed(phydev, SPEED_100);
32683262

32693263
if (adapter->pdev->device != ET131X_PCI_DEVICE_ID_FAST)
3270-
phydev->supported |= SUPPORTED_1000baseT_Half |
3271-
SUPPORTED_1000baseT_Full;
3264+
phy_set_max_speed(phydev, SPEED_1000);
32723265

3273-
phydev->advertising = phydev->supported;
32743266
phydev->autoneg = AUTONEG_ENABLE;
32753267

32763268
phy_attached_info(phydev);

drivers/net/ethernet/allwinner/sun4i-emac.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,8 +172,7 @@ static int emac_mdio_probe(struct net_device *dev)
172172
}
173173

174174
/* mask with MAC supported features */
175-
phydev->supported &= PHY_BASIC_FEATURES;
176-
phydev->advertising = phydev->supported;
175+
phy_set_max_speed(phydev, SPEED_100);
177176

178177
db->link = 0;
179178
db->speed = 0;

drivers/net/ethernet/altera/altera_tse_main.c

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -835,13 +835,10 @@ static int init_phy(struct net_device *dev)
835835
}
836836

837837
/* Stop Advertising 1000BASE Capability if interface is not GMII
838-
* Note: Checkpatch throws CHECKs for the camel case defines below,
839-
* it's ok to ignore.
840838
*/
841839
if ((priv->phy_iface == PHY_INTERFACE_MODE_MII) ||
842840
(priv->phy_iface == PHY_INTERFACE_MODE_RMII))
843-
phydev->advertising &= ~(SUPPORTED_1000baseT_Half |
844-
SUPPORTED_1000baseT_Full);
841+
phy_set_max_speed(phydev, SPEED_100);
845842

846843
/* Broken HW is sometimes missing the pull-up resistor on the
847844
* MDIO line, which results in reads to non-existent devices returning

drivers/net/ethernet/amd/au1000_eth.c

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -564,17 +564,7 @@ static int au1000_mii_probe(struct net_device *dev)
564564
return PTR_ERR(phydev);
565565
}
566566

567-
/* mask with MAC supported features */
568-
phydev->supported &= (SUPPORTED_10baseT_Half
569-
| SUPPORTED_10baseT_Full
570-
| SUPPORTED_100baseT_Half
571-
| SUPPORTED_100baseT_Full
572-
| SUPPORTED_Autoneg
573-
/* | SUPPORTED_Pause | SUPPORTED_Asym_Pause */
574-
| SUPPORTED_MII
575-
| SUPPORTED_TP);
576-
577-
phydev->advertising = phydev->supported;
567+
phy_set_max_speed(phydev, SPEED_100);
578568

579569
aup->old_link = 0;
580570
aup->old_speed = 0;

drivers/net/ethernet/broadcom/bcm63xx_enet.c

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -890,14 +890,8 @@ static int bcm_enet_open(struct net_device *dev)
890890
}
891891

892892
/* mask with MAC supported features */
893-
phydev->supported &= (SUPPORTED_10baseT_Half |
894-
SUPPORTED_10baseT_Full |
895-
SUPPORTED_100baseT_Half |
896-
SUPPORTED_100baseT_Full |
897-
SUPPORTED_Autoneg |
898-
SUPPORTED_Pause |
899-
SUPPORTED_MII);
900-
phydev->advertising = phydev->supported;
893+
phydev->supported |= SUPPORTED_Pause;
894+
phy_set_max_speed(phydev, SPEED_100);
901895

902896
if (priv->pause_auto && priv->pause_rx && priv->pause_tx)
903897
phydev->advertising |= SUPPORTED_Pause;

drivers/net/ethernet/broadcom/genet/bcmmii.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ int bcmgenet_mii_config(struct net_device *dev, bool init)
214214

215215
case PHY_INTERFACE_MODE_MII:
216216
phy_name = "external MII";
217-
phydev->supported &= PHY_BASIC_FEATURES;
217+
phy_set_max_speed(phydev, SPEED_100);
218218
bcmgenet_sys_writel(priv,
219219
PORT_MODE_EXT_EPHY, SYS_PORT_CTRL);
220220
break;

drivers/net/ethernet/broadcom/sb1250-mac.c

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2357,15 +2357,8 @@ static int sbmac_mii_probe(struct net_device *dev)
23572357
}
23582358

23592359
/* Remove any features not supported by the controller */
2360-
phy_dev->supported &= SUPPORTED_10baseT_Half |
2361-
SUPPORTED_10baseT_Full |
2362-
SUPPORTED_100baseT_Half |
2363-
SUPPORTED_100baseT_Full |
2364-
SUPPORTED_1000baseT_Half |
2365-
SUPPORTED_1000baseT_Full |
2366-
SUPPORTED_Autoneg |
2367-
SUPPORTED_MII |
2368-
SUPPORTED_Pause |
2360+
phy_set_max_speed(phy_dev, SPEED_1000);
2361+
phy_dev->supported |= SUPPORTED_Pause |
23692362
SUPPORTED_Asym_Pause;
23702363

23712364
phy_attached_info(phy_dev);

drivers/net/ethernet/broadcom/tg3.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2122,15 +2122,15 @@ static int tg3_phy_init(struct tg3 *tp)
21222122
case PHY_INTERFACE_MODE_GMII:
21232123
case PHY_INTERFACE_MODE_RGMII:
21242124
if (!(tp->phy_flags & TG3_PHYFLG_10_100_ONLY)) {
2125-
phydev->supported &= (PHY_GBIT_FEATURES |
2126-
SUPPORTED_Pause |
2125+
phy_set_max_speed(phydev, SPEED_1000);
2126+
phydev->supported &= (SUPPORTED_Pause |
21272127
SUPPORTED_Asym_Pause);
21282128
break;
21292129
}
21302130
/* fallthru */
21312131
case PHY_INTERFACE_MODE_MII:
2132-
phydev->supported &= (PHY_BASIC_FEATURES |
2133-
SUPPORTED_Pause |
2132+
phy_set_max_speed(phydev, SPEED_100);
2133+
phydev->supported &= (SUPPORTED_Pause |
21342134
SUPPORTED_Asym_Pause);
21352135
break;
21362136
default:

drivers/net/ethernet/cadence/macb_main.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -544,9 +544,9 @@ static int macb_mii_probe(struct net_device *dev)
544544

545545
/* mask with MAC supported features */
546546
if (macb_is_gem(bp) && bp->caps & MACB_CAPS_GIGABIT_MODE_AVAILABLE)
547-
phydev->supported &= PHY_GBIT_FEATURES;
547+
phy_set_max_speed(phydev, SPEED_1000);
548548
else
549-
phydev->supported &= PHY_BASIC_FEATURES;
549+
phy_set_max_speed(phydev, SPEED_100);
550550

551551
if (bp->caps & MACB_CAPS_NO_GIGABIT_HALF)
552552
phydev->supported &= ~SUPPORTED_1000baseT_Half;

drivers/net/ethernet/cortina/gemini.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ static int gmac_setup_phy(struct net_device *netdev)
372372
return -ENODEV;
373373
netdev->phydev = phy;
374374

375-
phy->supported &= PHY_GBIT_FEATURES;
375+
phy_set_max_speed(phy, SPEED_1000);
376376
phy->supported |= SUPPORTED_Asym_Pause | SUPPORTED_Pause;
377377
phy->advertising = phy->supported;
378378

drivers/net/ethernet/dnet.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -284,9 +284,9 @@ static int dnet_mii_probe(struct net_device *dev)
284284

285285
/* mask with MAC supported features */
286286
if (bp->capabilities & DNET_HAS_GIGABIT)
287-
phydev->supported &= PHY_GBIT_FEATURES;
287+
phy_set_max_speed(phydev, SPEED_1000);
288288
else
289-
phydev->supported &= PHY_BASIC_FEATURES;
289+
phy_set_max_speed(phydev, SPEED_100);
290290

291291
phydev->supported |= SUPPORTED_Asym_Pause | SUPPORTED_Pause;
292292

drivers/net/ethernet/ethoc.c

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -721,10 +721,7 @@ static int ethoc_mdio_probe(struct net_device *dev)
721721
return err;
722722
}
723723

724-
phy->advertising &= ~(ADVERTISED_1000baseT_Full |
725-
ADVERTISED_1000baseT_Half);
726-
phy->supported &= ~(SUPPORTED_1000baseT_Full |
727-
SUPPORTED_1000baseT_Half);
724+
phy_set_max_speed(phy, SPEED_100);
728725

729726
return 0;
730727
}

drivers/net/ethernet/freescale/fec_main.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1946,14 +1946,14 @@ static int fec_enet_mii_probe(struct net_device *ndev)
19461946

19471947
/* mask with MAC supported features */
19481948
if (fep->quirks & FEC_QUIRK_HAS_GBIT) {
1949-
phy_dev->supported &= PHY_GBIT_FEATURES;
1949+
phy_set_max_speed(phy_dev, 1000);
19501950
phy_dev->supported &= ~SUPPORTED_1000baseT_Half;
19511951
#if !defined(CONFIG_M5272)
19521952
phy_dev->supported |= SUPPORTED_Pause;
19531953
#endif
19541954
}
19551955
else
1956-
phy_dev->supported &= PHY_BASIC_FEATURES;
1956+
phy_set_max_speed(phy_dev, 100);
19571957

19581958
phy_dev->advertising = phy_dev->supported;
19591959

drivers/net/ethernet/freescale/ucc_geth.c

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1742,12 +1742,7 @@ static int init_phy(struct net_device *dev)
17421742
if (priv->phy_interface == PHY_INTERFACE_MODE_SGMII)
17431743
uec_configure_serdes(dev);
17441744

1745-
phydev->supported &= (SUPPORTED_MII |
1746-
SUPPORTED_Autoneg |
1747-
ADVERTISED_10baseT_Half |
1748-
ADVERTISED_10baseT_Full |
1749-
ADVERTISED_100baseT_Half |
1750-
ADVERTISED_100baseT_Full);
1745+
phy_set_max_speed(phydev, SPEED_100);
17511746

17521747
if (priv->max_speed == SPEED_1000)
17531748
phydev->supported |= ADVERTISED_1000baseT_Full;

drivers/net/ethernet/lantiq_etop.c

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -364,15 +364,8 @@ ltq_etop_mdio_probe(struct net_device *dev)
364364
return PTR_ERR(phydev);
365365
}
366366

367-
phydev->supported &= (SUPPORTED_10baseT_Half
368-
| SUPPORTED_10baseT_Full
369-
| SUPPORTED_100baseT_Half
370-
| SUPPORTED_100baseT_Full
371-
| SUPPORTED_Autoneg
372-
| SUPPORTED_MII
373-
| SUPPORTED_TP);
374-
375-
phydev->advertising = phydev->supported;
367+
phy_set_max_speed(phydev, SPEED_100);
368+
376369
phy_attached_info(phydev);
377370

378371
return 0;

drivers/net/ethernet/mediatek/mtk_eth_soc.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -359,8 +359,8 @@ static int mtk_phy_connect(struct net_device *dev)
359359
dev->phydev->supported |=
360360
SUPPORTED_Pause | SUPPORTED_Asym_Pause;
361361

362-
dev->phydev->supported &= PHY_GBIT_FEATURES | SUPPORTED_Pause |
363-
SUPPORTED_Asym_Pause;
362+
phy_set_max_speed(dev->phydev, SPEED_1000);
363+
dev->phydev->supported &= SUPPORTED_Pause | SUPPORTED_Asym_Pause;
364364
dev->phydev->advertising = dev->phydev->supported |
365365
ADVERTISED_Autoneg;
366366
phy_start_aneg(dev->phydev);

drivers/net/ethernet/nxp/lpc_eth.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -797,8 +797,7 @@ static int lpc_mii_probe(struct net_device *ndev)
797797
return PTR_ERR(phydev);
798798
}
799799

800-
/* mask with MAC supported features */
801-
phydev->supported &= PHY_BASIC_FEATURES;
800+
phy_set_max_speed(phydev, SPEED_100);
802801

803802
phydev->advertising = phydev->supported;
804803

drivers/net/ethernet/rdc/r6040.c

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1024,16 +1024,8 @@ static int r6040_mii_probe(struct net_device *dev)
10241024
return PTR_ERR(phydev);
10251025
}
10261026

1027-
/* mask with MAC supported features */
1028-
phydev->supported &= (SUPPORTED_10baseT_Half
1029-
| SUPPORTED_10baseT_Full
1030-
| SUPPORTED_100baseT_Half
1031-
| SUPPORTED_100baseT_Full
1032-
| SUPPORTED_Autoneg
1033-
| SUPPORTED_MII
1034-
| SUPPORTED_TP);
1035-
1036-
phydev->advertising = phydev->supported;
1027+
phy_set_max_speed(phydev, SPEED_100);
1028+
10371029
lp->old_link = 0;
10381030
lp->old_duplex = -1;
10391031

drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -298,8 +298,8 @@ static int sxgbe_init_phy(struct net_device *ndev)
298298
/* Stop Advertising 1000BASE Capability if interface is not GMII */
299299
if ((phy_iface == PHY_INTERFACE_MODE_MII) ||
300300
(phy_iface == PHY_INTERFACE_MODE_RMII))
301-
phydev->advertising &= ~(SUPPORTED_1000baseT_Half |
302-
SUPPORTED_1000baseT_Full);
301+
phy_set_max_speed(phydev, SPEED_1000);
302+
303303
if (phydev->phy_id == 0) {
304304
phy_disconnect(phydev);
305305
return -ENODEV;

drivers/net/ethernet/smsc/smsc911x.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1048,9 +1048,10 @@ static int smsc911x_mii_probe(struct net_device *dev)
10481048

10491049
phy_attached_info(phydev);
10501050

1051+
phy_set_max_speed(phydev, SPEED_100);
1052+
10511053
/* mask with MAC supported features */
1052-
phydev->supported &= (PHY_BASIC_FEATURES | SUPPORTED_Pause |
1053-
SUPPORTED_Asym_Pause);
1054+
phydev->supported &= (SUPPORTED_Pause | SUPPORTED_Asym_Pause);
10541055
phydev->advertising = phydev->supported;
10551056

10561057
pdata->last_duplex = -1;

drivers/net/ethernet/smsc/smsc9420.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1135,9 +1135,10 @@ static int smsc9420_mii_probe(struct net_device *dev)
11351135
return PTR_ERR(phydev);
11361136
}
11371137

1138+
phy_set_max_speed(phydev, SPEED_100);
1139+
11381140
/* mask with MAC supported features */
1139-
phydev->supported &= (PHY_BASIC_FEATURES | SUPPORTED_Pause |
1140-
SUPPORTED_Asym_Pause);
1141+
phydev->supported &= (SUPPORTED_Pause | SUPPORTED_Asym_Pause);
11411142
phydev->advertising = phydev->supported;
11421143

11431144
phy_attached_info(phydev);

drivers/net/ethernet/socionext/sni_ave.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1223,10 +1223,8 @@ static int ave_init(struct net_device *ndev)
12231223
phy_ethtool_get_wol(phydev, &wol);
12241224
device_set_wakeup_capable(&ndev->dev, !!wol.supported);
12251225

1226-
if (!phy_interface_is_rgmii(phydev)) {
1227-
phydev->supported &= ~PHY_GBIT_FEATURES;
1228-
phydev->supported |= PHY_BASIC_FEATURES;
1229-
}
1226+
if (!phy_interface_is_rgmii(phydev))
1227+
phy_set_max_speed(phydev, SPEED_100);
12301228
phydev->supported |= SUPPORTED_Pause | SUPPORTED_Asym_Pause;
12311229

12321230
phy_attached_info(phydev);

drivers/net/ethernet/stmicro/stmmac/stmmac_main.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -987,8 +987,7 @@ static int stmmac_init_phy(struct net_device *dev)
987987
if ((interface == PHY_INTERFACE_MODE_MII) ||
988988
(interface == PHY_INTERFACE_MODE_RMII) ||
989989
(max_speed < 1000 && max_speed > 0))
990-
phydev->advertising &= ~(SUPPORTED_1000baseT_Half |
991-
SUPPORTED_1000baseT_Full);
990+
phy_set_max_speed(phydev, SPEED_100);
992991

993992
/*
994993
* Half-duplex mode not supported with multiqueue

drivers/net/ethernet/toshiba/tc35815.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -628,7 +628,7 @@ static int tc_mii_probe(struct net_device *dev)
628628
phy_attached_info(phydev);
629629

630630
/* mask with MAC supported features */
631-
phydev->supported &= PHY_BASIC_FEATURES;
631+
phy_set_max_speed(phydev, SPEED_100);
632632
dropmask = 0;
633633
if (options.speed == 10)
634634
dropmask |= SUPPORTED_100baseT_Half | SUPPORTED_100baseT_Full;

drivers/net/ethernet/xilinx/xilinx_emaclite.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -941,8 +941,7 @@ static int xemaclite_open(struct net_device *dev)
941941
}
942942

943943
/* EmacLite doesn't support giga-bit speeds */
944-
lp->phy_dev->supported &= (PHY_BASIC_FEATURES);
945-
lp->phy_dev->advertising = lp->phy_dev->supported;
944+
phy_set_max_speed(lp->phy_dev, SPEED_100);
946945

947946
/* Don't advertise 1000BASE-T Full/Half duplex speeds */
948947
phy_write(lp->phy_dev, MII_CTRL1000, 0);

drivers/staging/mt7621-eth/mdio.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ static void phy_init(struct mtk_eth *eth, struct mtk_mac *mac,
112112
phy->autoneg = AUTONEG_ENABLE;
113113
phy->speed = 0;
114114
phy->duplex = 0;
115-
phy->supported &= PHY_BASIC_FEATURES;
115+
phy_set_max_speed(phy, SPEED_100);
116116
phy->advertising = phy->supported | ADVERTISED_Autoneg;
117117

118118
phy_start_aneg(phy);

0 commit comments

Comments
 (0)