Skip to content

Commit 0969402

Browse files
Czeslaw ZagorskiJeff Kirsher
authored andcommitted
i40e: Update visual effect for advertised FEC mode.
Updates visual effect for advertised mode after setting desired mode. The mode appears in advertised FEC mode correctly, when ethtool interface command is called. Without this commit advertised FEC is displayed regardless of the settings as "None BaseR RS". Signed-off-by: Czeslaw Zagorski <[email protected]> Tested-by: Andrew Bowers <[email protected]> Signed-off-by: Jeff Kirsher <[email protected]>
1 parent 6db6032 commit 0969402

File tree

1 file changed

+35
-28
lines changed

1 file changed

+35
-28
lines changed

drivers/net/ethernet/intel/i40e/i40e_ethtool.c

Lines changed: 35 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -710,6 +710,35 @@ static void i40e_phy_type_to_ethtool(struct i40e_pf *pf,
710710
}
711711
}
712712

713+
/**
714+
* i40e_get_settings_link_up_fec - Get the FEC mode encoding from mask
715+
* @req_fec_info: mask request FEC info
716+
* @ks: ethtool ksettings to fill in
717+
**/
718+
static void i40e_get_settings_link_up_fec(u8 req_fec_info,
719+
struct ethtool_link_ksettings *ks)
720+
{
721+
ethtool_link_ksettings_add_link_mode(ks, supported, FEC_NONE);
722+
ethtool_link_ksettings_add_link_mode(ks, supported, FEC_RS);
723+
ethtool_link_ksettings_add_link_mode(ks, supported, FEC_BASER);
724+
725+
if (I40E_AQ_SET_FEC_REQUEST_RS & req_fec_info) {
726+
ethtool_link_ksettings_add_link_mode(ks, advertising, FEC_RS);
727+
} else if (I40E_AQ_SET_FEC_REQUEST_KR & req_fec_info) {
728+
ethtool_link_ksettings_add_link_mode(ks, advertising,
729+
FEC_BASER);
730+
} else {
731+
ethtool_link_ksettings_add_link_mode(ks, advertising,
732+
FEC_NONE);
733+
if (I40E_AQ_SET_FEC_AUTO & req_fec_info) {
734+
ethtool_link_ksettings_add_link_mode(ks, advertising,
735+
FEC_RS);
736+
ethtool_link_ksettings_add_link_mode(ks, advertising,
737+
FEC_BASER);
738+
}
739+
}
740+
}
741+
713742
/**
714743
* i40e_get_settings_link_up - Get the Link settings for when link is up
715744
* @hw: hw structure
@@ -769,13 +798,7 @@ static void i40e_get_settings_link_up(struct i40e_hw *hw,
769798
25000baseSR_Full);
770799
ethtool_link_ksettings_add_link_mode(ks, advertising,
771800
25000baseSR_Full);
772-
ethtool_link_ksettings_add_link_mode(ks, supported, FEC_NONE);
773-
ethtool_link_ksettings_add_link_mode(ks, supported, FEC_RS);
774-
ethtool_link_ksettings_add_link_mode(ks, supported, FEC_BASER);
775-
ethtool_link_ksettings_add_link_mode(ks, advertising, FEC_NONE);
776-
ethtool_link_ksettings_add_link_mode(ks, advertising, FEC_RS);
777-
ethtool_link_ksettings_add_link_mode(ks, advertising,
778-
FEC_BASER);
801+
i40e_get_settings_link_up_fec(hw_link_info->req_fec_info, ks);
779802
ethtool_link_ksettings_add_link_mode(ks, supported,
780803
10000baseSR_Full);
781804
ethtool_link_ksettings_add_link_mode(ks, advertising,
@@ -892,9 +915,6 @@ static void i40e_get_settings_link_up(struct i40e_hw *hw,
892915
40000baseKR4_Full);
893916
ethtool_link_ksettings_add_link_mode(ks, supported,
894917
25000baseKR_Full);
895-
ethtool_link_ksettings_add_link_mode(ks, supported, FEC_NONE);
896-
ethtool_link_ksettings_add_link_mode(ks, supported, FEC_RS);
897-
ethtool_link_ksettings_add_link_mode(ks, supported, FEC_BASER);
898918
ethtool_link_ksettings_add_link_mode(ks, supported,
899919
20000baseKR2_Full);
900920
ethtool_link_ksettings_add_link_mode(ks, supported,
@@ -908,10 +928,7 @@ static void i40e_get_settings_link_up(struct i40e_hw *hw,
908928
40000baseKR4_Full);
909929
ethtool_link_ksettings_add_link_mode(ks, advertising,
910930
25000baseKR_Full);
911-
ethtool_link_ksettings_add_link_mode(ks, advertising, FEC_NONE);
912-
ethtool_link_ksettings_add_link_mode(ks, advertising, FEC_RS);
913-
ethtool_link_ksettings_add_link_mode(ks, advertising,
914-
FEC_BASER);
931+
i40e_get_settings_link_up_fec(hw_link_info->req_fec_info, ks);
915932
ethtool_link_ksettings_add_link_mode(ks, advertising,
916933
20000baseKR2_Full);
917934
ethtool_link_ksettings_add_link_mode(ks, advertising,
@@ -929,13 +946,8 @@ static void i40e_get_settings_link_up(struct i40e_hw *hw,
929946
25000baseCR_Full);
930947
ethtool_link_ksettings_add_link_mode(ks, advertising,
931948
25000baseCR_Full);
932-
ethtool_link_ksettings_add_link_mode(ks, supported, FEC_NONE);
933-
ethtool_link_ksettings_add_link_mode(ks, supported, FEC_RS);
934-
ethtool_link_ksettings_add_link_mode(ks, supported, FEC_BASER);
935-
ethtool_link_ksettings_add_link_mode(ks, advertising, FEC_NONE);
936-
ethtool_link_ksettings_add_link_mode(ks, advertising, FEC_RS);
937-
ethtool_link_ksettings_add_link_mode(ks, advertising,
938-
FEC_BASER);
949+
i40e_get_settings_link_up_fec(hw_link_info->req_fec_info, ks);
950+
939951
break;
940952
case I40E_PHY_TYPE_25GBASE_AOC:
941953
case I40E_PHY_TYPE_25GBASE_ACC:
@@ -945,13 +957,8 @@ static void i40e_get_settings_link_up(struct i40e_hw *hw,
945957
25000baseCR_Full);
946958
ethtool_link_ksettings_add_link_mode(ks, advertising,
947959
25000baseCR_Full);
948-
ethtool_link_ksettings_add_link_mode(ks, supported, FEC_NONE);
949-
ethtool_link_ksettings_add_link_mode(ks, supported, FEC_RS);
950-
ethtool_link_ksettings_add_link_mode(ks, supported, FEC_BASER);
951-
ethtool_link_ksettings_add_link_mode(ks, advertising, FEC_NONE);
952-
ethtool_link_ksettings_add_link_mode(ks, advertising, FEC_RS);
953-
ethtool_link_ksettings_add_link_mode(ks, advertising,
954-
FEC_BASER);
960+
i40e_get_settings_link_up_fec(hw_link_info->req_fec_info, ks);
961+
955962
ethtool_link_ksettings_add_link_mode(ks, supported,
956963
10000baseCR_Full);
957964
ethtool_link_ksettings_add_link_mode(ks, advertising,

0 commit comments

Comments
 (0)