mirror of
https://github.com/Telecominfraproject/OpenNetworkLinux.git
synced 2025-12-25 01:07:01 +00:00
Merge pull request #404 from zhouzi88/swl-4588
support 1G-ZX optic type
This commit is contained in:
@@ -105,6 +105,8 @@ sff_module_types: &sff_module_types
|
||||
desc: "1GBASE-SX"
|
||||
- 1G_BASE_LX:
|
||||
desc: "1GBASE-LX"
|
||||
- 1G_BASE_ZX:
|
||||
desc: "1GBASE-ZX"
|
||||
- 1G_BASE_CX:
|
||||
desc: "1GBASE-CX"
|
||||
- 1G_BASE_T:
|
||||
|
||||
@@ -209,6 +209,9 @@
|
||||
#define SFF8472_MEDIA_XGE_ER(idprom) \
|
||||
((idprom[3] & SFF8472_CC3_XGE_BASE_ER) != 0)
|
||||
|
||||
#define SFF8472_MEDIA_LENGTH_ZX(idprom) \
|
||||
(idprom[14] >= 70)
|
||||
|
||||
/*
|
||||
* some CR cables identify as infiniband copper
|
||||
* some CR cables identify as FC twinax
|
||||
|
||||
@@ -128,6 +128,7 @@ typedef enum sff_module_type_e {
|
||||
SFF_MODULE_TYPE_10G_BASE_SRL,
|
||||
SFF_MODULE_TYPE_1G_BASE_SX,
|
||||
SFF_MODULE_TYPE_1G_BASE_LX,
|
||||
SFF_MODULE_TYPE_1G_BASE_ZX,
|
||||
SFF_MODULE_TYPE_1G_BASE_CX,
|
||||
SFF_MODULE_TYPE_1G_BASE_T,
|
||||
SFF_MODULE_TYPE_100_BASE_LX,
|
||||
@@ -172,6 +173,7 @@ typedef enum sff_module_type_e {
|
||||
"10G_BASE_SRL", \
|
||||
"1G_BASE_SX", \
|
||||
"1G_BASE_LX", \
|
||||
"1G_BASE_ZX", \
|
||||
"1G_BASE_CX", \
|
||||
"1G_BASE_T", \
|
||||
"100_BASE_LX", \
|
||||
|
||||
@@ -38,6 +38,7 @@ SFF_MEDIA_TYPE_ENTRY(10G_BASE_ZR, 10GBASE-ZR)
|
||||
SFF_MEDIA_TYPE_ENTRY(10G_BASE_SRL, 10GBASE-SRL)
|
||||
SFF_MEDIA_TYPE_ENTRY(1G_BASE_SX, 1GBASE-SX)
|
||||
SFF_MEDIA_TYPE_ENTRY(1G_BASE_LX, 1GBASE-LX)
|
||||
SFF_MEDIA_TYPE_ENTRY(1G_BASE_ZX, 1GBASE-ZX)
|
||||
SFF_MEDIA_TYPE_ENTRY(1G_BASE_CX, 1GBASE-CX)
|
||||
SFF_MEDIA_TYPE_ENTRY(1G_BASE_T, 1GBASE-T)
|
||||
SFF_MEDIA_TYPE_ENTRY(100_BASE_LX, 100BASE-LX)
|
||||
@@ -88,6 +89,7 @@ SFF_MODULE_TYPE_ENTRY(10G_BASE_ZR, 10GBASE-ZR)
|
||||
SFF_MODULE_TYPE_ENTRY(10G_BASE_SRL, 10GBASE-SRL)
|
||||
SFF_MODULE_TYPE_ENTRY(1G_BASE_SX, 1GBASE-SX)
|
||||
SFF_MODULE_TYPE_ENTRY(1G_BASE_LX, 1GBASE-LX)
|
||||
SFF_MODULE_TYPE_ENTRY(1G_BASE_ZX, 1GBASE-ZX)
|
||||
SFF_MODULE_TYPE_ENTRY(1G_BASE_CX, 1GBASE-CX)
|
||||
SFF_MODULE_TYPE_ENTRY(1G_BASE_T, 1GBASE-T)
|
||||
SFF_MODULE_TYPE_ENTRY(100_BASE_LX, 100BASE-LX)
|
||||
|
||||
@@ -58,11 +58,12 @@ class SFF_MODULE_TYPE(Enumeration):
|
||||
_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
|
||||
_1G_BASE_ZX = 31
|
||||
_1G_BASE_CX = 32
|
||||
_1G_BASE_T = 33
|
||||
_100_BASE_LX = 34
|
||||
_100_BASE_FX = 35
|
||||
_4X_MUX = 36
|
||||
|
||||
|
||||
class SFF_SFP_TYPE(Enumeration):
|
||||
|
||||
@@ -213,8 +213,13 @@ sff_module_type_get(const uint8_t* eeprom)
|
||||
return SFF_MODULE_TYPE_1G_BASE_SX;
|
||||
|
||||
if (SFF8472_MODULE_SFP(eeprom)
|
||||
&& SFF8472_MEDIA_GBE_LX(eeprom))
|
||||
return SFF_MODULE_TYPE_1G_BASE_LX;
|
||||
&& SFF8472_MEDIA_GBE_LX(eeprom)) {
|
||||
if (SFF8472_MEDIA_LENGTH_ZX(eeprom)) {
|
||||
return SFF_MODULE_TYPE_1G_BASE_ZX;
|
||||
} else {
|
||||
return SFF_MODULE_TYPE_1G_BASE_LX;
|
||||
}
|
||||
}
|
||||
|
||||
if (SFF8472_MODULE_SFP(eeprom)
|
||||
&& SFF8472_MEDIA_GBE_CX(eeprom))
|
||||
@@ -224,10 +229,6 @@ sff_module_type_get(const uint8_t* eeprom)
|
||||
&& SFF8472_MEDIA_GBE_T(eeprom))
|
||||
return SFF_MODULE_TYPE_1G_BASE_T;
|
||||
|
||||
if (SFF8472_MODULE_SFP(eeprom)
|
||||
&& SFF8472_MEDIA_GBE_LX(eeprom))
|
||||
return SFF_MODULE_TYPE_1G_BASE_LX;
|
||||
|
||||
if (SFF8472_MODULE_SFP(eeprom)
|
||||
&& SFF8472_MEDIA_CBE_LX(eeprom))
|
||||
return SFF_MODULE_TYPE_100_BASE_LX;
|
||||
@@ -289,6 +290,7 @@ sff_media_type_get(sff_module_type_t mt)
|
||||
case SFF_MODULE_TYPE_10G_BASE_SRL:
|
||||
case SFF_MODULE_TYPE_1G_BASE_SX:
|
||||
case SFF_MODULE_TYPE_1G_BASE_LX:
|
||||
case SFF_MODULE_TYPE_1G_BASE_ZX:
|
||||
case SFF_MODULE_TYPE_100_BASE_LX:
|
||||
case SFF_MODULE_TYPE_100_BASE_FX:
|
||||
case SFF_MODULE_TYPE_4X_MUX:
|
||||
@@ -354,6 +356,7 @@ sff_module_caps_get(sff_module_type_t mt, uint32_t *caps)
|
||||
|
||||
case SFF_MODULE_TYPE_1G_BASE_SX:
|
||||
case SFF_MODULE_TYPE_1G_BASE_LX:
|
||||
case SFF_MODULE_TYPE_1G_BASE_ZX:
|
||||
case SFF_MODULE_TYPE_1G_BASE_CX:
|
||||
case SFF_MODULE_TYPE_1G_BASE_T:
|
||||
*caps |= SFF_MODULE_CAPS_F_1G;
|
||||
@@ -790,6 +793,7 @@ sff_info_init(sff_info_t* info, sff_module_type_t mt,
|
||||
|
||||
case SFF_MODULE_TYPE_1G_BASE_SX:
|
||||
case SFF_MODULE_TYPE_1G_BASE_LX:
|
||||
case SFF_MODULE_TYPE_1G_BASE_ZX:
|
||||
info->sfp_type = SFF_SFP_TYPE_SFP;
|
||||
info->media_type = SFF_MEDIA_TYPE_FIBER;
|
||||
info->caps = SFF_MODULE_CAPS_F_1G;
|
||||
|
||||
@@ -162,6 +162,7 @@ aim_map_si_t sff_module_type_map[] =
|
||||
{ "10G_BASE_SRL", SFF_MODULE_TYPE_10G_BASE_SRL },
|
||||
{ "1G_BASE_SX", SFF_MODULE_TYPE_1G_BASE_SX },
|
||||
{ "1G_BASE_LX", SFF_MODULE_TYPE_1G_BASE_LX },
|
||||
{ "1G_BASE_ZX", SFF_MODULE_TYPE_1G_BASE_ZX },
|
||||
{ "1G_BASE_CX", SFF_MODULE_TYPE_1G_BASE_CX },
|
||||
{ "1G_BASE_T", SFF_MODULE_TYPE_1G_BASE_T },
|
||||
{ "100_BASE_LX", SFF_MODULE_TYPE_100_BASE_LX },
|
||||
@@ -203,6 +204,7 @@ aim_map_si_t sff_module_type_desc_map[] =
|
||||
{ "10GBASE-SRL", SFF_MODULE_TYPE_10G_BASE_SRL },
|
||||
{ "1GBASE-SX", SFF_MODULE_TYPE_1G_BASE_SX },
|
||||
{ "1GBASE-LX", SFF_MODULE_TYPE_1G_BASE_LX },
|
||||
{ "1GBASE-ZX", SFF_MODULE_TYPE_1G_BASE_ZX },
|
||||
{ "1GBASE-CX", SFF_MODULE_TYPE_1G_BASE_CX },
|
||||
{ "1GBASE-T", SFF_MODULE_TYPE_1G_BASE_T },
|
||||
{ "100BASE-LX", SFF_MODULE_TYPE_100_BASE_LX },
|
||||
|
||||
Reference in New Issue
Block a user