mirror of https://github.com/torvalds/linux.git
net: ethtool: Add support for 1600Gbps speed
Add support for 1600Gbps link modes based on 200Gbps per lane [1]. This includes the adopted IEEE 802.3dj copper and optical PMDs that use 200G/lane signaling [2]. Add the following PMD types: - KR8 (backplane) - CR8 (copper cable) - DR8 (SMF 500m) - DR8-2 (SMF 2km) These modes are defined in the 802.3dj specifications. References: [1] https://www.ieee802.org/3/dj/public/23_03/opsasnick_3dj_01a_2303.pdf [2] https://www.ieee802.org/3/dj/projdoc/objectives_P802d3dj_240314.pdf Signed-off-by: Yael Chemla <ychemla@nvidia.com> Reviewed-by: Shahar Shitrit <shshitrit@nvidia.com> Signed-off-by: Tariq Toukan <tariqt@nvidia.com> Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com> Link: https://patch.msgid.link/1763585297-1243980-2-git-send-email-tariqt@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
8b4e023d79
commit
491c5dc98b
|
|
@ -29,6 +29,7 @@ enum {
|
|||
LINK_CAPA_200000FD,
|
||||
LINK_CAPA_400000FD,
|
||||
LINK_CAPA_800000FD,
|
||||
LINK_CAPA_1600000FD,
|
||||
|
||||
__LINK_CAPA_MAX,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
*/
|
||||
const char *phy_speed_to_str(int speed)
|
||||
{
|
||||
BUILD_BUG_ON_MSG(__ETHTOOL_LINK_MODE_MASK_NBITS != 121,
|
||||
BUILD_BUG_ON_MSG(__ETHTOOL_LINK_MODE_MASK_NBITS != 125,
|
||||
"Enum ethtool_link_mode_bit_indices and phylib are out of sync. "
|
||||
"If a speed or mode has been added please update phy_speed_to_str "
|
||||
"and the PHY settings array.\n");
|
||||
|
|
@ -55,6 +55,8 @@ const char *phy_speed_to_str(int speed)
|
|||
return "400Gbps";
|
||||
case SPEED_800000:
|
||||
return "800Gbps";
|
||||
case SPEED_1600000:
|
||||
return "1600Gbps";
|
||||
case SPEED_UNKNOWN:
|
||||
return "Unknown";
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ static struct link_capabilities link_caps[__LINK_CAPA_MAX] __ro_after_init = {
|
|||
{ SPEED_200000, DUPLEX_FULL, {0} }, /* LINK_CAPA_200000FD */
|
||||
{ SPEED_400000, DUPLEX_FULL, {0} }, /* LINK_CAPA_400000FD */
|
||||
{ SPEED_800000, DUPLEX_FULL, {0} }, /* LINK_CAPA_800000FD */
|
||||
{ SPEED_1600000, DUPLEX_FULL, {0} }, /* LINK_CAPA_1600000FD */
|
||||
};
|
||||
|
||||
static int speed_duplex_to_capa(int speed, unsigned int duplex)
|
||||
|
|
@ -52,6 +53,7 @@ static int speed_duplex_to_capa(int speed, unsigned int duplex)
|
|||
case SPEED_200000: return LINK_CAPA_200000FD;
|
||||
case SPEED_400000: return LINK_CAPA_400000FD;
|
||||
case SPEED_800000: return LINK_CAPA_800000FD;
|
||||
case SPEED_1600000: return LINK_CAPA_1600000FD;
|
||||
}
|
||||
|
||||
return -EINVAL;
|
||||
|
|
|
|||
|
|
@ -2077,6 +2077,10 @@ enum ethtool_link_mode_bit_indices {
|
|||
ETHTOOL_LINK_MODE_800000baseDR4_2_Full_BIT = 118,
|
||||
ETHTOOL_LINK_MODE_800000baseSR4_Full_BIT = 119,
|
||||
ETHTOOL_LINK_MODE_800000baseVR4_Full_BIT = 120,
|
||||
ETHTOOL_LINK_MODE_1600000baseCR8_Full_BIT = 121,
|
||||
ETHTOOL_LINK_MODE_1600000baseKR8_Full_BIT = 122,
|
||||
ETHTOOL_LINK_MODE_1600000baseDR8_Full_BIT = 123,
|
||||
ETHTOOL_LINK_MODE_1600000baseDR8_2_Full_BIT = 124,
|
||||
|
||||
/* must be last entry */
|
||||
__ETHTOOL_LINK_MODE_MASK_NBITS
|
||||
|
|
@ -2190,6 +2194,7 @@ enum ethtool_link_mode_bit_indices {
|
|||
#define SPEED_200000 200000
|
||||
#define SPEED_400000 400000
|
||||
#define SPEED_800000 800000
|
||||
#define SPEED_1600000 1600000
|
||||
|
||||
#define SPEED_UNKNOWN -1
|
||||
|
||||
|
|
|
|||
|
|
@ -233,6 +233,10 @@ const char link_mode_names[][ETH_GSTRING_LEN] = {
|
|||
__DEFINE_LINK_MODE_NAME(800000, DR4_2, Full),
|
||||
__DEFINE_LINK_MODE_NAME(800000, SR4, Full),
|
||||
__DEFINE_LINK_MODE_NAME(800000, VR4, Full),
|
||||
__DEFINE_LINK_MODE_NAME(1600000, CR8, Full),
|
||||
__DEFINE_LINK_MODE_NAME(1600000, KR8, Full),
|
||||
__DEFINE_LINK_MODE_NAME(1600000, DR8, Full),
|
||||
__DEFINE_LINK_MODE_NAME(1600000, DR8_2, Full),
|
||||
};
|
||||
static_assert(ARRAY_SIZE(link_mode_names) == __ETHTOOL_LINK_MODE_MASK_NBITS);
|
||||
|
||||
|
|
@ -422,6 +426,10 @@ const struct link_mode_info link_mode_params[] = {
|
|||
__DEFINE_LINK_MODE_PARAMS(800000, DR4_2, Full),
|
||||
__DEFINE_LINK_MODE_PARAMS(800000, SR4, Full),
|
||||
__DEFINE_LINK_MODE_PARAMS(800000, VR4, Full),
|
||||
__DEFINE_LINK_MODE_PARAMS(1600000, CR8, Full),
|
||||
__DEFINE_LINK_MODE_PARAMS(1600000, KR8, Full),
|
||||
__DEFINE_LINK_MODE_PARAMS(1600000, DR8, Full),
|
||||
__DEFINE_LINK_MODE_PARAMS(1600000, DR8_2, Full),
|
||||
};
|
||||
static_assert(ARRAY_SIZE(link_mode_params) == __ETHTOOL_LINK_MODE_MASK_NBITS);
|
||||
EXPORT_SYMBOL_GPL(link_mode_params);
|
||||
|
|
|
|||
Loading…
Reference in New Issue