mirror of
https://github.com/Telecominfraproject/OpenNetworkLinux.git
synced 2025-12-25 01:07:01 +00:00
Support 100G SWDM4 optics
This commit is contained in:
@@ -55,6 +55,8 @@ sff_module_types: &sff_module_types
|
||||
desc: "100G-CWDM4"
|
||||
- 100G_PSM4:
|
||||
desc: "100G-PSM4"
|
||||
- 100G_SWDM4:
|
||||
desc: "100G-SWDM4"
|
||||
- 40G_BASE_CR4:
|
||||
desc: "40GBASE-CR4"
|
||||
- 40G_BASE_SR4:
|
||||
|
||||
@@ -135,6 +135,8 @@
|
||||
#define SFF8636_CC192_100GE_CR4 0x0B
|
||||
#define SFF8636_CC192_25GE_CR_S 0x0C
|
||||
#define SFF8636_CC192_25GE_CR_N 0x0D
|
||||
#define SFF8636_CC192_40GE_SWDM4 0x1F
|
||||
#define SFF8636_CC192_100GE_SWDM4 0x20
|
||||
|
||||
#define SFF8636_MEDIA_100GE_AOC(idprom) \
|
||||
(idprom[192] == SFF8636_CC192_100GE_AOC)
|
||||
@@ -148,6 +150,10 @@
|
||||
(idprom[192] == SFF8636_CC192_100GE_PSM4)
|
||||
#define SFF8636_MEDIA_100GE_CR4(idprom) \
|
||||
(idprom[192] == SFF8636_CC192_100GE_CR4)
|
||||
#define SFF8636_MEDIA_100GE_SWDM4(idprom) \
|
||||
(idprom[192] == SFF8636_CC192_100GE_SWDM4)
|
||||
#define SFF8636_MEDIA_40GE_SWDM4(idprom) \
|
||||
(idprom[192] == SFF8636_CC192_40GE_SWDM4)
|
||||
#define SFF8636_MEDIA_25GE_CR_S(idprom) \
|
||||
(idprom[192] == SFF8636_CC192_25GE_CR_S)
|
||||
#define SFF8636_MEDIA_25GE_CR_N(idprom) \
|
||||
|
||||
@@ -103,6 +103,7 @@ typedef enum sff_module_type_e {
|
||||
SFF_MODULE_TYPE_100G_BASE_LR4,
|
||||
SFF_MODULE_TYPE_100G_CWDM4,
|
||||
SFF_MODULE_TYPE_100G_PSM4,
|
||||
SFF_MODULE_TYPE_100G_SWDM4,
|
||||
SFF_MODULE_TYPE_40G_BASE_CR4,
|
||||
SFF_MODULE_TYPE_40G_BASE_SR4,
|
||||
SFF_MODULE_TYPE_40G_BASE_LR4,
|
||||
@@ -146,6 +147,7 @@ typedef enum sff_module_type_e {
|
||||
"100G_BASE_LR4", \
|
||||
"100G_CWDM4", \
|
||||
"100G_PSM4", \
|
||||
"100G_SWDM4", \
|
||||
"40G_BASE_CR4", \
|
||||
"40G_BASE_SR4", \
|
||||
"40G_BASE_LR4", \
|
||||
|
||||
@@ -13,6 +13,7 @@ SFF_MEDIA_TYPE_ENTRY(100G_BASE_SR4, 100GBASE-SR4)
|
||||
SFF_MEDIA_TYPE_ENTRY(100G_BASE_LR4, 100GBASE-LR4)
|
||||
SFF_MEDIA_TYPE_ENTRY(100G_CWDM4, 100G-CWDM4)
|
||||
SFF_MEDIA_TYPE_ENTRY(100G_PSM4, 100G-PSM4)
|
||||
SFF_MEDIA_TYPE_ENTRY(100G_SWDM4, 100G-SWDM4)
|
||||
SFF_MEDIA_TYPE_ENTRY(40G_BASE_CR4, 40GBASE-CR4)
|
||||
SFF_MEDIA_TYPE_ENTRY(40G_BASE_SR4, 40GBASE-SR4)
|
||||
SFF_MEDIA_TYPE_ENTRY(40G_BASE_LR4, 40GBASE-LR4)
|
||||
@@ -62,6 +63,7 @@ SFF_MODULE_TYPE_ENTRY(100G_BASE_SR4, 100GBASE-SR4)
|
||||
SFF_MODULE_TYPE_ENTRY(100G_BASE_LR4, 100GBASE-LR4)
|
||||
SFF_MODULE_TYPE_ENTRY(100G_CWDM4, 100G-CWDM4)
|
||||
SFF_MODULE_TYPE_ENTRY(100G_PSM4, 100G-PSM4)
|
||||
SFF_MODULE_TYPE_ENTRY(100G_SWDM4, 100G-SWDM4)
|
||||
SFF_MODULE_TYPE_ENTRY(40G_BASE_CR4, 40GBASE-CR4)
|
||||
SFF_MODULE_TYPE_ENTRY(40G_BASE_SR4, 40GBASE-SR4)
|
||||
SFF_MODULE_TYPE_ENTRY(40G_BASE_LR4, 40GBASE-LR4)
|
||||
|
||||
@@ -33,35 +33,36 @@ class SFF_MODULE_TYPE(Enumeration):
|
||||
_100G_BASE_LR4 = 3
|
||||
_100G_CWDM4 = 4
|
||||
_100G_PSM4 = 5
|
||||
_40G_BASE_CR4 = 6
|
||||
_40G_BASE_SR4 = 7
|
||||
_40G_BASE_LR4 = 8
|
||||
_40G_BASE_LM4 = 9
|
||||
_40G_BASE_ACTIVE = 10
|
||||
_40G_BASE_CR = 11
|
||||
_40G_BASE_SR2 = 12
|
||||
_40G_BASE_SM4 = 13
|
||||
_40G_BASE_ER4 = 14
|
||||
_25G_BASE_CR = 15
|
||||
_25G_BASE_SR = 16
|
||||
_25G_BASE_LR = 17
|
||||
_25G_BASE_AOC = 18
|
||||
_10G_BASE_SR = 19
|
||||
_10G_BASE_LR = 20
|
||||
_10G_BASE_LRM = 21
|
||||
_10G_BASE_ER = 22
|
||||
_10G_BASE_CR = 23
|
||||
_10G_BASE_SX = 24
|
||||
_10G_BASE_LX = 25
|
||||
_10G_BASE_ZR = 26
|
||||
_10G_BASE_SRL = 27
|
||||
_1G_BASE_SX = 28
|
||||
_1G_BASE_LX = 29
|
||||
_1G_BASE_CX = 30
|
||||
_1G_BASE_T = 31
|
||||
_100_BASE_LX = 32
|
||||
_100_BASE_FX = 33
|
||||
_4X_MUX = 34
|
||||
_100G_SWDM4 = 6
|
||||
_40G_BASE_CR4 = 7
|
||||
_40G_BASE_SR4 = 8
|
||||
_40G_BASE_LR4 = 9
|
||||
_40G_BASE_LM4 = 10
|
||||
_40G_BASE_ACTIVE = 11
|
||||
_40G_BASE_CR = 12
|
||||
_40G_BASE_SR2 = 13
|
||||
_40G_BASE_SM4 = 14
|
||||
_40G_BASE_ER4 = 15
|
||||
_25G_BASE_CR = 16
|
||||
_25G_BASE_SR = 17
|
||||
_25G_BASE_LR = 18
|
||||
_25G_BASE_AOC = 19
|
||||
_10G_BASE_SR = 20
|
||||
_10G_BASE_LR = 21
|
||||
_10G_BASE_LRM = 22
|
||||
_10G_BASE_ER = 23
|
||||
_10G_BASE_CR = 24
|
||||
_10G_BASE_SX = 25
|
||||
_10G_BASE_LX = 26
|
||||
_10G_BASE_ZR = 27
|
||||
_10G_BASE_SRL = 28
|
||||
_1G_BASE_SX = 29
|
||||
_1G_BASE_LX = 30
|
||||
_1G_BASE_CX = 31
|
||||
_1G_BASE_T = 32
|
||||
_100_BASE_LX = 33
|
||||
_100_BASE_FX = 34
|
||||
_4X_MUX = 35
|
||||
|
||||
|
||||
class SFF_SFP_TYPE(Enumeration):
|
||||
|
||||
@@ -82,6 +82,11 @@ sff_module_type_get(const uint8_t* eeprom)
|
||||
&& SFF8636_MEDIA_100GE_PSM4(eeprom))
|
||||
return SFF_MODULE_TYPE_100G_PSM4;
|
||||
|
||||
if (SFF8636_MODULE_QSFP28(eeprom)
|
||||
&& SFF8636_MEDIA_EXTENDED(eeprom)
|
||||
&& SFF8636_MEDIA_100GE_SWDM4(eeprom))
|
||||
return SFF_MODULE_TYPE_100G_SWDM4;
|
||||
|
||||
if (SFF8436_MODULE_QSFP_PLUS_V2(eeprom)
|
||||
&& SFF8436_MEDIA_40GE_CR4(eeprom))
|
||||
return SFF_MODULE_TYPE_40G_BASE_CR4;
|
||||
@@ -263,6 +268,7 @@ sff_media_type_get(sff_module_type_t mt)
|
||||
case SFF_MODULE_TYPE_100G_BASE_LR4:
|
||||
case SFF_MODULE_TYPE_100G_CWDM4:
|
||||
case SFF_MODULE_TYPE_100G_PSM4:
|
||||
case SFF_MODULE_TYPE_100G_SWDM4:
|
||||
case SFF_MODULE_TYPE_40G_BASE_SR4:
|
||||
case SFF_MODULE_TYPE_40G_BASE_LR4:
|
||||
case SFF_MODULE_TYPE_40G_BASE_LM4:
|
||||
@@ -312,6 +318,7 @@ sff_module_caps_get(sff_module_type_t mt, uint32_t *caps)
|
||||
case SFF_MODULE_TYPE_100G_BASE_CR4:
|
||||
case SFF_MODULE_TYPE_100G_CWDM4:
|
||||
case SFF_MODULE_TYPE_100G_PSM4:
|
||||
case SFF_MODULE_TYPE_100G_SWDM4:
|
||||
*caps |= SFF_MODULE_CAPS_F_100G;
|
||||
return 0;
|
||||
|
||||
@@ -716,6 +723,7 @@ sff_info_init(sff_info_t* info, sff_module_type_t mt,
|
||||
case SFF_MODULE_TYPE_100G_BASE_LR4:
|
||||
case SFF_MODULE_TYPE_100G_CWDM4:
|
||||
case SFF_MODULE_TYPE_100G_PSM4:
|
||||
case SFF_MODULE_TYPE_100G_SWDM4:
|
||||
info->sfp_type = SFF_SFP_TYPE_QSFP28;
|
||||
info->media_type = SFF_MEDIA_TYPE_FIBER;
|
||||
info->caps = SFF_MODULE_CAPS_F_100G;
|
||||
|
||||
@@ -72,6 +72,8 @@
|
||||
#define SFF_100G_PSM4_PROPERTIES \
|
||||
SFF_SFP_TYPE_QSFP28, "QSFP28", SFF_MODULE_TYPE_100G_PSM4, "100G-PSM4", SFF_MEDIA_TYPE_FIBER, "Fiber", SFF_MODULE_CAPS_F_100G
|
||||
|
||||
#define SFF_100G_SWDM4_PROPERTIES \
|
||||
SFF_SFP_TYPE_QSFP28, "QSFP28", SFF_MODULE_TYPE_100G_SWDM4, "100G-SWDM4", SFF_MEDIA_TYPE_FIBER, "Fiber", SFF_MODULE_CAPS_F_100G
|
||||
|
||||
static sff_db_entry_t sff_database__[] =
|
||||
{
|
||||
|
||||
@@ -137,6 +137,7 @@ aim_map_si_t sff_module_type_map[] =
|
||||
{ "100G_BASE_LR4", SFF_MODULE_TYPE_100G_BASE_LR4 },
|
||||
{ "100G_CWDM4", SFF_MODULE_TYPE_100G_CWDM4 },
|
||||
{ "100G_PSM4", SFF_MODULE_TYPE_100G_PSM4 },
|
||||
{ "100G_SWDM4", SFF_MODULE_TYPE_100G_SWDM4 },
|
||||
{ "40G_BASE_CR4", SFF_MODULE_TYPE_40G_BASE_CR4 },
|
||||
{ "40G_BASE_SR4", SFF_MODULE_TYPE_40G_BASE_SR4 },
|
||||
{ "40G_BASE_LR4", SFF_MODULE_TYPE_40G_BASE_LR4 },
|
||||
@@ -177,6 +178,7 @@ aim_map_si_t sff_module_type_desc_map[] =
|
||||
{ "100GBASE-LR4", SFF_MODULE_TYPE_100G_BASE_LR4 },
|
||||
{ "100G-CWDM4", SFF_MODULE_TYPE_100G_CWDM4 },
|
||||
{ "100G-PSM4", SFF_MODULE_TYPE_100G_PSM4 },
|
||||
{ "100G-SWDM4", SFF_MODULE_TYPE_100G_SWDM4 },
|
||||
{ "40GBASE-CR4", SFF_MODULE_TYPE_40G_BASE_CR4 },
|
||||
{ "40GBASE-SR4", SFF_MODULE_TYPE_40G_BASE_SR4 },
|
||||
{ "40GBASE-LR4", SFF_MODULE_TYPE_40G_BASE_LR4 },
|
||||
|
||||
Reference in New Issue
Block a user