Commit 50079916 authored by Shravya KN's avatar Shravya KN Committed by Paolo Abeni
Browse files

bnxt_en: Set backplane link modes correctly for ethtool



Use the return value from bnxt_get_media() to determine the port and
link modes.  bnxt_get_media() returns the proper BNXT_MEDIA_KR when
the PHY is backplane.  This will correct the ethtool settings for
backplane devices.

Fixes: 5d4e1bf6 ("bnxt_en: extend media types to supported and autoneg modes")
Reviewed-by: default avatarSomnath Kotur <somnath.kotur@broadcom.com>
Signed-off-by: default avatarShravya KN <shravya.k-n@broadcom.com>
Signed-off-by: default avatarMichael Chan <michael.chan@broadcom.com>
Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent 5311598f
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -2837,19 +2837,24 @@ static int bnxt_get_link_ksettings(struct net_device *dev,
	}

	base->port = PORT_NONE;
	if (link_info->media_type == PORT_PHY_QCFG_RESP_MEDIA_TYPE_TP) {
	if (media == BNXT_MEDIA_TP) {
		base->port = PORT_TP;
		linkmode_set_bit(ETHTOOL_LINK_MODE_TP_BIT,
				 lk_ksettings->link_modes.supported);
		linkmode_set_bit(ETHTOOL_LINK_MODE_TP_BIT,
				 lk_ksettings->link_modes.advertising);
	} else if (media == BNXT_MEDIA_KR) {
		linkmode_set_bit(ETHTOOL_LINK_MODE_Backplane_BIT,
				 lk_ksettings->link_modes.supported);
		linkmode_set_bit(ETHTOOL_LINK_MODE_Backplane_BIT,
				 lk_ksettings->link_modes.advertising);
	} else {
		linkmode_set_bit(ETHTOOL_LINK_MODE_FIBRE_BIT,
				 lk_ksettings->link_modes.supported);
		linkmode_set_bit(ETHTOOL_LINK_MODE_FIBRE_BIT,
				 lk_ksettings->link_modes.advertising);

		if (link_info->media_type == PORT_PHY_QCFG_RESP_MEDIA_TYPE_DAC)
		if (media == BNXT_MEDIA_CR)
			base->port = PORT_DA;
		else
			base->port = PORT_FIBRE;