Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: remove phylink_pcs .neg_mode boolean

As all PCS are using the neg_mode parameter rather than the legacy
an_mode, remove the ability to use the legacy an_mode. We remove the
tests in the phylink code, unconditionally passing the PCS neg_mode
parameter to PCS methods, and remove setting the flag from drivers.

Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Link: https://patch.msgid.link/E1tidPn-0040hd-2R@rmk-PC.armlinux.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Russell King (Oracle) and committed by
Jakub Kicinski
de38503b bf1b8e0a

+5 -51
-1
drivers/net/dsa/b53/b53_serdes.c
··· 239 239 pcs->dev = dev; 240 240 pcs->lane = lane; 241 241 pcs->pcs.ops = &b53_pcs_ops; 242 - pcs->pcs.neg_mode = true; 243 242 244 243 return 0; 245 244 }
-1
drivers/net/dsa/mt7530.c
··· 3104 3104 /* Initialise the PCS devices */ 3105 3105 for (i = 0; i < priv->ds->num_ports; i++) { 3106 3106 priv->pcs[i].pcs.ops = priv->info->pcs_ops; 3107 - priv->pcs[i].pcs.neg_mode = true; 3108 3107 priv->pcs[i].priv = priv; 3109 3108 priv->pcs[i].port = i; 3110 3109 }
-1
drivers/net/dsa/mv88e6xxx/pcs-6185.c
··· 138 138 mpcs->chip = chip; 139 139 mpcs->port = port; 140 140 mpcs->phylink_pcs.ops = &mv88e6185_phylink_pcs_ops; 141 - mpcs->phylink_pcs.neg_mode = true; 142 141 143 142 irq = mv88e6xxx_serdes_irq_mapping(chip, port); 144 143 if (irq) {
-1
drivers/net/dsa/mv88e6xxx/pcs-6352.c
··· 275 275 mpcs->mdio.bus = bus; 276 276 mpcs->mdio.addr = addr; 277 277 mpcs->phylink_pcs.ops = &marvell_c22_pcs_ops; 278 - mpcs->phylink_pcs.neg_mode = true; 279 278 280 279 return mpcs; 281 280 }
-4
drivers/net/dsa/mv88e6xxx/pcs-639x.c
··· 565 565 return -ENOMEM; 566 566 567 567 mpcs->sgmii_pcs.ops = &mv88e639x_sgmii_pcs_ops; 568 - mpcs->sgmii_pcs.neg_mode = true; 569 568 mpcs->xg_pcs.ops = &mv88e6390_xg_pcs_ops; 570 - mpcs->xg_pcs.neg_mode = true; 571 569 572 570 if (chip->info->prod_num == MV88E6XXX_PORT_SWITCH_ID_PROD_6190X || 573 571 chip->info->prod_num == MV88E6XXX_PORT_SWITCH_ID_PROD_6390X) ··· 943 945 return -ENOMEM; 944 946 945 947 mpcs->sgmii_pcs.ops = &mv88e6393x_sgmii_pcs_ops; 946 - mpcs->sgmii_pcs.neg_mode = true; 947 948 mpcs->xg_pcs.ops = &mv88e6393x_xg_pcs_ops; 948 - mpcs->xg_pcs.neg_mode = true; 949 949 mpcs->supports_5g = true; 950 950 951 951 err = mv88e6393x_erratum_4_6(mpcs);
-1
drivers/net/dsa/qca/qca8k-8xxx.c
··· 1634 1634 int port) 1635 1635 { 1636 1636 qpcs->pcs.ops = &qca8k_pcs_ops; 1637 - qpcs->pcs.neg_mode = true; 1638 1637 1639 1638 /* We don't have interrupts for link changes, so we need to poll */ 1640 1639 qpcs->pcs.poll = true;
-2
drivers/net/ethernet/cadence/macb_main.c
··· 853 853 struct macb *bp = netdev_priv(dev); 854 854 855 855 bp->phylink_sgmii_pcs.ops = &macb_phylink_pcs_ops; 856 - bp->phylink_sgmii_pcs.neg_mode = true; 857 856 bp->phylink_usx_pcs.ops = &macb_phylink_usx_pcs_ops; 858 - bp->phylink_usx_pcs.neg_mode = true; 859 857 860 858 bp->phylink_config.dev = &dev->dev; 861 859 bp->phylink_config.type = PHYLINK_NETDEV;
-1
drivers/net/ethernet/freescale/fman/fman_dtsec.c
··· 1446 1446 goto _return_fm_mac_free; 1447 1447 } 1448 1448 dtsec->pcs.ops = &dtsec_pcs_ops; 1449 - dtsec->pcs.neg_mode = true; 1450 1449 dtsec->pcs.poll = true; 1451 1450 1452 1451 supported = mac_dev->phylink_config.supported_interfaces;
-1
drivers/net/ethernet/marvell/mvneta.c
··· 5557 5557 clk_prepare_enable(pp->clk_bus); 5558 5558 5559 5559 pp->phylink_pcs.ops = &mvneta_phylink_pcs_ops; 5560 - pp->phylink_pcs.neg_mode = true; 5561 5560 5562 5561 pp->phylink_config.dev = &dev->dev; 5563 5562 pp->phylink_config.type = PHYLINK_NETDEV;
-2
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
··· 7024 7024 dev->dev_port = port->id; 7025 7025 7026 7026 port->pcs_gmac.ops = &mvpp2_phylink_gmac_pcs_ops; 7027 - port->pcs_gmac.neg_mode = true; 7028 7027 port->pcs_xlg.ops = &mvpp2_phylink_xlg_pcs_ops; 7029 - port->pcs_xlg.neg_mode = true; 7030 7028 7031 7029 if (!mvpp2_use_acpi_compat_mode(port_fwnode)) { 7032 7030 port->phylink_config.dev = &dev->dev;
-1
drivers/net/ethernet/marvell/prestera/prestera_main.c
··· 396 396 continue; 397 397 398 398 port->phylink_pcs.ops = &prestera_pcs_ops; 399 - port->phylink_pcs.neg_mode = true; 400 399 401 400 port->phy_config.dev = &port->dev->dev; 402 401 port->phy_config.type = PHYLINK_NETDEV;
-1
drivers/net/ethernet/meta/fbnic/fbnic_phylink.c
··· 133 133 struct fbnic_net *fbn = netdev_priv(netdev); 134 134 struct phylink *phylink; 135 135 136 - fbn->phylink_pcs.neg_mode = true; 137 136 fbn->phylink_pcs.ops = &fbnic_phylink_pcs_ops; 138 137 139 138 fbn->phylink_config.dev = &netdev->dev;
-1
drivers/net/ethernet/microchip/lan966x/lan966x_main.c
··· 828 828 port->phylink_config.type = PHYLINK_NETDEV; 829 829 port->phylink_pcs.poll = true; 830 830 port->phylink_pcs.ops = &lan966x_phylink_pcs_ops; 831 - port->phylink_pcs.neg_mode = true; 832 831 833 832 port->phylink_config.mac_capabilities = MAC_ASYM_PAUSE | MAC_SYM_PAUSE | 834 833 MAC_10 | MAC_100 | MAC_1000FD | MAC_2500FD;
-1
drivers/net/ethernet/microchip/sparx5/sparx5_main.c
··· 338 338 spx5_port->custom_etype = 0x8880; /* Vitesse */ 339 339 spx5_port->phylink_pcs.poll = true; 340 340 spx5_port->phylink_pcs.ops = &sparx5_phylink_pcs_ops; 341 - spx5_port->phylink_pcs.neg_mode = true; 342 341 spx5_port->is_mrouter = false; 343 342 INIT_LIST_HEAD(&spx5_port->tc_templates); 344 343 sparx5->ports[config->portno] = spx5_port;
-1
drivers/net/ethernet/xilinx/xilinx_axienet_main.c
··· 3073 3073 } 3074 3074 of_node_put(np); 3075 3075 lp->pcs.ops = &axienet_pcs_ops; 3076 - lp->pcs.neg_mode = true; 3077 3076 lp->pcs.poll = true; 3078 3077 } 3079 3078
-1
drivers/net/pcs/pcs-lynx.c
··· 355 355 mdio_device_get(mdio); 356 356 lynx->mdio = mdio; 357 357 lynx->pcs.ops = &lynx_pcs_phylink_ops; 358 - lynx->pcs.neg_mode = true; 359 358 lynx->pcs.poll = true; 360 359 361 360 for (i = 0; i < ARRAY_SIZE(lynx_interfaces); i++)
-1
drivers/net/pcs/pcs-mtk-lynxi.c
··· 305 305 mpcs->regmap = regmap; 306 306 mpcs->flags = flags; 307 307 mpcs->pcs.ops = &mtk_pcs_lynxi_ops; 308 - mpcs->pcs.neg_mode = true; 309 308 mpcs->pcs.poll = true; 310 309 mpcs->interface = PHY_INTERFACE_MODE_NA; 311 310
-1
drivers/net/pcs/pcs-rzn1-miic.c
··· 349 349 miic_port->miic = miic; 350 350 miic_port->port = port - 1; 351 351 miic_port->pcs.ops = &miic_phylink_ops; 352 - miic_port->pcs.neg_mode = true; 353 352 354 353 phy_interface_set_rgmii(miic_port->pcs.supported_interfaces); 355 354 __set_bit(PHY_INTERFACE_MODE_RMII, miic_port->pcs.supported_interfaces);
-1
drivers/net/pcs/pcs-xpcs.c
··· 1403 1403 mdio_device_get(mdiodev); 1404 1404 xpcs->mdiodev = mdiodev; 1405 1405 xpcs->pcs.ops = &xpcs_phylink_ops; 1406 - xpcs->pcs.neg_mode = true; 1407 1406 xpcs->pcs.poll = true; 1408 1407 1409 1408 return xpcs;
+5 -25
drivers/net/phy/phylink.c
··· 1365 1365 struct phylink_pcs *pcs = NULL; 1366 1366 bool pcs_changed = false; 1367 1367 unsigned int rate_kbd; 1368 - unsigned int neg_mode; 1369 1368 int err; 1370 1369 1371 1370 phylink_dbg(pl, "major config, requested %s/%s\n", ··· 1427 1428 if (pl->pcs_state == PCS_STATE_STARTING || pcs_changed) 1428 1429 phylink_pcs_enable(pl->pcs); 1429 1430 1430 - neg_mode = pl->act_link_an_mode; 1431 - if (pl->pcs && pl->pcs->neg_mode) 1432 - neg_mode = pl->pcs_neg_mode; 1433 - 1434 - err = phylink_pcs_config(pl->pcs, neg_mode, state, 1431 + err = phylink_pcs_config(pl->pcs, pl->pcs_neg_mode, state, 1435 1432 !!(pl->link_config.pause & MLO_PAUSE_AN)); 1436 1433 if (err < 0) 1437 1434 phylink_err(pl, "pcs_config failed: %pe\n", ··· 1470 1475 */ 1471 1476 static int phylink_change_inband_advert(struct phylink *pl) 1472 1477 { 1473 - unsigned int neg_mode; 1474 1478 int ret; 1475 1479 1476 1480 if (test_bit(PHYLINK_DISABLE_STOPPED, &pl->phylink_disable_state)) ··· 1485 1491 phylink_pcs_neg_mode(pl, pl->pcs, pl->link_config.interface, 1486 1492 pl->link_config.advertising); 1487 1493 1488 - neg_mode = pl->act_link_an_mode; 1489 - if (pl->pcs->neg_mode) 1490 - neg_mode = pl->pcs_neg_mode; 1491 - 1492 1494 /* Modern PCS-based method; update the advert at the PCS, and 1493 1495 * restart negotiation if the pcs_config() helper indicates that 1494 1496 * the programmed advertisement has changed. 1495 1497 */ 1496 - ret = phylink_pcs_config(pl->pcs, neg_mode, &pl->link_config, 1498 + ret = phylink_pcs_config(pl->pcs, pl->pcs_neg_mode, &pl->link_config, 1497 1499 !!(pl->link_config.pause & MLO_PAUSE_AN)); 1498 1500 if (ret < 0) 1499 1501 return ret; ··· 1513 1523 state->an_complete = 0; 1514 1524 state->link = 1; 1515 1525 1516 - pcs = pl->pcs; 1517 - if (!pcs || pcs->neg_mode) 1518 - autoneg = pl->pcs_neg_mode == PHYLINK_PCS_NEG_INBAND_ENABLED; 1519 - else 1520 - autoneg = linkmode_test_bit(ETHTOOL_LINK_MODE_Autoneg_BIT, 1521 - state->advertising); 1522 - 1526 + autoneg = pl->pcs_neg_mode == PHYLINK_PCS_NEG_INBAND_ENABLED; 1523 1527 if (autoneg) { 1524 1528 state->speed = SPEED_UNKNOWN; 1525 1529 state->duplex = DUPLEX_UNKNOWN; ··· 1524 1540 state->pause = pl->link_config.pause; 1525 1541 } 1526 1542 1543 + pcs = pl->pcs; 1527 1544 if (pcs) 1528 1545 pcs->ops->pcs_get_state(pcs, pl->pcs_neg_mode, state); 1529 1546 else ··· 1634 1649 struct phylink_link_state link_state) 1635 1650 { 1636 1651 struct net_device *ndev = pl->netdev; 1637 - unsigned int neg_mode; 1638 1652 int speed, duplex; 1639 1653 bool rx_pause; 1640 1654 ··· 1664 1680 1665 1681 pl->cur_interface = link_state.interface; 1666 1682 1667 - neg_mode = pl->act_link_an_mode; 1668 - if (pl->pcs && pl->pcs->neg_mode) 1669 - neg_mode = pl->pcs_neg_mode; 1670 - 1671 - phylink_pcs_link_up(pl->pcs, neg_mode, pl->cur_interface, speed, 1683 + phylink_pcs_link_up(pl->pcs, pl->pcs_neg_mode, pl->cur_interface, speed, 1672 1684 duplex); 1673 1685 1674 1686 pl->mac_ops->mac_link_up(pl->config, pl->phydev, pl->act_link_an_mode,
-2
include/linux/phylink.h
··· 442 442 * are supported by this PCS. 443 443 * @ops: a pointer to the &struct phylink_pcs_ops structure 444 444 * @phylink: pointer to &struct phylink_config 445 - * @neg_mode: provide PCS neg mode via "mode" argument 446 445 * @poll: poll the PCS for link changes 447 446 * @rxc_always_on: The MAC driver requires the reference clock 448 447 * to always be on. Standalone PCS drivers which ··· 458 459 DECLARE_PHY_INTERFACE_MASK(supported_interfaces); 459 460 const struct phylink_pcs_ops *ops; 460 461 struct phylink *phylink; 461 - bool neg_mode; 462 462 bool poll; 463 463 bool rxc_always_on; 464 464 };