Commit d46b7e4f authored by Russell King's avatar Russell King Committed by Jakub Kicinski

net: phylink: rename mac_link_state() op to mac_pcs_get_state()

Rename the mac_link_state() method to mac_pcs_get_state() to make it
clear that it should be returning the MACs PCS current state, which
is used for inband negotiation rather than just reading back what the
MAC has been configured for. Update the documentation to explicitly
mention that this is for inband.

We drop the return value as well; most of phylink doesn't check the
return value and it is not clear what it should do on error - instead
arrange for state->link to be false.
Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
parent ab818362
...@@ -505,10 +505,10 @@ static void macb_validate(struct phylink_config *config, ...@@ -505,10 +505,10 @@ static void macb_validate(struct phylink_config *config,
__ETHTOOL_LINK_MODE_MASK_NBITS); __ETHTOOL_LINK_MODE_MASK_NBITS);
} }
static int macb_mac_link_state(struct phylink_config *config, static void macb_mac_pcs_get_state(struct phylink_config *config,
struct phylink_link_state *state) struct phylink_link_state *state)
{ {
return -EOPNOTSUPP; state->link = 0;
} }
static void macb_mac_an_restart(struct phylink_config *config) static void macb_mac_an_restart(struct phylink_config *config)
...@@ -604,7 +604,7 @@ static void macb_mac_link_up(struct phylink_config *config, unsigned int mode, ...@@ -604,7 +604,7 @@ static void macb_mac_link_up(struct phylink_config *config, unsigned int mode,
static const struct phylink_mac_ops macb_phylink_ops = { static const struct phylink_mac_ops macb_phylink_ops = {
.validate = macb_validate, .validate = macb_validate,
.mac_link_state = macb_mac_link_state, .mac_pcs_get_state = macb_mac_pcs_get_state,
.mac_an_restart = macb_mac_an_restart, .mac_an_restart = macb_mac_an_restart,
.mac_config = macb_mac_config, .mac_config = macb_mac_config,
.mac_link_down = macb_mac_link_down, .mac_link_down = macb_mac_link_down,
......
...@@ -3694,8 +3694,8 @@ static void mvneta_validate(struct phylink_config *config, ...@@ -3694,8 +3694,8 @@ static void mvneta_validate(struct phylink_config *config,
phylink_helper_basex_speed(state); phylink_helper_basex_speed(state);
} }
static int mvneta_mac_link_state(struct phylink_config *config, static void mvneta_mac_pcs_get_state(struct phylink_config *config,
struct phylink_link_state *state) struct phylink_link_state *state)
{ {
struct net_device *ndev = to_net_dev(config->dev); struct net_device *ndev = to_net_dev(config->dev);
struct mvneta_port *pp = netdev_priv(ndev); struct mvneta_port *pp = netdev_priv(ndev);
...@@ -3721,8 +3721,6 @@ static int mvneta_mac_link_state(struct phylink_config *config, ...@@ -3721,8 +3721,6 @@ static int mvneta_mac_link_state(struct phylink_config *config,
state->pause |= MLO_PAUSE_RX; state->pause |= MLO_PAUSE_RX;
if (gmac_stat & MVNETA_GMAC_TX_FLOW_CTRL_ENABLE) if (gmac_stat & MVNETA_GMAC_TX_FLOW_CTRL_ENABLE)
state->pause |= MLO_PAUSE_TX; state->pause |= MLO_PAUSE_TX;
return 1;
} }
static void mvneta_mac_an_restart(struct phylink_config *config) static void mvneta_mac_an_restart(struct phylink_config *config)
...@@ -3915,7 +3913,7 @@ static void mvneta_mac_link_up(struct phylink_config *config, unsigned int mode, ...@@ -3915,7 +3913,7 @@ static void mvneta_mac_link_up(struct phylink_config *config, unsigned int mode,
static const struct phylink_mac_ops mvneta_phylink_ops = { static const struct phylink_mac_ops mvneta_phylink_ops = {
.validate = mvneta_validate, .validate = mvneta_validate,
.mac_link_state = mvneta_mac_link_state, .mac_pcs_get_state = mvneta_mac_pcs_get_state,
.mac_an_restart = mvneta_mac_an_restart, .mac_an_restart = mvneta_mac_an_restart,
.mac_config = mvneta_mac_config, .mac_config = mvneta_mac_config,
.mac_link_down = mvneta_mac_link_down, .mac_link_down = mvneta_mac_link_down,
......
...@@ -4823,8 +4823,8 @@ static void mvpp2_phylink_validate(struct phylink_config *config, ...@@ -4823,8 +4823,8 @@ static void mvpp2_phylink_validate(struct phylink_config *config,
bitmap_zero(supported, __ETHTOOL_LINK_MODE_MASK_NBITS); bitmap_zero(supported, __ETHTOOL_LINK_MODE_MASK_NBITS);
} }
static void mvpp22_xlg_link_state(struct mvpp2_port *port, static void mvpp22_xlg_pcs_get_state(struct mvpp2_port *port,
struct phylink_link_state *state) struct phylink_link_state *state)
{ {
u32 val; u32 val;
...@@ -4843,8 +4843,8 @@ static void mvpp22_xlg_link_state(struct mvpp2_port *port, ...@@ -4843,8 +4843,8 @@ static void mvpp22_xlg_link_state(struct mvpp2_port *port,
state->pause |= MLO_PAUSE_RX; state->pause |= MLO_PAUSE_RX;
} }
static void mvpp2_gmac_link_state(struct mvpp2_port *port, static void mvpp2_gmac_pcs_get_state(struct mvpp2_port *port,
struct phylink_link_state *state) struct phylink_link_state *state)
{ {
u32 val; u32 val;
...@@ -4877,8 +4877,8 @@ static void mvpp2_gmac_link_state(struct mvpp2_port *port, ...@@ -4877,8 +4877,8 @@ static void mvpp2_gmac_link_state(struct mvpp2_port *port,
state->pause |= MLO_PAUSE_TX; state->pause |= MLO_PAUSE_TX;
} }
static int mvpp2_phylink_mac_link_state(struct phylink_config *config, static void mvpp2_phylink_mac_pcs_get_state(struct phylink_config *config,
struct phylink_link_state *state) struct phylink_link_state *state)
{ {
struct mvpp2_port *port = container_of(config, struct mvpp2_port, struct mvpp2_port *port = container_of(config, struct mvpp2_port,
phylink_config); phylink_config);
...@@ -4888,13 +4888,12 @@ static int mvpp2_phylink_mac_link_state(struct phylink_config *config, ...@@ -4888,13 +4888,12 @@ static int mvpp2_phylink_mac_link_state(struct phylink_config *config,
mode &= MVPP22_XLG_CTRL3_MACMODESELECT_MASK; mode &= MVPP22_XLG_CTRL3_MACMODESELECT_MASK;
if (mode == MVPP22_XLG_CTRL3_MACMODESELECT_10G) { if (mode == MVPP22_XLG_CTRL3_MACMODESELECT_10G) {
mvpp22_xlg_link_state(port, state); mvpp22_xlg_pcs_get_state(port, state);
return 1; return;
} }
} }
mvpp2_gmac_link_state(port, state); mvpp2_gmac_pcs_get_state(port, state);
return 1;
} }
static void mvpp2_mac_an_restart(struct phylink_config *config) static void mvpp2_mac_an_restart(struct phylink_config *config)
...@@ -5186,7 +5185,7 @@ static void mvpp2_mac_link_down(struct phylink_config *config, ...@@ -5186,7 +5185,7 @@ static void mvpp2_mac_link_down(struct phylink_config *config,
static const struct phylink_mac_ops mvpp2_phylink_ops = { static const struct phylink_mac_ops mvpp2_phylink_ops = {
.validate = mvpp2_phylink_validate, .validate = mvpp2_phylink_validate,
.mac_link_state = mvpp2_phylink_mac_link_state, .mac_pcs_get_state = mvpp2_phylink_mac_pcs_get_state,
.mac_an_restart = mvpp2_mac_an_restart, .mac_an_restart = mvpp2_mac_an_restart,
.mac_config = mvpp2_mac_config, .mac_config = mvpp2_mac_config,
.mac_link_up = mvpp2_mac_link_up, .mac_link_up = mvpp2_mac_link_up,
......
...@@ -361,8 +361,8 @@ static void mtk_mac_config(struct phylink_config *config, unsigned int mode, ...@@ -361,8 +361,8 @@ static void mtk_mac_config(struct phylink_config *config, unsigned int mode,
mac->id, phy_modes(state->interface), err); mac->id, phy_modes(state->interface), err);
} }
static int mtk_mac_link_state(struct phylink_config *config, static void mtk_mac_pcs_get_state(struct phylink_config *config,
struct phylink_link_state *state) struct phylink_link_state *state)
{ {
struct mtk_mac *mac = container_of(config, struct mtk_mac, struct mtk_mac *mac = container_of(config, struct mtk_mac,
phylink_config); phylink_config);
...@@ -391,8 +391,6 @@ static int mtk_mac_link_state(struct phylink_config *config, ...@@ -391,8 +391,6 @@ static int mtk_mac_link_state(struct phylink_config *config,
state->pause |= MLO_PAUSE_RX; state->pause |= MLO_PAUSE_RX;
if (pmsr & MAC_MSR_TX_FC) if (pmsr & MAC_MSR_TX_FC)
state->pause |= MLO_PAUSE_TX; state->pause |= MLO_PAUSE_TX;
return 1;
} }
static void mtk_mac_an_restart(struct phylink_config *config) static void mtk_mac_an_restart(struct phylink_config *config)
...@@ -514,7 +512,7 @@ static void mtk_validate(struct phylink_config *config, ...@@ -514,7 +512,7 @@ static void mtk_validate(struct phylink_config *config,
static const struct phylink_mac_ops mtk_phylink_ops = { static const struct phylink_mac_ops mtk_phylink_ops = {
.validate = mtk_validate, .validate = mtk_validate,
.mac_link_state = mtk_mac_link_state, .mac_pcs_get_state = mtk_mac_pcs_get_state,
.mac_an_restart = mtk_mac_an_restart, .mac_an_restart = mtk_mac_an_restart,
.mac_config = mtk_mac_config, .mac_config = mtk_mac_config,
.mac_link_down = mtk_mac_link_down, .mac_link_down = mtk_mac_link_down,
......
...@@ -868,10 +868,10 @@ static void stmmac_validate(struct phylink_config *config, ...@@ -868,10 +868,10 @@ static void stmmac_validate(struct phylink_config *config,
__ETHTOOL_LINK_MODE_MASK_NBITS); __ETHTOOL_LINK_MODE_MASK_NBITS);
} }
static int stmmac_mac_link_state(struct phylink_config *config, static void stmmac_mac_pcs_get_state(struct phylink_config *config,
struct phylink_link_state *state) struct phylink_link_state *state)
{ {
return -EOPNOTSUPP; state->link = 0;
} }
static void stmmac_mac_config(struct phylink_config *config, unsigned int mode, static void stmmac_mac_config(struct phylink_config *config, unsigned int mode,
...@@ -965,7 +965,7 @@ static void stmmac_mac_link_up(struct phylink_config *config, ...@@ -965,7 +965,7 @@ static void stmmac_mac_link_up(struct phylink_config *config,
static const struct phylink_mac_ops stmmac_phylink_mac_ops = { static const struct phylink_mac_ops stmmac_phylink_mac_ops = {
.validate = stmmac_validate, .validate = stmmac_validate,
.mac_link_state = stmmac_mac_link_state, .mac_pcs_get_state = stmmac_mac_pcs_get_state,
.mac_config = stmmac_mac_config, .mac_config = stmmac_mac_config,
.mac_an_restart = stmmac_mac_an_restart, .mac_an_restart = stmmac_mac_an_restart,
.mac_link_down = stmmac_mac_link_down, .mac_link_down = stmmac_mac_link_down,
......
...@@ -1405,8 +1405,8 @@ static void axienet_validate(struct phylink_config *config, ...@@ -1405,8 +1405,8 @@ static void axienet_validate(struct phylink_config *config,
__ETHTOOL_LINK_MODE_MASK_NBITS); __ETHTOOL_LINK_MODE_MASK_NBITS);
} }
static int axienet_mac_link_state(struct phylink_config *config, static void axienet_mac_pcs_get_state(struct phylink_config *config,
struct phylink_link_state *state) struct phylink_link_state *state)
{ {
struct net_device *ndev = to_net_dev(config->dev); struct net_device *ndev = to_net_dev(config->dev);
struct axienet_local *lp = netdev_priv(ndev); struct axienet_local *lp = netdev_priv(ndev);
...@@ -1431,8 +1431,6 @@ static int axienet_mac_link_state(struct phylink_config *config, ...@@ -1431,8 +1431,6 @@ static int axienet_mac_link_state(struct phylink_config *config,
state->an_complete = 0; state->an_complete = 0;
state->duplex = 1; state->duplex = 1;
return 1;
} }
static void axienet_mac_an_restart(struct phylink_config *config) static void axienet_mac_an_restart(struct phylink_config *config)
...@@ -1497,7 +1495,7 @@ static void axienet_mac_link_up(struct phylink_config *config, ...@@ -1497,7 +1495,7 @@ static void axienet_mac_link_up(struct phylink_config *config,
static const struct phylink_mac_ops axienet_phylink_ops = { static const struct phylink_mac_ops axienet_phylink_ops = {
.validate = axienet_validate, .validate = axienet_validate,
.mac_link_state = axienet_mac_link_state, .mac_pcs_get_state = axienet_mac_pcs_get_state,
.mac_an_restart = axienet_mac_an_restart, .mac_an_restart = axienet_mac_an_restart,
.mac_config = axienet_mac_config, .mac_config = axienet_mac_config,
.mac_link_down = axienet_mac_link_down, .mac_link_down = axienet_mac_link_down,
......
...@@ -357,9 +357,9 @@ static void phylink_mac_an_restart(struct phylink *pl) ...@@ -357,9 +357,9 @@ static void phylink_mac_an_restart(struct phylink *pl)
pl->ops->mac_an_restart(pl->config); pl->ops->mac_an_restart(pl->config);
} }
static int phylink_get_mac_state(struct phylink *pl, struct phylink_link_state *state) static void phylink_mac_pcs_get_state(struct phylink *pl,
struct phylink_link_state *state)
{ {
linkmode_copy(state->advertising, pl->link_config.advertising); linkmode_copy(state->advertising, pl->link_config.advertising);
linkmode_zero(state->lp_advertising); linkmode_zero(state->lp_advertising);
state->interface = pl->link_config.interface; state->interface = pl->link_config.interface;
...@@ -370,7 +370,7 @@ static int phylink_get_mac_state(struct phylink *pl, struct phylink_link_state * ...@@ -370,7 +370,7 @@ static int phylink_get_mac_state(struct phylink *pl, struct phylink_link_state *
state->an_complete = 0; state->an_complete = 0;
state->link = 1; state->link = 1;
return pl->ops->mac_link_state(pl->config, state); pl->ops->mac_pcs_get_state(pl->config, state);
} }
/* The fixed state is... fixed except for the link state, /* The fixed state is... fixed except for the link state,
...@@ -493,7 +493,7 @@ static void phylink_resolve(struct work_struct *w) ...@@ -493,7 +493,7 @@ static void phylink_resolve(struct work_struct *w)
break; break;
case MLO_AN_INBAND: case MLO_AN_INBAND:
phylink_get_mac_state(pl, &link_state); phylink_mac_pcs_get_state(pl, &link_state);
/* If we have a phy, the "up" state is the union of /* If we have a phy, the "up" state is the union of
* both the PHY and the MAC */ * both the PHY and the MAC */
...@@ -1142,7 +1142,7 @@ int phylink_ethtool_ksettings_get(struct phylink *pl, ...@@ -1142,7 +1142,7 @@ int phylink_ethtool_ksettings_get(struct phylink *pl,
if (pl->phydev) if (pl->phydev)
break; break;
phylink_get_mac_state(pl, &link_state); phylink_mac_pcs_get_state(pl, &link_state);
/* The MAC is reporting the link results from its own PCS /* The MAC is reporting the link results from its own PCS
* layer via in-band status. Report these as the current * layer via in-band status. Report these as the current
...@@ -1561,10 +1561,7 @@ static int phylink_mii_read(struct phylink *pl, unsigned int phy_id, ...@@ -1561,10 +1561,7 @@ static int phylink_mii_read(struct phylink *pl, unsigned int phy_id,
case MLO_AN_INBAND: case MLO_AN_INBAND:
if (phy_id == 0) { if (phy_id == 0) {
val = phylink_get_mac_state(pl, &state); phylink_mac_pcs_get_state(pl, &state);
if (val < 0)
return val;
val = phylink_mii_emul_read(reg, &state); val = phylink_mii_emul_read(reg, &state);
} }
break; break;
......
...@@ -72,7 +72,7 @@ struct phylink_config { ...@@ -72,7 +72,7 @@ struct phylink_config {
/** /**
* struct phylink_mac_ops - MAC operations structure. * struct phylink_mac_ops - MAC operations structure.
* @validate: Validate and update the link configuration. * @validate: Validate and update the link configuration.
* @mac_link_state: Read the current link state from the hardware. * @mac_pcs_get_state: Read the current link state from the hardware.
* @mac_config: configure the MAC for the selected mode and state. * @mac_config: configure the MAC for the selected mode and state.
* @mac_an_restart: restart 802.3z BaseX autonegotiation. * @mac_an_restart: restart 802.3z BaseX autonegotiation.
* @mac_link_down: take the link down. * @mac_link_down: take the link down.
...@@ -84,8 +84,8 @@ struct phylink_mac_ops { ...@@ -84,8 +84,8 @@ struct phylink_mac_ops {
void (*validate)(struct phylink_config *config, void (*validate)(struct phylink_config *config,
unsigned long *supported, unsigned long *supported,
struct phylink_link_state *state); struct phylink_link_state *state);
int (*mac_link_state)(struct phylink_config *config, void (*mac_pcs_get_state)(struct phylink_config *config,
struct phylink_link_state *state); struct phylink_link_state *state);
void (*mac_config)(struct phylink_config *config, unsigned int mode, void (*mac_config)(struct phylink_config *config, unsigned int mode,
const struct phylink_link_state *state); const struct phylink_link_state *state);
void (*mac_an_restart)(struct phylink_config *config); void (*mac_an_restart)(struct phylink_config *config);
...@@ -127,18 +127,19 @@ void validate(struct phylink_config *config, unsigned long *supported, ...@@ -127,18 +127,19 @@ void validate(struct phylink_config *config, unsigned long *supported,
struct phylink_link_state *state); struct phylink_link_state *state);
/** /**
* mac_link_state() - Read the current link state from the hardware * mac_pcs_get_state() - Read the current inband link state from the hardware
* @config: a pointer to a &struct phylink_config. * @config: a pointer to a &struct phylink_config.
* @state: a pointer to a &struct phylink_link_state. * @state: a pointer to a &struct phylink_link_state.
* *
* Read the current link state from the MAC, reporting the current * Read the current inband link state from the MAC PCS, reporting the
* speed in @state->speed, duplex mode in @state->duplex, pause mode * current speed in @state->speed, duplex mode in @state->duplex, pause
* in @state->pause using the %MLO_PAUSE_RX and %MLO_PAUSE_TX bits, * mode in @state->pause using the %MLO_PAUSE_RX and %MLO_PAUSE_TX bits,
* negotiation completion state in @state->an_complete, and link * negotiation completion state in @state->an_complete, and link up state
* up state in @state->link. * in @state->link. If possible, @state->lp_advertising should also be
* populated.
*/ */
int mac_link_state(struct phylink_config *config, void mac_pcs_get_state(struct phylink_config *config,
struct phylink_link_state *state); struct phylink_link_state *state);
/** /**
* mac_config() - configure the MAC for the selected mode and state * mac_config() - configure the MAC for the selected mode and state
...@@ -166,7 +167,7 @@ int mac_link_state(struct phylink_config *config, ...@@ -166,7 +167,7 @@ int mac_link_state(struct phylink_config *config,
* 1000base-X or Cisco SGMII mode depending on the @state->interface * 1000base-X or Cisco SGMII mode depending on the @state->interface
* mode). In both cases, link state management (whether the link * mode). In both cases, link state management (whether the link
* is up or not) is performed by the MAC, and reported via the * is up or not) is performed by the MAC, and reported via the
* mac_link_state() callback. Changes in link state must be made * mac_pcs_get_state() callback. Changes in link state must be made
* by calling phylink_mac_change(). * by calling phylink_mac_change().
* *
* If in 802.3z mode, the link speed is fixed, dependent on the * If in 802.3z mode, the link speed is fixed, dependent on the
......
...@@ -153,8 +153,8 @@ void dsa_port_link_unregister_of(struct dsa_port *dp); ...@@ -153,8 +153,8 @@ void dsa_port_link_unregister_of(struct dsa_port *dp);
void dsa_port_phylink_validate(struct phylink_config *config, void dsa_port_phylink_validate(struct phylink_config *config,
unsigned long *supported, unsigned long *supported,
struct phylink_link_state *state); struct phylink_link_state *state);
int dsa_port_phylink_mac_link_state(struct phylink_config *config, void dsa_port_phylink_mac_pcs_get_state(struct phylink_config *config,
struct phylink_link_state *state); struct phylink_link_state *state);
void dsa_port_phylink_mac_config(struct phylink_config *config, void dsa_port_phylink_mac_config(struct phylink_config *config,
unsigned int mode, unsigned int mode,
const struct phylink_link_state *state); const struct phylink_link_state *state);
......
...@@ -429,19 +429,22 @@ void dsa_port_phylink_validate(struct phylink_config *config, ...@@ -429,19 +429,22 @@ void dsa_port_phylink_validate(struct phylink_config *config,
} }
EXPORT_SYMBOL_GPL(dsa_port_phylink_validate); EXPORT_SYMBOL_GPL(dsa_port_phylink_validate);
int dsa_port_phylink_mac_link_state(struct phylink_config *config, void dsa_port_phylink_mac_pcs_get_state(struct phylink_config *config,
struct phylink_link_state *state) struct phylink_link_state *state)
{ {
struct dsa_port *dp = container_of(config, struct dsa_port, pl_config); struct dsa_port *dp = container_of(config, struct dsa_port, pl_config);
struct dsa_switch *ds = dp->ds; struct dsa_switch *ds = dp->ds;
/* Only called for SGMII and 802.3z */ /* Only called for inband modes */
if (!ds->ops->phylink_mac_link_state) if (!ds->ops->phylink_mac_link_state) {
return -EOPNOTSUPP; state->link = 0;
return;
}
return ds->ops->phylink_mac_link_state(ds, dp->index, state); if (ds->ops->phylink_mac_link_state(ds, dp->index, state) < 0)
state->link = 0;
} }
EXPORT_SYMBOL_GPL(dsa_port_phylink_mac_link_state); EXPORT_SYMBOL_GPL(dsa_port_phylink_mac_pcs_get_state);
void dsa_port_phylink_mac_config(struct phylink_config *config, void dsa_port_phylink_mac_config(struct phylink_config *config,
unsigned int mode, unsigned int mode,
...@@ -510,7 +513,7 @@ EXPORT_SYMBOL_GPL(dsa_port_phylink_mac_link_up); ...@@ -510,7 +513,7 @@ EXPORT_SYMBOL_GPL(dsa_port_phylink_mac_link_up);
const struct phylink_mac_ops dsa_port_phylink_mac_ops = { const struct phylink_mac_ops dsa_port_phylink_mac_ops = {
.validate = dsa_port_phylink_validate, .validate = dsa_port_phylink_validate,
.mac_link_state = dsa_port_phylink_mac_link_state, .mac_pcs_get_state = dsa_port_phylink_mac_pcs_get_state,
.mac_config = dsa_port_phylink_mac_config, .mac_config = dsa_port_phylink_mac_config,
.mac_an_restart = dsa_port_phylink_mac_an_restart, .mac_an_restart = dsa_port_phylink_mac_an_restart,
.mac_link_down = dsa_port_phylink_mac_link_down, .mac_link_down = dsa_port_phylink_mac_link_down,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment