mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-09-08 07:16:26 +00:00
net: phylink: strip out pre-March 2020 legacy code
Strip out all the pre-March 2020 legacy code from phylink now that the last user of it is gone. Reviewed-by: Daniel Golle <daniel@makrotopia.org> Tested-by: Daniel Golle <daniel@makrotopia.org> Tested-by: Frank Wunderlich <frank-w@public-files.de> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
28e1737d25
commit
4d72c3bb60
@ -1198,13 +1198,6 @@ static int phylink_change_inband_advert(struct phylink *pl)
|
|||||||
if (test_bit(PHYLINK_DISABLE_STOPPED, &pl->phylink_disable_state))
|
if (test_bit(PHYLINK_DISABLE_STOPPED, &pl->phylink_disable_state))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (!pl->pcs && pl->config->legacy_pre_march2020) {
|
|
||||||
/* Legacy method */
|
|
||||||
phylink_mac_config(pl, &pl->link_config);
|
|
||||||
phylink_pcs_an_restart(pl);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
phylink_dbg(pl, "%s: mode=%s/%s adv=%*pb pause=%02x\n", __func__,
|
phylink_dbg(pl, "%s: mode=%s/%s adv=%*pb pause=%02x\n", __func__,
|
||||||
phylink_an_mode_str(pl->cur_link_an_mode),
|
phylink_an_mode_str(pl->cur_link_an_mode),
|
||||||
phy_modes(pl->link_config.interface),
|
phy_modes(pl->link_config.interface),
|
||||||
@ -1257,9 +1250,6 @@ static void phylink_mac_pcs_get_state(struct phylink *pl,
|
|||||||
|
|
||||||
if (pl->pcs)
|
if (pl->pcs)
|
||||||
pl->pcs->ops->pcs_get_state(pl->pcs, state);
|
pl->pcs->ops->pcs_get_state(pl->pcs, state);
|
||||||
else if (pl->mac_ops->mac_pcs_get_state &&
|
|
||||||
pl->config->legacy_pre_march2020)
|
|
||||||
pl->mac_ops->mac_pcs_get_state(pl->config, state);
|
|
||||||
else
|
else
|
||||||
state->link = 0;
|
state->link = 0;
|
||||||
}
|
}
|
||||||
@ -1492,13 +1482,6 @@ static void phylink_resolve(struct work_struct *w)
|
|||||||
}
|
}
|
||||||
phylink_major_config(pl, false, &link_state);
|
phylink_major_config(pl, false, &link_state);
|
||||||
pl->link_config.interface = link_state.interface;
|
pl->link_config.interface = link_state.interface;
|
||||||
} else if (!pl->pcs && pl->config->legacy_pre_march2020) {
|
|
||||||
/* The interface remains unchanged, only the speed,
|
|
||||||
* duplex or pause settings have changed. Call the
|
|
||||||
* old mac_config() method to configure the MAC/PCS
|
|
||||||
* only if we do not have a legacy MAC driver.
|
|
||||||
*/
|
|
||||||
phylink_mac_config(pl, &link_state);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3513,7 +3496,7 @@ static void phylink_decode_usgmii_word(struct phylink_link_state *state,
|
|||||||
*
|
*
|
||||||
* Parse the Clause 37 or Cisco SGMII link partner negotiation word into
|
* Parse the Clause 37 or Cisco SGMII link partner negotiation word into
|
||||||
* the phylink @state structure. This is suitable to be used for implementing
|
* the phylink @state structure. This is suitable to be used for implementing
|
||||||
* the mac_pcs_get_state() member of the struct phylink_mac_ops structure if
|
* the pcs_get_state() member of the struct phylink_pcs_ops structure if
|
||||||
* accessing @bmsr and @lpa cannot be done with MDIO directly.
|
* accessing @bmsr and @lpa cannot be done with MDIO directly.
|
||||||
*/
|
*/
|
||||||
void phylink_mii_c22_pcs_decode_state(struct phylink_link_state *state,
|
void phylink_mii_c22_pcs_decode_state(struct phylink_link_state *state,
|
||||||
@ -3563,7 +3546,7 @@ EXPORT_SYMBOL_GPL(phylink_mii_c22_pcs_decode_state);
|
|||||||
* Read the MAC PCS state from the MII device configured in @config and
|
* Read the MAC PCS state from the MII device configured in @config and
|
||||||
* parse the Clause 37 or Cisco SGMII link partner negotiation word into
|
* parse the Clause 37 or Cisco SGMII link partner negotiation word into
|
||||||
* the phylink @state structure. This is suitable to be directly plugged
|
* the phylink @state structure. This is suitable to be directly plugged
|
||||||
* into the mac_pcs_get_state() member of the struct phylink_mac_ops
|
* into the pcs_get_state() member of the struct phylink_pcs_ops
|
||||||
* structure.
|
* structure.
|
||||||
*/
|
*/
|
||||||
void phylink_mii_c22_pcs_get_state(struct mdio_device *pcs,
|
void phylink_mii_c22_pcs_get_state(struct mdio_device *pcs,
|
||||||
@ -3674,8 +3657,8 @@ EXPORT_SYMBOL_GPL(phylink_mii_c22_pcs_config);
|
|||||||
* clause 37 negotiation.
|
* clause 37 negotiation.
|
||||||
*
|
*
|
||||||
* Restart the clause 37 negotiation with the link partner. This is
|
* Restart the clause 37 negotiation with the link partner. This is
|
||||||
* suitable to be directly plugged into the mac_pcs_get_state() member
|
* suitable to be directly plugged into the pcs_get_state() member
|
||||||
* of the struct phylink_mac_ops structure.
|
* of the struct phylink_pcs_ops structure.
|
||||||
*/
|
*/
|
||||||
void phylink_mii_c22_pcs_an_restart(struct mdio_device *pcs)
|
void phylink_mii_c22_pcs_an_restart(struct mdio_device *pcs)
|
||||||
{
|
{
|
||||||
|
@ -201,8 +201,6 @@ enum phylink_op_type {
|
|||||||
* struct phylink_config - PHYLINK configuration structure
|
* struct phylink_config - PHYLINK configuration structure
|
||||||
* @dev: a pointer to a struct device associated with the MAC
|
* @dev: a pointer to a struct device associated with the MAC
|
||||||
* @type: operation type of PHYLINK instance
|
* @type: operation type of PHYLINK instance
|
||||||
* @legacy_pre_march2020: driver has not been updated for March 2020 updates
|
|
||||||
* (See commit 7cceb599d15d ("net: phylink: avoid mac_config calls")
|
|
||||||
* @poll_fixed_state: if true, starts link_poll,
|
* @poll_fixed_state: if true, starts link_poll,
|
||||||
* if MAC link is at %MLO_AN_FIXED mode.
|
* if MAC link is at %MLO_AN_FIXED mode.
|
||||||
* @mac_managed_pm: if true, indicate the MAC driver is responsible for PHY PM.
|
* @mac_managed_pm: if true, indicate the MAC driver is responsible for PHY PM.
|
||||||
@ -216,7 +214,6 @@ enum phylink_op_type {
|
|||||||
struct phylink_config {
|
struct phylink_config {
|
||||||
struct device *dev;
|
struct device *dev;
|
||||||
enum phylink_op_type type;
|
enum phylink_op_type type;
|
||||||
bool legacy_pre_march2020;
|
|
||||||
bool poll_fixed_state;
|
bool poll_fixed_state;
|
||||||
bool mac_managed_pm;
|
bool mac_managed_pm;
|
||||||
bool ovr_an_inband;
|
bool ovr_an_inband;
|
||||||
@ -230,7 +227,6 @@ 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_select_pcs: Select a PCS for the interface mode.
|
* @mac_select_pcs: Select a PCS for the interface mode.
|
||||||
* @mac_pcs_get_state: Read the current link state from the hardware.
|
|
||||||
* @mac_prepare: prepare for a major reconfiguration of the interface.
|
* @mac_prepare: prepare for a major reconfiguration of the interface.
|
||||||
* @mac_config: configure the MAC for the selected mode and state.
|
* @mac_config: configure the MAC for the selected mode and state.
|
||||||
* @mac_finish: finish a major reconfiguration of the interface.
|
* @mac_finish: finish a major reconfiguration of the interface.
|
||||||
@ -245,8 +241,6 @@ struct phylink_mac_ops {
|
|||||||
struct phylink_link_state *state);
|
struct phylink_link_state *state);
|
||||||
struct phylink_pcs *(*mac_select_pcs)(struct phylink_config *config,
|
struct phylink_pcs *(*mac_select_pcs)(struct phylink_config *config,
|
||||||
phy_interface_t interface);
|
phy_interface_t interface);
|
||||||
void (*mac_pcs_get_state)(struct phylink_config *config,
|
|
||||||
struct phylink_link_state *state);
|
|
||||||
int (*mac_prepare)(struct phylink_config *config, unsigned int mode,
|
int (*mac_prepare)(struct phylink_config *config, unsigned int mode,
|
||||||
phy_interface_t iface);
|
phy_interface_t iface);
|
||||||
void (*mac_config)(struct phylink_config *config, unsigned int mode,
|
void (*mac_config)(struct phylink_config *config, unsigned int mode,
|
||||||
@ -312,25 +306,6 @@ void validate(struct phylink_config *config, unsigned long *supported,
|
|||||||
struct phylink_pcs *mac_select_pcs(struct phylink_config *config,
|
struct phylink_pcs *mac_select_pcs(struct phylink_config *config,
|
||||||
phy_interface_t interface);
|
phy_interface_t interface);
|
||||||
|
|
||||||
/**
|
|
||||||
* mac_pcs_get_state() - Read the current inband link state from the hardware
|
|
||||||
* @config: a pointer to a &struct phylink_config.
|
|
||||||
* @state: a pointer to a &struct phylink_link_state.
|
|
||||||
*
|
|
||||||
* Read the current inband link state from the MAC PCS, reporting the
|
|
||||||
* current speed in @state->speed, duplex mode in @state->duplex, pause
|
|
||||||
* mode in @state->pause using the %MLO_PAUSE_RX and %MLO_PAUSE_TX bits,
|
|
||||||
* negotiation completion state in @state->an_complete, and link up state
|
|
||||||
* in @state->link. If possible, @state->lp_advertising should also be
|
|
||||||
* populated.
|
|
||||||
*
|
|
||||||
* Note: This is a legacy method. This function will not be called unless
|
|
||||||
* legacy_pre_march2020 is set in &struct phylink_config and there is no
|
|
||||||
* PCS attached.
|
|
||||||
*/
|
|
||||||
void mac_pcs_get_state(struct phylink_config *config,
|
|
||||||
struct phylink_link_state *state);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mac_prepare() - prepare to change the PHY interface mode
|
* mac_prepare() - prepare to change the PHY interface mode
|
||||||
* @config: a pointer to a &struct phylink_config.
|
* @config: a pointer to a &struct phylink_config.
|
||||||
@ -367,17 +342,9 @@ int mac_prepare(struct phylink_config *config, unsigned int mode,
|
|||||||
* guaranteed to be correct, and so any mac_config() implementation must
|
* guaranteed to be correct, and so any mac_config() implementation must
|
||||||
* never reference these fields.
|
* never reference these fields.
|
||||||
*
|
*
|
||||||
* Note: For legacy March 2020 drivers (drivers with legacy_pre_march2020 set
|
* This will only be called to reconfigure the MAC for a "major" change in
|
||||||
* in their &phylnk_config and which don't have a PCS), this function will be
|
* e.g. interface mode. It will not be called for changes in speed, duplex
|
||||||
* called on each link up event, and to also change the in-band advert. For
|
* or pause modes or to change the in-band advertisement.
|
||||||
* non-legacy drivers, it will only be called to reconfigure the MAC for a
|
|
||||||
* "major" change in e.g. interface mode. It will not be called for changes
|
|
||||||
* in speed, duplex or pause modes or to change the in-band advertisement.
|
|
||||||
* In any case, it is strongly preferred that speed, duplex and pause settings
|
|
||||||
* are handled in the mac_link_up() method and not in this method.
|
|
||||||
*
|
|
||||||
* (this requires a rewrite - please refer to mac_link_up() for situations
|
|
||||||
* where the PCS and MAC are not tightly integrated.)
|
|
||||||
*
|
*
|
||||||
* In all negotiation modes, as defined by @mode, @state->pause indicates the
|
* In all negotiation modes, as defined by @mode, @state->pause indicates the
|
||||||
* pause settings which should be applied as follows. If %MLO_PAUSE_AN is not
|
* pause settings which should be applied as follows. If %MLO_PAUSE_AN is not
|
||||||
@ -409,7 +376,7 @@ int mac_prepare(struct phylink_config *config, unsigned int mode,
|
|||||||
* 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_pcs_get_state() callback. Changes in link state must be made
|
* pcs_get_state() callback. Changes in link state must be made
|
||||||
* by calling phylink_mac_change().
|
* by calling phylink_mac_change().
|
||||||
*
|
*
|
||||||
* Interface mode specific details are mentioned below.
|
* Interface mode specific details are mentioned below.
|
||||||
@ -601,8 +568,8 @@ void pcs_disable(struct phylink_pcs *pcs);
|
|||||||
* in @state->link. If possible, @state->lp_advertising should also be
|
* in @state->link. If possible, @state->lp_advertising should also be
|
||||||
* populated.
|
* populated.
|
||||||
*
|
*
|
||||||
* When present, this overrides mac_pcs_get_state() in &struct
|
* When present, this overrides pcs_get_state() in &struct
|
||||||
* phylink_mac_ops.
|
* phylink_pcs_ops.
|
||||||
*/
|
*/
|
||||||
void pcs_get_state(struct phylink_pcs *pcs,
|
void pcs_get_state(struct phylink_pcs *pcs,
|
||||||
struct phylink_link_state *state);
|
struct phylink_link_state *state);
|
||||||
|
Loading…
Reference in New Issue
Block a user