mirror of https://gitee.com/openkylin/linux.git
i40e: Add ablitity to enable/disable link from set_link_restart_an
The ability is already there in the fw and this will make it easy to toggle link without calling set_phy_config when no other link settings need to change. Change-ID: I185567ae81776382ac145247e4eb1ee95f22382c Signed-off-by: Catherine Sullivan <catherine.sullivan@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
c571ea05a0
commit
1ac978af7c
|
@ -971,12 +971,14 @@ i40e_status i40e_aq_clear_pxe_mode(struct i40e_hw *hw,
|
||||||
/**
|
/**
|
||||||
* i40e_aq_set_link_restart_an
|
* i40e_aq_set_link_restart_an
|
||||||
* @hw: pointer to the hw struct
|
* @hw: pointer to the hw struct
|
||||||
|
* @enable_link: if true: enable link, if false: disable link
|
||||||
* @cmd_details: pointer to command details structure or NULL
|
* @cmd_details: pointer to command details structure or NULL
|
||||||
*
|
*
|
||||||
* Sets up the link and restarts the Auto-Negotiation over the link.
|
* Sets up the link and restarts the Auto-Negotiation over the link.
|
||||||
**/
|
**/
|
||||||
i40e_status i40e_aq_set_link_restart_an(struct i40e_hw *hw,
|
i40e_status i40e_aq_set_link_restart_an(struct i40e_hw *hw,
|
||||||
struct i40e_asq_cmd_details *cmd_details)
|
bool enable_link,
|
||||||
|
struct i40e_asq_cmd_details *cmd_details)
|
||||||
{
|
{
|
||||||
struct i40e_aq_desc desc;
|
struct i40e_aq_desc desc;
|
||||||
struct i40e_aqc_set_link_restart_an *cmd =
|
struct i40e_aqc_set_link_restart_an *cmd =
|
||||||
|
@ -987,6 +989,10 @@ i40e_status i40e_aq_set_link_restart_an(struct i40e_hw *hw,
|
||||||
i40e_aqc_opc_set_link_restart_an);
|
i40e_aqc_opc_set_link_restart_an);
|
||||||
|
|
||||||
cmd->command = I40E_AQ_PHY_RESTART_AN;
|
cmd->command = I40E_AQ_PHY_RESTART_AN;
|
||||||
|
if (enable_link)
|
||||||
|
cmd->command |= I40E_AQ_PHY_LINK_ENABLE;
|
||||||
|
else
|
||||||
|
cmd->command &= ~I40E_AQ_PHY_LINK_ENABLE;
|
||||||
|
|
||||||
status = i40e_asq_send_command(hw, &desc, NULL, 0, cmd_details);
|
status = i40e_asq_send_command(hw, &desc, NULL, 0, cmd_details);
|
||||||
|
|
||||||
|
|
|
@ -1027,9 +1027,10 @@ static int i40e_nway_reset(struct net_device *netdev)
|
||||||
struct i40e_netdev_priv *np = netdev_priv(netdev);
|
struct i40e_netdev_priv *np = netdev_priv(netdev);
|
||||||
struct i40e_pf *pf = np->vsi->back;
|
struct i40e_pf *pf = np->vsi->back;
|
||||||
struct i40e_hw *hw = &pf->hw;
|
struct i40e_hw *hw = &pf->hw;
|
||||||
|
bool link_up = hw->phy.link_info.link_info & I40E_AQ_LINK_UP;
|
||||||
i40e_status ret = 0;
|
i40e_status ret = 0;
|
||||||
|
|
||||||
ret = i40e_aq_set_link_restart_an(hw, NULL);
|
ret = i40e_aq_set_link_restart_an(hw, link_up, NULL);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
netdev_info(netdev, "link restart failed, aq_err=%d\n",
|
netdev_info(netdev, "link restart failed, aq_err=%d\n",
|
||||||
pf->hw.aq.asq_last_status);
|
pf->hw.aq.asq_last_status);
|
||||||
|
|
|
@ -77,7 +77,8 @@ i40e_status i40e_aq_set_default_vsi(struct i40e_hw *hw, u16 vsi_id,
|
||||||
i40e_status i40e_aq_clear_pxe_mode(struct i40e_hw *hw,
|
i40e_status i40e_aq_clear_pxe_mode(struct i40e_hw *hw,
|
||||||
struct i40e_asq_cmd_details *cmd_details);
|
struct i40e_asq_cmd_details *cmd_details);
|
||||||
i40e_status i40e_aq_set_link_restart_an(struct i40e_hw *hw,
|
i40e_status i40e_aq_set_link_restart_an(struct i40e_hw *hw,
|
||||||
struct i40e_asq_cmd_details *cmd_details);
|
bool enable_link,
|
||||||
|
struct i40e_asq_cmd_details *cmd_details);
|
||||||
i40e_status i40e_aq_get_link_info(struct i40e_hw *hw,
|
i40e_status i40e_aq_get_link_info(struct i40e_hw *hw,
|
||||||
bool enable_lse, struct i40e_link_status *link,
|
bool enable_lse, struct i40e_link_status *link,
|
||||||
struct i40e_asq_cmd_details *cmd_details);
|
struct i40e_asq_cmd_details *cmd_details);
|
||||||
|
|
Loading…
Reference in New Issue