mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
ice: add Tx reference clock index handling to AN restart command
Extend the Restart Auto-Negotiation (AN) AdminQ command with a new parameter allowing software to specify the Tx reference clock index to be used during link restart. This patch: - adds REFCLK field definitions to ice_aqc_restart_an - updates ice_aq_set_link_restart_an() to take a new refclk parameter and properly encode it into the command - keeps legacy behavior by passing REFCLK_NOCHANGE where appropriate This prepares the driver for configurations requiring dynamic selection of the Tx reference clock as part of the AN flow. Reviewed-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com> Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com> Signed-off-by: Grzegorz Nitka <grzegorz.nitka@intel.com> Link: https://patch.msgid.link/20260607183045.1213735-13-grzegorz.nitka@intel.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
fff4ed70ca
commit
4128bda8fc
|
|
@ -1169,6 +1169,8 @@ struct ice_aqc_restart_an {
|
|||
u8 cmd_flags;
|
||||
#define ICE_AQC_RESTART_AN_LINK_RESTART BIT(1)
|
||||
#define ICE_AQC_RESTART_AN_LINK_ENABLE BIT(2)
|
||||
#define ICE_AQC_RESTART_AN_REFCLK_M GENMASK(4, 3)
|
||||
#define ICE_AQC_RESTART_AN_REFCLK_NOCHANGE 0
|
||||
u8 reserved2[13];
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -4124,12 +4124,13 @@ int ice_get_link_status(struct ice_port_info *pi, bool *link_up)
|
|||
* @pi: pointer to the port information structure
|
||||
* @ena_link: if true: enable link, if false: disable link
|
||||
* @cd: pointer to command details structure or NULL
|
||||
* @refclk: the new TX reference clock, 0 if no change
|
||||
*
|
||||
* Sets up the link and restarts the Auto-Negotiation over the link.
|
||||
*/
|
||||
int
|
||||
ice_aq_set_link_restart_an(struct ice_port_info *pi, bool ena_link,
|
||||
struct ice_sq_cd *cd)
|
||||
struct ice_sq_cd *cd, u8 refclk)
|
||||
{
|
||||
struct ice_aqc_restart_an *cmd;
|
||||
struct libie_aq_desc desc;
|
||||
|
|
@ -4145,6 +4146,8 @@ ice_aq_set_link_restart_an(struct ice_port_info *pi, bool ena_link,
|
|||
else
|
||||
cmd->cmd_flags &= ~ICE_AQC_RESTART_AN_LINK_ENABLE;
|
||||
|
||||
cmd->cmd_flags |= FIELD_PREP(ICE_AQC_RESTART_AN_REFCLK_M, refclk);
|
||||
|
||||
return ice_aq_send_cmd(pi->hw, &desc, NULL, 0, cd);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -215,7 +215,7 @@ ice_cfg_phy_fec(struct ice_port_info *pi, struct ice_aqc_set_phy_cfg_data *cfg,
|
|||
enum ice_fec_mode fec);
|
||||
int
|
||||
ice_aq_set_link_restart_an(struct ice_port_info *pi, bool ena_link,
|
||||
struct ice_sq_cd *cd);
|
||||
struct ice_sq_cd *cd, u8 refclk);
|
||||
int
|
||||
ice_aq_set_mac_cfg(struct ice_hw *hw, u16 max_frame_size, struct ice_sq_cd *cd);
|
||||
int
|
||||
|
|
|
|||
|
|
@ -3769,7 +3769,8 @@ int ice_set_link(struct ice_vsi *vsi, bool ena)
|
|||
if (vsi->type != ICE_VSI_PF)
|
||||
return -EINVAL;
|
||||
|
||||
status = ice_aq_set_link_restart_an(pi, ena, NULL);
|
||||
status = ice_aq_set_link_restart_an(pi, ena, NULL,
|
||||
ICE_AQC_RESTART_AN_REFCLK_NOCHANGE);
|
||||
|
||||
/* if link is owned by manageability, FW will return LIBIE_AQ_RC_EMODE.
|
||||
* this is not a fatal error, so print a warning message and return
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user