mirror of
https://github.com/Telecominfraproject/OpenNetworkLinux.git
synced 2025-12-25 17:27:01 +00:00
@@ -67,6 +67,8 @@ sff_module_types: &sff_module_types
|
||||
desc: "40GBASE-CR"
|
||||
- 40G_BASE_SR2:
|
||||
desc: "40GBASE-SR2"
|
||||
- 25G_BASE_CR:
|
||||
desc: "25GBASE-CR"
|
||||
- 10G_BASE_SR:
|
||||
desc: "10GBASE-SR"
|
||||
- 10G_BASE_LR:
|
||||
@@ -102,8 +104,9 @@ sff_module_caps: &sff_module_caps
|
||||
- F_100 : 0x1
|
||||
- F_1G : 0x2
|
||||
- F_10G : 0x4
|
||||
- F_40G : 0x8
|
||||
- F_100G : 0x10
|
||||
- F_25G : 0x8
|
||||
- F_40G : 0x10
|
||||
- F_100G : 0x20
|
||||
|
||||
sff_sfp_types: &sff_sfp_types
|
||||
- SFP:
|
||||
|
||||
@@ -72,6 +72,7 @@
|
||||
#define SFF8472_CONN_HSSDC_II 0x20
|
||||
#define SFF8472_CONN_CU_PIGTAIL 0x21
|
||||
#define SFF8472_CONN_RJ45 0x22
|
||||
#define SFF8472_CONN_NOSEP 0x23
|
||||
|
||||
/* module compliance codes (SFP type) */
|
||||
|
||||
@@ -943,7 +944,7 @@ _sff8472_sfp_10g_aoc(const uint8_t *idprom)
|
||||
static inline int
|
||||
_sff8472_sfp_10g_aoc_length(const uint8_t *idprom)
|
||||
{
|
||||
/* module should be qsfp */
|
||||
/* module should be sfp */
|
||||
if (!SFF8472_MODULE_SFP(idprom)) return -1;
|
||||
|
||||
/* does not report a fiber length, but does report a cable length */
|
||||
@@ -957,4 +958,19 @@ _sff8472_sfp_10g_aoc_length(const uint8_t *idprom)
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
* SFP28
|
||||
*/
|
||||
static inline int
|
||||
_sff8472_media_sfp28_cr(const uint8_t* idprom)
|
||||
{
|
||||
/* module should be sfp */
|
||||
if (!SFF8472_MODULE_SFP(idprom)) return 0;
|
||||
|
||||
if (idprom[2] != SFF8472_CONN_NOSEP) return 0;
|
||||
if ((idprom[3] & SFF8472_CC3_INF_1X_CU_PASSIVE) == 0) return 0;
|
||||
if (idprom[12] == 0xFF) return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -68,8 +68,9 @@ typedef enum sff_module_caps_e {
|
||||
SFF_MODULE_CAPS_F_100 = 1,
|
||||
SFF_MODULE_CAPS_F_1G = 2,
|
||||
SFF_MODULE_CAPS_F_10G = 4,
|
||||
SFF_MODULE_CAPS_F_40G = 8,
|
||||
SFF_MODULE_CAPS_F_100G = 16,
|
||||
SFF_MODULE_CAPS_F_25G = 8,
|
||||
SFF_MODULE_CAPS_F_40G = 16,
|
||||
SFF_MODULE_CAPS_F_100G = 32,
|
||||
} sff_module_caps_t;
|
||||
|
||||
/** Enum names. */
|
||||
@@ -107,6 +108,7 @@ typedef enum sff_module_type_e {
|
||||
SFF_MODULE_TYPE_40G_BASE_ACTIVE,
|
||||
SFF_MODULE_TYPE_40G_BASE_CR,
|
||||
SFF_MODULE_TYPE_40G_BASE_SR2,
|
||||
SFF_MODULE_TYPE_25G_BASE_CR,
|
||||
SFF_MODULE_TYPE_10G_BASE_SR,
|
||||
SFF_MODULE_TYPE_10G_BASE_LR,
|
||||
SFF_MODULE_TYPE_10G_BASE_LRM,
|
||||
@@ -142,6 +144,7 @@ typedef enum sff_module_type_e {
|
||||
"40G_BASE_ACTIVE", \
|
||||
"40G_BASE_CR", \
|
||||
"40G_BASE_SR2", \
|
||||
"25G_BASE_CR", \
|
||||
"10G_BASE_SR", \
|
||||
"10G_BASE_LR", \
|
||||
"10G_BASE_LRM", \
|
||||
|
||||
@@ -165,6 +165,11 @@ sff_module_type_get(const uint8_t* eeprom)
|
||||
return SFF_MODULE_TYPE_10G_BASE_CR;
|
||||
}
|
||||
|
||||
if (SFF8472_MODULE_SFP(eeprom)
|
||||
&& _sff8472_media_sfp28_cr(eeprom)) {
|
||||
return SFF_MODULE_TYPE_25G_BASE_CR;
|
||||
}
|
||||
|
||||
if (SFF8472_MODULE_SFP(eeprom)
|
||||
&& SFF8472_MEDIA_GBE_SX(eeprom))
|
||||
return SFF_MODULE_TYPE_1G_BASE_SX;
|
||||
@@ -214,6 +219,7 @@ sff_media_type_get(sff_module_type_t mt)
|
||||
case SFF_MODULE_TYPE_100G_BASE_CR4:
|
||||
case SFF_MODULE_TYPE_40G_BASE_CR4:
|
||||
case SFF_MODULE_TYPE_40G_BASE_CR:
|
||||
case SFF_MODULE_TYPE_25G_BASE_CR:
|
||||
case SFF_MODULE_TYPE_10G_BASE_CR:
|
||||
case SFF_MODULE_TYPE_1G_BASE_CX:
|
||||
case SFF_MODULE_TYPE_1G_BASE_T:
|
||||
@@ -278,6 +284,10 @@ sff_module_caps_get(sff_module_type_t mt, uint32_t *caps)
|
||||
*caps |= SFF_MODULE_CAPS_F_40G;
|
||||
return 0;
|
||||
|
||||
case SFF_MODULE_TYPE_25G_BASE_CR:
|
||||
*caps |= SFF_MODULE_CAPS_F_25G;
|
||||
return 0;
|
||||
|
||||
case SFF_MODULE_TYPE_10G_BASE_SR:
|
||||
case SFF_MODULE_TYPE_10G_BASE_LR:
|
||||
case SFF_MODULE_TYPE_10G_BASE_LRM:
|
||||
|
||||
@@ -66,6 +66,7 @@ aim_map_si_t sff_module_caps_map[] =
|
||||
{ "F_100", SFF_MODULE_CAPS_F_100 },
|
||||
{ "F_1G", SFF_MODULE_CAPS_F_1G },
|
||||
{ "F_10G", SFF_MODULE_CAPS_F_10G },
|
||||
{ "F_25G", SFF_MODULE_CAPS_F_25G },
|
||||
{ "F_40G", SFF_MODULE_CAPS_F_40G },
|
||||
{ "F_100G", SFF_MODULE_CAPS_F_100G },
|
||||
{ NULL, 0 }
|
||||
@@ -76,6 +77,7 @@ aim_map_si_t sff_module_caps_desc_map[] =
|
||||
{ "None", SFF_MODULE_CAPS_F_100 },
|
||||
{ "None", SFF_MODULE_CAPS_F_1G },
|
||||
{ "None", SFF_MODULE_CAPS_F_10G },
|
||||
{ "None", SFF_MODULE_CAPS_F_25G },
|
||||
{ "None", SFF_MODULE_CAPS_F_40G },
|
||||
{ "None", SFF_MODULE_CAPS_F_100G },
|
||||
{ NULL, 0 }
|
||||
@@ -141,6 +143,7 @@ aim_map_si_t sff_module_type_map[] =
|
||||
{ "40G_BASE_ACTIVE", SFF_MODULE_TYPE_40G_BASE_ACTIVE },
|
||||
{ "40G_BASE_CR", SFF_MODULE_TYPE_40G_BASE_CR },
|
||||
{ "40G_BASE_SR2", SFF_MODULE_TYPE_40G_BASE_SR2 },
|
||||
{ "25G_BASE_CR", SFF_MODULE_TYPE_25G_BASE_CR },
|
||||
{ "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 },
|
||||
@@ -173,6 +176,7 @@ aim_map_si_t sff_module_type_desc_map[] =
|
||||
{ "40GBASE-ACTIVE", SFF_MODULE_TYPE_40G_BASE_ACTIVE },
|
||||
{ "40GBASE-CR", SFF_MODULE_TYPE_40G_BASE_CR },
|
||||
{ "40GBASE-SR2", SFF_MODULE_TYPE_40G_BASE_SR2 },
|
||||
{ "25GBASE-CR", SFF_MODULE_TYPE_25G_BASE_CR },
|
||||
{ "10GBASE-SR", SFF_MODULE_TYPE_10G_BASE_SR },
|
||||
{ "10GBASE-LR", SFF_MODULE_TYPE_10G_BASE_LR },
|
||||
{ "10GBASE-LRM", SFF_MODULE_TYPE_10G_BASE_LRM },
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
#
|
||||
# Inclusive Makefile for the sff module.
|
||||
#
|
||||
# Autogenerated 2016-05-17 17:43:05.843123
|
||||
# Autogenerated 2017-01-13 00:00:59.561756
|
||||
#
|
||||
###############################################################################
|
||||
sff_BASEDIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
|
||||
include $(sff_BASEDIR)module/make.mk
|
||||
include $(sff_BASEDIR)module/auto/make.mk
|
||||
include $(sff_BASEDIR)module/src/make.mk
|
||||
include $(sff_BASEDIR)module/auto/make.mk
|
||||
include $(sff_BASEDIR)utest/_make.mk
|
||||
|
||||
|
||||
Reference in New Issue
Block a user