Skip to content

Commit 745b5c6

Browse files
Edwin Peerdavem330
authored andcommitted
bnxt_en: avoid link reset if speed is not changed
PORT_PHY_CONFIG is always sent with REQ_FLAGS_RESET_PHY set. This flag must be set in order for the firmware to institute the requested PHY change immediately, but it results in a link flap. This is unnecessary and results in an improved user experience if the PHY reconfiguration is avoided when the user requested speed does not constitute a change. Signed-off-by: Edwin Peer <edwin.peer@broadcom.com> Signed-off-by: Michael Chan <michael.chan@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 3128e81 commit 745b5c6

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1736,6 +1736,11 @@ static int bnxt_force_link_speed(struct net_device *dev, u32 ethtool_speed)
17361736
return -EINVAL;
17371737
}
17381738

1739+
if (link_info->req_link_speed == fw_speed &&
1740+
link_info->req_signal_mode == sig_mode &&
1741+
link_info->autoneg == 0)
1742+
return -EALREADY;
1743+
17391744
link_info->req_link_speed = fw_speed;
17401745
link_info->req_signal_mode = sig_mode;
17411746
link_info->req_duplex = BNXT_LINK_DUPLEX_FULL;
@@ -1816,8 +1821,11 @@ static int bnxt_set_link_ksettings(struct net_device *dev,
18161821
}
18171822
speed = base->speed;
18181823
rc = bnxt_force_link_speed(dev, speed);
1819-
if (rc)
1824+
if (rc) {
1825+
if (rc == -EALREADY)
1826+
rc = 0;
18201827
goto set_setting_exit;
1828+
}
18211829
}
18221830

18231831
if (netif_running(dev))

0 commit comments

Comments
 (0)