diff --git a/make/config.amd64.mk b/make/config.amd64.mk index 9c9850c5..df31cd5d 100644 --- a/make/config.amd64.mk +++ b/make/config.amd64.mk @@ -7,5 +7,4 @@ include $(ONL)/make/config.mk export TOOLCHAIN := x86_64-linux-gnu export ARCH := amd64 export UARCH := AMD64 - - +export __$(ARCH)__ := 1 diff --git a/make/config.arm64.mk b/make/config.arm64.mk index fa294082..27587349 100644 --- a/make/config.arm64.mk +++ b/make/config.arm64.mk @@ -7,3 +7,4 @@ include $(ONL)/make/config.mk export TOOLCHAIN := aarch64-linux-gnu export ARCH := arm64 export UARCH := ARM64 +export __$(ARCH)__ := 1 diff --git a/make/config.armel.mk b/make/config.armel.mk index e4dca860..fe6b8c4c 100644 --- a/make/config.armel.mk +++ b/make/config.armel.mk @@ -7,3 +7,4 @@ include $(ONL)/make/config.mk export TOOLCHAIN := arm-linux-gnueabi export ARCH := armel export UARCH := ARMEL +export __$(ARCH)__ := 1 diff --git a/make/config.powerpc.mk b/make/config.powerpc.mk index 2f2aa89c..e8aba400 100644 --- a/make/config.powerpc.mk +++ b/make/config.powerpc.mk @@ -7,5 +7,4 @@ include $(ONL)/make/config.mk export TOOLCHAIN := powerpc-linux-gnu export ARCH := powerpc export UARCH := PPC - - +export __$(ARCH)__ := 1 diff --git a/packages/base/all/vendor-config-onl/src/lib/install/lib.sh b/packages/base/all/vendor-config-onl/src/lib/install/lib.sh index 72f6290f..0a5ea184 100644 --- a/packages/base/all/vendor-config-onl/src/lib/install/lib.sh +++ b/packages/base/all/vendor-config-onl/src/lib/install/lib.sh @@ -236,7 +236,7 @@ blkid_find_gpt_boot() { } installer_fixup_gpt() { - local buf dat sts dev + local buf dat sts dev do_recover buf=$(mktemp -u -t sgdisk-XXXXXX) @@ -264,32 +264,79 @@ installer_fixup_gpt() { fi test -b "$dev" || return 0 - # see if it's a clean GPT partition table - if sgdisk -p "$dev" > "$buf" 2>&1; then - sts=0 + do_recover= + + # simple validation using sgdisk + if test "$do_recover"; then + : else - sts=$? - fi - if test $sts -ne 0; then - cat "$buf" 1>&2 - rm -f "$buf" - installer_say "Cannot reliably get GPT partition table" - return 1 - fi + if sgdisk -p "$dev" > "$buf" 2>&1; then + sts=0 + else + sts=$? + fi + if test $sts -ne 0; then + cat "$buf" 1>&2 + rm -f "$buf" + installer_say "Cannot reliably get GPT partition table" + return 1 + fi - case $(cat "$buf") in - *Caution*|*Warning*) - cat $buf 1>&2 - installer_say "Found issues with the GPT partition table" - rm -f "$buf" - ;; - *) - installer_say "Found a clean GPT partition table" - rm -f "$buf" - return 0 + case $(cat "$buf") in + *Caution*|*Warning*) + cat $buf 1>&2 + installer_say "Found issues with the GPT partition table" + do_recover=1 + rm -f "$buf" ;; - esac + esac + fi + + # more thorough validation + if test "$do_recover"; then + : + else + + local inp + inp=$(mktemp -u -t sgdisk-XXXXXX) + cat > "$inp" <<-END + x + r + v + q + END + if gdisk "$dev" < "$inp" > "$buf" 2>&1; then + sts=0 + else + sts=$? + fi + rm -f "$inp" + if test $sts -ne 0; then + cat "$buf" 1>&2 + rm -f "$buf" + installer_say "Cannot reliably verify GPT partition table" + return 1 + fi + + case $(cat "$buf") in + *Caution*|*Warning*|*Problem:*) + cat $buf 1>&2 + installer_say "Found issues with the GPT partition table" + do_recover=1 + rm -f "$buf" + ;; + esac + + fi + + if test "$do_recover"; then + : + else + installer_say "Found a clean GPT partition table" + rm -f "$buf" + return 0 + fi installer_say "Attempting to correct the GPT partition table" # this is the simple method; gdisk/sfgdisk will correct diff --git a/packages/base/any/onlp/src/onlp/module/auto/make.mk b/packages/base/any/onlp/src/onlp/module/auto/make.mk index 1e68bdb8..95a06896 100644 --- a/packages/base/any/onlp/src/onlp/module/auto/make.mk +++ b/packages/base/any/onlp/src/onlp/module/auto/make.mk @@ -1,21 +1,21 @@ ############################################################ # -# -# Copyright 2014, 2015 Big Switch Networks, Inc. -# +# +# Copyright 2014, 2015 Big Switch Networks, Inc. +# # Licensed under the Eclipse Public License, Version 1.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at -# +# # http://www.eclipse.org/legal/epl-v10.html -# +# # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, # either express or implied. See the License for the specific # language governing permissions and limitations under the # License. -# +# # ############################################################ # @@ -24,6 +24,5 @@ ############################################################ onlp_AUTO_DEFS := module/auto/onlp.yml -onlp_AUTO_DIRS := module/inc/onlp module/src +onlp_AUTO_DIRS := module/inc/onlp module/src module/py include $(BUILDER)/auto.mk - diff --git a/packages/base/any/onlp/src/onlp/module/auto/onlp.yml b/packages/base/any/onlp/src/onlp/module/auto/onlp.yml index daaff3a3..f784e320 100644 --- a/packages/base/any/onlp/src/onlp/module/auto/onlp.yml +++ b/packages/base/any/onlp/src/onlp/module/auto/onlp.yml @@ -231,6 +231,17 @@ psu_caps: &psu_caps - PIN : (1 << 7) - POUT : (1 << 8) +# SFP Controls +sfp_controls: &sfp_controls +- RESET +- RESET_STATE +- RX_LOS +- TX_FAULT +- TX_DISABLE +- TX_DISABLE_CHANNEL +- LP_MODE +- POWER_OVERRIDE + definitions: cdefs: ONLP_CONFIG_HEADER: @@ -255,25 +266,13 @@ definitions: members: *thermal_threshold onlp_sfp_control: tag: sfp1 - members: - - RESET - - RESET_STATE - - RX_LOS - - TX_FAULT - - TX_DISABLE - - TX_DISABLE_CHANNEL - - LP_MODE - - POWER_OVERRIDE + members: *sfp_controls + onlp_sfp_control_flag: tag: sfp2 - members: - - RESET : (1 << ONLP_SFP_CONTROL_RESET) - - RESET_STATE : ( 1 << ONLP_SFP_CONTROL_RESET_STATE ) - - RX_LOS : ( 1 << ONLP_SFP_CONTROL_RX_LOS ) - - TX_FAULT : ( 1 << ONLP_SFP_CONTROL_TX_FAULT ) - - TX_DISABLE : ( 1 << ONLP_SFP_CONTROL_TX_DISABLE ) - - LP_MODE : ( 1 << ONLP_SFP_CONTROL_LP_MODE ) - - POWER_OVERRIDE : ( 1 << ONLP_SFP_CONTROL_POWER_OVERRIDE ) + members: *sfp_controls + flags: True + onlp_fan_mode: tag: fan members: *fan_modes @@ -302,6 +301,8 @@ definitions: tag: psu members: *psu_caps + pyenum: *enums + portingmacro: ONLP: macros: diff --git a/packages/base/any/onlp/src/onlp/module/inc/onlp/onlp.h b/packages/base/any/onlp/src/onlp/module/inc/onlp/onlp.h index 266bf3ee..55153d91 100644 --- a/packages/base/any/onlp/src/onlp/module/inc/onlp/onlp.h +++ b/packages/base/any/onlp/src/onlp/module/inc/onlp/onlp.h @@ -59,6 +59,7 @@ typedef enum onlp_status_e { */ int onlp_init(void); +int onlp_denit(void); /** * @brief Dump the current platform data. diff --git a/packages/base/any/onlp/src/onlp/module/inc/onlp/sfp.h b/packages/base/any/onlp/src/onlp/module/inc/onlp/sfp.h index 173a38ae..3913e9af 100644 --- a/packages/base/any/onlp/src/onlp/module/inc/onlp/sfp.h +++ b/packages/base/any/onlp/src/onlp/module/inc/onlp/sfp.h @@ -51,13 +51,14 @@ typedef enum onlp_sfp_control_e { /* */ /** onlp_sfp_control_flag */ typedef enum onlp_sfp_control_flag_e { - ONLP_SFP_CONTROL_FLAG_RESET = (1 << ONLP_SFP_CONTROL_RESET), - ONLP_SFP_CONTROL_FLAG_RESET_STATE = ( 1 << ONLP_SFP_CONTROL_RESET_STATE ), - ONLP_SFP_CONTROL_FLAG_RX_LOS = ( 1 << ONLP_SFP_CONTROL_RX_LOS ), - ONLP_SFP_CONTROL_FLAG_TX_FAULT = ( 1 << ONLP_SFP_CONTROL_TX_FAULT ), - ONLP_SFP_CONTROL_FLAG_TX_DISABLE = ( 1 << ONLP_SFP_CONTROL_TX_DISABLE ), - ONLP_SFP_CONTROL_FLAG_LP_MODE = ( 1 << ONLP_SFP_CONTROL_LP_MODE ), - ONLP_SFP_CONTROL_FLAG_POWER_OVERRIDE = ( 1 << ONLP_SFP_CONTROL_POWER_OVERRIDE ), + ONLP_SFP_CONTROL_FLAG_RESET = (1 << 0), + ONLP_SFP_CONTROL_FLAG_RESET_STATE = (1 << 1), + ONLP_SFP_CONTROL_FLAG_RX_LOS = (1 << 2), + ONLP_SFP_CONTROL_FLAG_TX_FAULT = (1 << 3), + ONLP_SFP_CONTROL_FLAG_TX_DISABLE = (1 << 4), + ONLP_SFP_CONTROL_FLAG_TX_DISABLE_CHANNEL = (1 << 5), + ONLP_SFP_CONTROL_FLAG_LP_MODE = (1 << 6), + ONLP_SFP_CONTROL_FLAG_POWER_OVERRIDE = (1 << 7), } onlp_sfp_control_flag_t; /* */ diff --git a/packages/base/any/onlp/src/onlp/module/py/enums.py b/packages/base/any/onlp/src/onlp/module/py/enums.py new file mode 100644 index 00000000..65cd75ec --- /dev/null +++ b/packages/base/any/onlp/src/onlp/module/py/enums.py @@ -0,0 +1,169 @@ +#!/usr/bin/python +############################################################ +# +# These are all ONLP Enumeration values +# for use with the Python API. +# +############################################################ +class Enumeration(object): + @classmethod + def name(klass, value): + for (k, v) in klass.__dict__.iteritems(): + if v == value: + return k + return None + +# +class ONLP_FAN_CAPS(Enumeration): + B2F = (1 << 0) + F2B = (1 << 1) + SET_RPM = (1 << 2) + SET_PERCENTAGE = (1 << 3) + GET_RPM = (1 << 4) + GET_PERCENTAGE = (1 << 5) + + +class ONLP_FAN_DIR(Enumeration): + B2F = 0 + F2B = 1 + + +class ONLP_FAN_MODE(Enumeration): + OFF = 0 + SLOW = 1 + NORMAL = 2 + FAST = 3 + MAX = 4 + + +class ONLP_FAN_STATUS(Enumeration): + PRESENT = (1 << 0) + FAILED = (1 << 1) + B2F = (1 << 2) + F2B = (1 << 3) + + +class ONLP_LED_CAPS(Enumeration): + ON_OFF = (1 << 0) + CHAR = (1 << 1) + RED = (1 << 10) + RED_BLINKING = (1 << 11) + ORANGE = (1 << 12) + ORANGE_BLINKING = (1 << 13) + YELLOW = (1 << 14) + YELLOW_BLINKING = (1 << 15) + GREEN = (1 << 16) + GREEN_BLINKING = (1 << 17) + BLUE = (1 << 18) + BLUE_BLINKING = (1 << 19) + PURPLE = (1 << 20) + PURPLE_BLINKING = (1 << 21) + AUTO = (1 << 22) + AUTO_BLINKING = (1 << 23) + + +class ONLP_LED_MODE(Enumeration): + OFF = 0 + ON = 1 + BLINKING = 2 + RED = 10 + RED_BLINKING = 11 + ORANGE = 12 + ORANGE_BLINKING = 13 + YELLOW = 14 + YELLOW_BLINKING = 15 + GREEN = 16 + GREEN_BLINKING = 17 + BLUE = 18 + BLUE_BLINKING = 19 + PURPLE = 20 + PURPLE_BLINKING = 21 + AUTO = 22 + AUTO_BLINKING = 23 + + +class ONLP_LED_STATUS(Enumeration): + PRESENT = (1 << 0) + FAILED = (1 << 1) + ON = (1 << 2) + + +class ONLP_OID_TYPE(Enumeration): + SYS = 1 + THERMAL = 2 + FAN = 3 + PSU = 4 + LED = 5 + MODULE = 6 + RTC = 7 + + +class ONLP_PSU_CAPS(Enumeration): + AC = (1 << 0) + DC12 = (1 << 1) + DC48 = (1 << 2) + VIN = (1 << 3) + VOUT = (1 << 4) + IIN = (1 << 5) + IOUT = (1 << 6) + PIN = (1 << 7) + POUT = (1 << 8) + + +class ONLP_PSU_STATUS(Enumeration): + PRESENT = (1 << 0) + FAILED = (1 << 1) + UNPLUGGED = (1 << 2) + + +class ONLP_SFP_CONTROL(Enumeration): + RESET = 0 + RESET_STATE = 1 + RX_LOS = 2 + TX_FAULT = 3 + TX_DISABLE = 4 + TX_DISABLE_CHANNEL = 5 + LP_MODE = 6 + POWER_OVERRIDE = 7 + + +class ONLP_SFP_CONTROL_FLAG(Enumeration): + RESET = (1 << 0) + RESET_STATE = (1 << 1) + RX_LOS = (1 << 2) + TX_FAULT = (1 << 3) + TX_DISABLE = (1 << 4) + TX_DISABLE_CHANNEL = (1 << 5) + LP_MODE = (1 << 6) + POWER_OVERRIDE = (1 << 7) + + +class ONLP_STATUS(Enumeration): + OK = 0 + E_GENERIC = -1 + E_UNSUPPORTED = -10 + E_MISSING = -11 + E_INVALID = -12 + E_INTERNAL = -13 + E_PARAM = -14 + E_I2C = -15 + + +class ONLP_THERMAL_CAPS(Enumeration): + GET_TEMPERATURE = (1 << 0) + GET_WARNING_THRESHOLD = (1 << 1) + GET_ERROR_THRESHOLD = (1 << 2) + GET_SHUTDOWN_THRESHOLD = (1 << 3) + + +class ONLP_THERMAL_STATUS(Enumeration): + PRESENT = (1 << 0) + FAILED = (1 << 1) + + +class ONLP_THERMAL_THRESHOLD(Enumeration): + WARNING_DEFAULT = 45000 + ERROR_DEFAULT = 55000 + SHUTDOWN_DEFAULT = 60000 + +# diff --git a/packages/base/any/onlp/src/onlp/module/src/onlp.c b/packages/base/any/onlp/src/onlp/module/src/onlp.c index 31d9999e..b6f7b77a 100644 --- a/packages/base/any/onlp/src/onlp/module/src/onlp.c +++ b/packages/base/any/onlp/src/onlp/module/src/onlp.c @@ -1,21 +1,21 @@ /************************************************************ * - * - * Copyright 2014, 2015 Big Switch Networks, Inc. - * + * + * Copyright 2014, 2015 Big Switch Networks, Inc. + * * Licensed under the Eclipse Public License, Version 1.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.eclipse.org/legal/epl-v10.html - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, * either express or implied. See the License for the specific * language governing permissions and limitations under the * License. - * + * * ************************************************************ * @@ -62,3 +62,15 @@ onlp_init(void) onlp_thermal_init(); return 0; } + +int +onlp_denit(void) +{ +#if ONLP_CONFIG_INCLUDE_API_LOCK == 1 + onlp_api_lock_denit(); +#endif + + onlp_json_denit(); + + return 0; +} diff --git a/packages/base/any/onlp/src/onlp/module/src/onlp_enums.c b/packages/base/any/onlp/src/onlp/module/src/onlp_enums.c index 44d268e4..67ebd6f7 100644 --- a/packages/base/any/onlp/src/onlp/module/src/onlp_enums.c +++ b/packages/base/any/onlp/src/onlp/module/src/onlp_enums.c @@ -798,6 +798,7 @@ aim_map_si_t onlp_sfp_control_flag_map[] = { "RX_LOS", ONLP_SFP_CONTROL_FLAG_RX_LOS }, { "TX_FAULT", ONLP_SFP_CONTROL_FLAG_TX_FAULT }, { "TX_DISABLE", ONLP_SFP_CONTROL_FLAG_TX_DISABLE }, + { "TX_DISABLE_CHANNEL", ONLP_SFP_CONTROL_FLAG_TX_DISABLE_CHANNEL }, { "LP_MODE", ONLP_SFP_CONTROL_FLAG_LP_MODE }, { "POWER_OVERRIDE", ONLP_SFP_CONTROL_FLAG_POWER_OVERRIDE }, { NULL, 0 } @@ -810,6 +811,7 @@ aim_map_si_t onlp_sfp_control_flag_desc_map[] = { "None", ONLP_SFP_CONTROL_FLAG_RX_LOS }, { "None", ONLP_SFP_CONTROL_FLAG_TX_FAULT }, { "None", ONLP_SFP_CONTROL_FLAG_TX_DISABLE }, + { "None", ONLP_SFP_CONTROL_FLAG_TX_DISABLE_CHANNEL }, { "None", ONLP_SFP_CONTROL_FLAG_LP_MODE }, { "None", ONLP_SFP_CONTROL_FLAG_POWER_OVERRIDE }, { NULL, 0 } diff --git a/packages/base/any/onlp/src/onlp/module/src/onlp_locks.c b/packages/base/any/onlp/src/onlp/module/src/onlp_locks.c index 7e48c17d..181a33b9 100644 --- a/packages/base/any/onlp/src/onlp/module/src/onlp_locks.c +++ b/packages/base/any/onlp/src/onlp/module/src/onlp_locks.c @@ -45,6 +45,12 @@ onlp_api_lock_init(void) api_sem__ = os_sem_create_flags(1, OS_SEM_CREATE_F_TRUE_RELATIVE_TIMEOUTS); } +void +onlp_api_lock_denit(void) +{ + os_sem_destroy(api_sem__); +} + void onlp_api_lock(const char* api) { @@ -71,6 +77,12 @@ onlp_api_lock_init(void) onlp_shlock_global_init(); } +void +onlp_api_lock_denit(void) +{ + /* TODO */ +} + void onlp_api_lock(const char* api) { @@ -119,5 +131,3 @@ onlp_api_lock_test(void) } #endif /* ONLP_CONFIG_INCLUDE_API_LOCK */ - - diff --git a/packages/base/any/onlp/src/onlp/module/src/onlp_locks.h b/packages/base/any/onlp/src/onlp/module/src/onlp_locks.h index 0ea6dc13..7a3c92e1 100644 --- a/packages/base/any/onlp/src/onlp/module/src/onlp_locks.h +++ b/packages/base/any/onlp/src/onlp/module/src/onlp_locks.h @@ -33,6 +33,7 @@ * @brief Initialize the ONLP API lock infrastructure. */ void onlp_api_lock_init(); +void onlp_api_lock_denit(); /** * @brief Take the ONLP API lock. diff --git a/packages/base/any/onlp/src/sff/module/auto/sff.yml b/packages/base/any/onlp/src/sff/module/auto/sff.yml index 8977bcad..295fe6bf 100644 --- a/packages/base/any/onlp/src/sff/module/auto/sff.yml +++ b/packages/base/any/onlp/src/sff/module/auto/sff.yml @@ -53,6 +53,8 @@ sff_module_types: &sff_module_types desc: "100GBASE-LR4" - 100G_CWDM4: desc: "100G-CWDM4" +- 100G_PSM4: + desc: "100G-PSM4" - 40G_BASE_CR4: desc: "40GBASE-CR4" - 40G_BASE_SR4: diff --git a/packages/base/any/onlp/src/sff/module/inc/sff/8636.h b/packages/base/any/onlp/src/sff/module/inc/sff/8636.h index e5ba6da4..4f87c170 100644 --- a/packages/base/any/onlp/src/sff/module/inc/sff/8636.h +++ b/packages/base/any/onlp/src/sff/module/inc/sff/8636.h @@ -144,6 +144,8 @@ (idprom[192] == SFF8636_CC192_100GE_LR4) #define SFF8636_MEDIA_100GE_CWDM4(idprom) \ (idprom[192] == SFF8636_CC192_100GE_CWDM4) +#define SFF8636_MEDIA_100GE_PSM4(idprom) \ + (idprom[192] == SFF8636_CC192_100GE_PSM4) #define SFF8636_MEDIA_100GE_CR4(idprom) \ (idprom[192] == SFF8636_CC192_100GE_CR4) #define SFF8636_MEDIA_25GE_CR_S(idprom) \ diff --git a/packages/base/any/onlp/src/sff/module/inc/sff/sff.h b/packages/base/any/onlp/src/sff/module/inc/sff/sff.h index 367b6c0e..be0d1725 100644 --- a/packages/base/any/onlp/src/sff/module/inc/sff/sff.h +++ b/packages/base/any/onlp/src/sff/module/inc/sff/sff.h @@ -102,6 +102,7 @@ typedef enum sff_module_type_e { SFF_MODULE_TYPE_100G_BASE_SR4, SFF_MODULE_TYPE_100G_BASE_LR4, SFF_MODULE_TYPE_100G_CWDM4, + SFF_MODULE_TYPE_100G_PSM4, SFF_MODULE_TYPE_40G_BASE_CR4, SFF_MODULE_TYPE_40G_BASE_SR4, SFF_MODULE_TYPE_40G_BASE_LR4, @@ -141,6 +142,7 @@ typedef enum sff_module_type_e { "100G_BASE_SR4", \ "100G_BASE_LR4", \ "100G_CWDM4", \ + "100G_PSM4", \ "40G_BASE_CR4", \ "40G_BASE_SR4", \ "40G_BASE_LR4", \ diff --git a/packages/base/any/onlp/src/sff/module/inc/sff/sff.x b/packages/base/any/onlp/src/sff/module/inc/sff/sff.x index 1efe7884..ba315949 100644 --- a/packages/base/any/onlp/src/sff/module/inc/sff/sff.x +++ b/packages/base/any/onlp/src/sff/module/inc/sff/sff.x @@ -12,6 +12,7 @@ SFF_MEDIA_TYPE_ENTRY(100G_BASE_CR4, 100GBASE-CR4) 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(40G_BASE_CR4, 40GBASE-CR4) SFF_MEDIA_TYPE_ENTRY(40G_BASE_SR4, 40GBASE-SR4) SFF_MEDIA_TYPE_ENTRY(40G_BASE_LR4, 40GBASE-LR4) @@ -57,6 +58,7 @@ SFF_MODULE_TYPE_ENTRY(100G_BASE_CR4, 100GBASE-CR4) 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(40G_BASE_CR4, 40GBASE-CR4) SFF_MODULE_TYPE_ENTRY(40G_BASE_SR4, 40GBASE-SR4) SFF_MODULE_TYPE_ENTRY(40G_BASE_LR4, 40GBASE-LR4) diff --git a/packages/base/any/onlp/src/sff/module/src/sff.c b/packages/base/any/onlp/src/sff/module/src/sff.c index 34a554a0..b866c741 100644 --- a/packages/base/any/onlp/src/sff/module/src/sff.c +++ b/packages/base/any/onlp/src/sff/module/src/sff.c @@ -76,6 +76,11 @@ sff_module_type_get(const uint8_t* eeprom) && SFF8636_MEDIA_100GE_CWDM4(eeprom)) return SFF_MODULE_TYPE_100G_CWDM4; + if (SFF8636_MODULE_QSFP28(eeprom) + && SFF8636_MEDIA_EXTENDED(eeprom) + && SFF8636_MEDIA_100GE_PSM4(eeprom)) + return SFF_MODULE_TYPE_100G_PSM4; + if (SFF8436_MODULE_QSFP_PLUS_V2(eeprom) && SFF8436_MEDIA_40GE_CR4(eeprom)) return SFF_MODULE_TYPE_40G_BASE_CR4; @@ -241,6 +246,7 @@ sff_media_type_get(sff_module_type_t mt) case SFF_MODULE_TYPE_100G_BASE_SR4: case SFF_MODULE_TYPE_100G_BASE_LR4: case SFF_MODULE_TYPE_100G_CWDM4: + case SFF_MODULE_TYPE_100G_PSM4: case SFF_MODULE_TYPE_40G_BASE_SR4: case SFF_MODULE_TYPE_40G_BASE_LR4: case SFF_MODULE_TYPE_40G_BASE_LM4: @@ -286,6 +292,7 @@ sff_module_caps_get(sff_module_type_t mt, uint32_t *caps) case SFF_MODULE_TYPE_100G_BASE_LR4: case SFF_MODULE_TYPE_100G_BASE_CR4: case SFF_MODULE_TYPE_100G_CWDM4: + case SFF_MODULE_TYPE_100G_PSM4: *caps |= SFF_MODULE_CAPS_F_100G; return 0; @@ -677,6 +684,7 @@ sff_info_init(sff_info_t* info, sff_module_type_t mt, case SFF_MODULE_TYPE_100G_BASE_SR4: case SFF_MODULE_TYPE_100G_BASE_LR4: case SFF_MODULE_TYPE_100G_CWDM4: + case SFF_MODULE_TYPE_100G_PSM4: info->sfp_type = SFF_SFP_TYPE_QSFP28; info->media_type = SFF_MEDIA_TYPE_FIBER; info->caps = SFF_MODULE_CAPS_F_100G; diff --git a/packages/base/any/onlp/src/sff/module/src/sff_db.c b/packages/base/any/onlp/src/sff/module/src/sff_db.c index 0318b1c3..f7129be1 100644 --- a/packages/base/any/onlp/src/sff/module/src/sff_db.c +++ b/packages/base/any/onlp/src/sff/module/src/sff_db.c @@ -61,6 +61,10 @@ #define SFF_100G_CWDM4_PROPERTIES \ SFF_SFP_TYPE_QSFP28, "QSFP28", SFF_MODULE_TYPE_100G_CWDM4, "100G-CWDM4", SFF_MEDIA_TYPE_FIBER, "Fiber", SFF_MODULE_CAPS_F_100G +#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 + + static sff_db_entry_t sff_database__[] = { @@ -1413,6 +1417,35 @@ static sff_db_entry_t sff_database__[] = }, }, }, + { + { + .eeprom = { + 0x11, 0x07, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xb8, 0x00, 0x00, 0x85, 0x0b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x45, 0x26, 0x44, 0xf0, 0x45, 0x63, + 0x45, 0x3a, 0x1d, 0xee, 0x1d, 0x88, 0x23, 0x8a, 0x24, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0xcc, 0x0c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x40, 0x49, 0x4e, 0x4e, 0x4f, 0x4c, 0x49, 0x47, 0x48, 0x54, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x00, 0x44, 0x7c, 0x7f, 0x54, 0x52, 0x2d, 0x56, 0x43, 0x31, 0x33, 0x54, + 0x2d, 0x4e, 0x30, 0x30, 0x20, 0x20, 0x20, 0x20, 0x30, 0x31, 0x66, 0x58, 0x07, 0xd0, 0x46, 0x33, + 0x07, 0x07, 0xff, 0xda, 0x49, 0x4e, 0x47, 0x41, 0x54, 0x36, 0x36, 0x35, 0x30, 0x30, 0x37, 0x39, + 0x20, 0x20, 0x20, 0x20, 0x31, 0x36, 0x30, 0x35, 0x31, 0x32, 0x31, 0x39, 0x0c, 0x00, 0x67, 0x57, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + }, + .info = { + "INNOLIGHT ", + "TR-VC13T-N00 ", + "INGAT6650079 ", + SFF_100G_PSM4_PROPERTIES, + -1, + }, + }, + }, #endif /** SFF_CONFIG_INCLUDE_DATABASE */ }; diff --git a/packages/base/any/onlp/src/sff/module/src/sff_enums.c b/packages/base/any/onlp/src/sff/module/src/sff_enums.c index b2ce8fc3..29eb27b6 100644 --- a/packages/base/any/onlp/src/sff/module/src/sff_enums.c +++ b/packages/base/any/onlp/src/sff/module/src/sff_enums.c @@ -136,6 +136,7 @@ aim_map_si_t sff_module_type_map[] = { "100G_BASE_SR4", SFF_MODULE_TYPE_100G_BASE_SR4 }, { "100G_BASE_LR4", SFF_MODULE_TYPE_100G_BASE_LR4 }, { "100G_CWDM4", SFF_MODULE_TYPE_100G_CWDM4 }, + { "100G_PSM4", SFF_MODULE_TYPE_100G_PSM4 }, { "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 }, @@ -172,6 +173,7 @@ aim_map_si_t sff_module_type_desc_map[] = { "100GBASE-SR4", SFF_MODULE_TYPE_100G_BASE_SR4 }, { "100GBASE-LR4", SFF_MODULE_TYPE_100G_BASE_LR4 }, { "100G-CWDM4", SFF_MODULE_TYPE_100G_CWDM4 }, + { "100G-PSM4", SFF_MODULE_TYPE_100G_PSM4 }, { "40GBASE-CR4", SFF_MODULE_TYPE_40G_BASE_CR4 }, { "40GBASE-SR4", SFF_MODULE_TYPE_40G_BASE_SR4 }, { "40GBASE-LR4", SFF_MODULE_TYPE_40G_BASE_LR4 }, diff --git a/packages/base/any/onlp/src/sff/sff.mk b/packages/base/any/onlp/src/sff/sff.mk index e982638c..b2002c58 100644 --- a/packages/base/any/onlp/src/sff/sff.mk +++ b/packages/base/any/onlp/src/sff/sff.mk @@ -3,7 +3,7 @@ # # Inclusive Makefile for the sff module. # -# Autogenerated 2017-08-22 22:14:08.507022 +# Autogenerated 2017-08-31 20:47:10.071123 # ############################################################################### sff_BASEDIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) diff --git a/packages/platforms-closed b/packages/platforms-closed index 194d6cef..84fffe45 160000 --- a/packages/platforms-closed +++ b/packages/platforms-closed @@ -1 +1 @@ -Subproject commit 194d6cef67bc5f67eecad95456c5085cd5ba47c3 +Subproject commit 84fffe4502faabac0891b7e80fe3eea9a02df099 diff --git a/sm/infra b/sm/infra index fd74bf9c..36947a54 160000 --- a/sm/infra +++ b/sm/infra @@ -1 +1 @@ -Subproject commit fd74bf9c3fa31901ef3570a1b02e5a9621232fbe +Subproject commit 36947a5451e7d4fb4e9008aa346786fffc6fc82a