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