Support 100G SWDM4 optics

This commit is contained in:
Zi Zhou
2018-06-08 14:40:08 -07:00
parent afae91cf04
commit 94b16dbe5e
8 changed files with 54 additions and 29 deletions

View File

@@ -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:

View File

@@ -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) \

View File

@@ -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", \

View File

@@ -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)

View File

@@ -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):

View File

@@ -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;

View File

@@ -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__[] =
{

View File

@@ -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 },