mirror of
https://github.com/Telecominfraproject/OpenNetworkLinux.git
synced 2025-12-25 09:17:08 +00:00
@@ -77,6 +77,8 @@ sff_module_types: &sff_module_types
|
||||
desc: "25GBASE-CR"
|
||||
- 25G_BASE_SR:
|
||||
desc: "25GBASE-SR"
|
||||
- 25G_BASE_LR:
|
||||
desc: "25GBASE-LR"
|
||||
- 10G_BASE_SR:
|
||||
desc: "10GBASE-SR"
|
||||
- 10G_BASE_LR:
|
||||
|
||||
@@ -149,6 +149,7 @@
|
||||
#define SFF8472_CC36_XGE_UNALLOCATED 0x01
|
||||
#define SFF8472_CC36_UNALLOCATED1 0xF7
|
||||
#define SFF8472_CC36_100G_25G_SR 0x02
|
||||
#define SFF8472_CC36_100G_25G_LR 0x03
|
||||
|
||||
#define SFF8471_CC60_FC_PI_4_LIMITING 0x08
|
||||
#define SFF8471_CC60_SFF8431_LIMITING 0x04
|
||||
@@ -986,4 +987,16 @@ _sff8472_media_sfp28_sr(const uint8_t* idprom)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int
|
||||
_sff8472_media_sfp28_lr(const uint8_t* idprom)
|
||||
{
|
||||
/* module should be sfp */
|
||||
if (!SFF8472_MODULE_SFP(idprom)) return 0;
|
||||
|
||||
if (idprom[12] != 0xFF) return 0;
|
||||
if (idprom[36] == SFF8472_CC36_100G_25G_LR) return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -114,6 +114,7 @@ typedef enum sff_module_type_e {
|
||||
SFF_MODULE_TYPE_40G_BASE_ER4,
|
||||
SFF_MODULE_TYPE_25G_BASE_CR,
|
||||
SFF_MODULE_TYPE_25G_BASE_SR,
|
||||
SFF_MODULE_TYPE_25G_BASE_LR,
|
||||
SFF_MODULE_TYPE_10G_BASE_SR,
|
||||
SFF_MODULE_TYPE_10G_BASE_LR,
|
||||
SFF_MODULE_TYPE_10G_BASE_LRM,
|
||||
@@ -155,6 +156,7 @@ typedef enum sff_module_type_e {
|
||||
"40G_BASE_ER4", \
|
||||
"25G_BASE_CR", \
|
||||
"25G_BASE_SR", \
|
||||
"25G_BASE_LR", \
|
||||
"10G_BASE_SR", \
|
||||
"10G_BASE_LR", \
|
||||
"10G_BASE_LRM", \
|
||||
|
||||
@@ -24,6 +24,7 @@ SFF_MEDIA_TYPE_ENTRY(40G_BASE_SM4, 40GBASE-SM4)
|
||||
SFF_MEDIA_TYPE_ENTRY(40G_BASE_ER4, 40GBASE-ER4)
|
||||
SFF_MEDIA_TYPE_ENTRY(25G_BASE_CR, 25GBASE-CR)
|
||||
SFF_MEDIA_TYPE_ENTRY(25G_BASE_SR, 25GBASE-SR)
|
||||
SFF_MEDIA_TYPE_ENTRY(25G_BASE_LR, 25GBASE-LR)
|
||||
SFF_MEDIA_TYPE_ENTRY(10G_BASE_SR, 10GBASE-SR)
|
||||
SFF_MEDIA_TYPE_ENTRY(10G_BASE_LR, 10GBASE-LR)
|
||||
SFF_MEDIA_TYPE_ENTRY(10G_BASE_LRM, 10GBASE-LRM)
|
||||
@@ -71,6 +72,7 @@ SFF_MODULE_TYPE_ENTRY(40G_BASE_SM4, 40GBASE-SM4)
|
||||
SFF_MODULE_TYPE_ENTRY(40G_BASE_ER4, 40GBASE-ER4)
|
||||
SFF_MODULE_TYPE_ENTRY(25G_BASE_CR, 25GBASE-CR)
|
||||
SFF_MODULE_TYPE_ENTRY(25G_BASE_SR, 25GBASE-SR)
|
||||
SFF_MODULE_TYPE_ENTRY(25G_BASE_LR, 25GBASE-LR)
|
||||
SFF_MODULE_TYPE_ENTRY(10G_BASE_SR, 10GBASE-SR)
|
||||
SFF_MODULE_TYPE_ENTRY(10G_BASE_LR, 10GBASE-LR)
|
||||
SFF_MODULE_TYPE_ENTRY(10G_BASE_LRM, 10GBASE-LRM)
|
||||
|
||||
@@ -44,22 +44,23 @@ class SFF_MODULE_TYPE(Enumeration):
|
||||
_40G_BASE_ER4 = 14
|
||||
_25G_BASE_CR = 15
|
||||
_25G_BASE_SR = 16
|
||||
_10G_BASE_SR = 17
|
||||
_10G_BASE_LR = 18
|
||||
_10G_BASE_LRM = 19
|
||||
_10G_BASE_ER = 20
|
||||
_10G_BASE_CR = 21
|
||||
_10G_BASE_SX = 22
|
||||
_10G_BASE_LX = 23
|
||||
_10G_BASE_ZR = 24
|
||||
_10G_BASE_SRL = 25
|
||||
_1G_BASE_SX = 26
|
||||
_1G_BASE_LX = 27
|
||||
_1G_BASE_CX = 28
|
||||
_1G_BASE_T = 29
|
||||
_100_BASE_LX = 30
|
||||
_100_BASE_FX = 31
|
||||
_4X_MUX = 32
|
||||
_25G_BASE_LR = 17
|
||||
_10G_BASE_SR = 18
|
||||
_10G_BASE_LR = 19
|
||||
_10G_BASE_LRM = 20
|
||||
_10G_BASE_ER = 21
|
||||
_10G_BASE_CR = 22
|
||||
_10G_BASE_SX = 23
|
||||
_10G_BASE_LX = 24
|
||||
_10G_BASE_ZR = 25
|
||||
_10G_BASE_SRL = 26
|
||||
_1G_BASE_SX = 27
|
||||
_1G_BASE_LX = 28
|
||||
_1G_BASE_CX = 29
|
||||
_1G_BASE_T = 30
|
||||
_100_BASE_LX = 31
|
||||
_100_BASE_FX = 32
|
||||
_4X_MUX = 33
|
||||
|
||||
|
||||
class SFF_SFP_TYPE(Enumeration):
|
||||
|
||||
@@ -153,6 +153,11 @@ sff_module_type_get(const uint8_t* eeprom)
|
||||
return SFF_MODULE_TYPE_25G_BASE_SR;
|
||||
}
|
||||
|
||||
if (SFF8472_MODULE_SFP(eeprom)
|
||||
&& _sff8472_media_sfp28_lr(eeprom)) {
|
||||
return SFF_MODULE_TYPE_25G_BASE_LR;
|
||||
}
|
||||
|
||||
if (SFF8472_MODULE_SFP(eeprom)
|
||||
&& SFF8472_MEDIA_XGE_SR(eeprom)
|
||||
&& !_sff8472_media_gbe_sx_fc_hack(eeprom))
|
||||
@@ -261,6 +266,7 @@ sff_media_type_get(sff_module_type_t mt)
|
||||
case SFF_MODULE_TYPE_40G_BASE_SM4:
|
||||
case SFF_MODULE_TYPE_40G_BASE_ER4:
|
||||
case SFF_MODULE_TYPE_25G_BASE_SR:
|
||||
case SFF_MODULE_TYPE_25G_BASE_LR:
|
||||
case SFF_MODULE_TYPE_10G_BASE_SR:
|
||||
case SFF_MODULE_TYPE_10G_BASE_LR:
|
||||
case SFF_MODULE_TYPE_10G_BASE_LRM:
|
||||
@@ -740,6 +746,7 @@ sff_info_init(sff_info_t* info, sff_module_type_t mt,
|
||||
break;
|
||||
|
||||
case SFF_MODULE_TYPE_25G_BASE_SR:
|
||||
case SFF_MODULE_TYPE_25G_BASE_LR:
|
||||
info->sfp_type = SFF_SFP_TYPE_SFP28;
|
||||
info->media_type = SFF_MEDIA_TYPE_FIBER;
|
||||
info->caps = SFF_MODULE_CAPS_F_25G;
|
||||
|
||||
@@ -148,6 +148,7 @@ aim_map_si_t sff_module_type_map[] =
|
||||
{ "40G_BASE_ER4", SFF_MODULE_TYPE_40G_BASE_ER4 },
|
||||
{ "25G_BASE_CR", SFF_MODULE_TYPE_25G_BASE_CR },
|
||||
{ "25G_BASE_SR", SFF_MODULE_TYPE_25G_BASE_SR },
|
||||
{ "25G_BASE_LR", SFF_MODULE_TYPE_25G_BASE_LR },
|
||||
{ "10G_BASE_SR", SFF_MODULE_TYPE_10G_BASE_SR },
|
||||
{ "10G_BASE_LR", SFF_MODULE_TYPE_10G_BASE_LR },
|
||||
{ "10G_BASE_LRM", SFF_MODULE_TYPE_10G_BASE_LRM },
|
||||
@@ -186,6 +187,7 @@ aim_map_si_t sff_module_type_desc_map[] =
|
||||
{ "40GBASE-ER4", SFF_MODULE_TYPE_40G_BASE_ER4 },
|
||||
{ "25GBASE-CR", SFF_MODULE_TYPE_25G_BASE_CR },
|
||||
{ "25GBASE-SR", SFF_MODULE_TYPE_25G_BASE_SR },
|
||||
{ "25GBASE-LR", SFF_MODULE_TYPE_25G_BASE_LR },
|
||||
{ "10GBASE-SR", SFF_MODULE_TYPE_10G_BASE_SR },
|
||||
{ "10GBASE-LR", SFF_MODULE_TYPE_10G_BASE_LR },
|
||||
{ "10GBASE-LRM", SFF_MODULE_TYPE_10G_BASE_LRM },
|
||||
|
||||
Reference in New Issue
Block a user