Commit 4df35933 authored by Adam Wujek's avatar Adam Wujek 💬

[Feature:#36] userspace/snmp: add DOM for SFPs

Signed-off-by: Adam Wujek's avatarAdam Wujek <adam.wujek@cern.ch>
parent ee33d64a
...@@ -637,6 +637,12 @@ ...@@ -637,6 +637,12 @@
\snmpentrye{WR-SWITCH-MIB}{wrsPortStatusTable}{wrsPortStatusPtpTxFrames.<n>}{} \snmpentrye{WR-SWITCH-MIB}{wrsPortStatusTable}{wrsPortStatusPtpTxFrames.<n>}{}
\snmpentrye{WR-SWITCH-MIB}{wrsPortStatusTable}{wrsPortStatusPtpRxFrames.<n>}{} \snmpentrye{WR-SWITCH-MIB}{wrsPortStatusTable}{wrsPortStatusPtpRxFrames.<n>}{}
\snmpentrye{WR-SWITCH-MIB}{wrsPortStatusTable}{wrsPortStatusMonitor.<n>}{} \snmpentrye{WR-SWITCH-MIB}{wrsPortStatusTable}{wrsPortStatusMonitor.<n>}{}
\snmpentrye{WR-SWITCH-MIB}{wrsPortStatusTable}{wrsPortStatusSfpDom.<n>}{}
\snmpentrye{WR-SWITCH-MIB}{wrsPortStatusTable}{wrsPortStatusSfpTemp.<n>}{}
\snmpentrye{WR-SWITCH-MIB}{wrsPortStatusTable}{wrsPortStatusSfpVcc.<n>}{}
\snmpentrye{WR-SWITCH-MIB}{wrsPortStatusTable}{wrsPortStatusSfpTxBiax.<n>}{}
\snmpentrye{WR-SWITCH-MIB}{wrsPortStatusTable}{wrsPortStatusSfpTxPower.<n>}{}
\snmpentrye{WR-SWITCH-MIB}{wrsPortStatusTable}{wrsPortStatusSfpRxPower.<n>}{}
\snmpentrye{WR-SWITCH-MIB}{}{wrsPtpInstanceTable}{Table with all PTP instances. \snmpentrye{WR-SWITCH-MIB}{}{wrsPtpInstanceTable}{Table with all PTP instances.
This table has two indexes. The first one \textit{n}, corresponds to port This table has two indexes. The first one \textit{n}, corresponds to port
......
...@@ -28,7 +28,14 @@ wrSwitchMIB MODULE-IDENTITY ...@@ -28,7 +28,14 @@ wrSwitchMIB MODULE-IDENTITY
REVISION "201807181400Z" REVISION "201807181400Z"
DESCRIPTION DESCRIPTION
"Add wrsStartCntLldpd "Add wrsStartCntLldpd
Add wrsPortStatusMonitor Add in wrsPortStatusTable:
- wrsPortStatusMonitor
- wrsPortStatusSfpDom
- wrsPortStatusSfpTemp
- wrsPortStatusSfpVcc
- wrsPortStatusSfpTxBias
- wrsPortStatusSfpTxPower
- wrsPortStatusSfpRxPower
Add wrsPtpInstanceTable Add wrsPtpInstanceTable
" "
...@@ -1974,7 +1981,13 @@ WrsPortStatusEntry ::= ...@@ -1974,7 +1981,13 @@ WrsPortStatusEntry ::=
wrsPortStatusSfpError INTEGER, wrsPortStatusSfpError INTEGER,
wrsPortStatusPtpTxFrames Counter32, wrsPortStatusPtpTxFrames Counter32,
wrsPortStatusPtpRxFrames Counter32, wrsPortStatusPtpRxFrames Counter32,
wrsPortStatusMonitor INTEGER wrsPortStatusMonitor INTEGER,
wrsPortStatusSfpDom INTEGER,
wrsPortStatusSfpTemp INTEGER,
wrsPortStatusSfpVcc INTEGER,
wrsPortStatusSfpTxBias INTEGER,
wrsPortStatusSfpTxPower INTEGER,
wrsPortStatusSfpRxPower INTEGER
} }
wrsPortStatusIndex OBJECT-TYPE wrsPortStatusIndex OBJECT-TYPE
...@@ -2123,6 +2136,64 @@ wrsPortStatusMonitor OBJECT-TYPE ...@@ -2123,6 +2136,64 @@ wrsPortStatusMonitor OBJECT-TYPE
"If disable, SNMP will not generate any errors for this port." "If disable, SNMP will not generate any errors for this port."
::= { wrsPortStatusEntry 15 } ::= { wrsPortStatusEntry 15 }
wrsPortStatusSfpDom OBJECT-TYPE
SYNTAX INTEGER {
na(0),
enable(1),
disable(2),
domNotSupported(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"If disable, SNMP will not generate any errors for this port."
::= { wrsPortStatusEntry 16 }
wrsPortStatusSfpTemp OBJECT-TYPE
SYNTAX INTEGER
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Temperature reported by SFP. According to SFF-8472, accuracy of
this value must be better than 3 degrees Celsius"
::= { wrsPortStatusEntry 17 }
wrsPortStatusSfpVcc OBJECT-TYPE
SYNTAX INTEGER
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Internally measured transceiver supply voltage reported by SFP.
According to SFF-8472, accuracy of this value must be better than 3%"
::= { wrsPortStatusEntry 18 }
wrsPortStatusSfpTxBias OBJECT-TYPE
SYNTAX INTEGER
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Measured TX bias current in uA reported by SFP.
According to SFF-8472, accuracy of this value must be better than 10%"
::= { wrsPortStatusEntry 19 }
wrsPortStatusSfpTxPower OBJECT-TYPE
SYNTAX INTEGER
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Measured TX output power in uW reported by SFP.
According to SFF-8472, accuracy of this value must be better than 3dB%"
::= { wrsPortStatusEntry 20 }
wrsPortStatusSfpRxPower OBJECT-TYPE
SYNTAX INTEGER
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Measured RX output power in uW reported by SFP.
According to SFF-8472, accuracy of this value must be better than 3dB%"
::= { wrsPortStatusEntry 21 }
-- wrsPstatsHCTable (.7.7) -- wrsPstatsHCTable (.7.7)
wrsPstatsHCTable OBJECT-TYPE wrsPstatsHCTable OBJECT-TYPE
SYNTAX SEQUENCE OF WrsPstatsHCEntry SYNTAX SEQUENCE OF WrsPstatsHCEntry
......
...@@ -24,6 +24,12 @@ static struct pickinfo wrsPortStatusTable_pickinfo[] = { ...@@ -24,6 +24,12 @@ static struct pickinfo wrsPortStatusTable_pickinfo[] = {
FIELD(wrsPortStatusTable_s, ASN_COUNTER, wrsPortStatusPtpTxFrames), FIELD(wrsPortStatusTable_s, ASN_COUNTER, wrsPortStatusPtpTxFrames),
FIELD(wrsPortStatusTable_s, ASN_COUNTER, wrsPortStatusPtpRxFrames), FIELD(wrsPortStatusTable_s, ASN_COUNTER, wrsPortStatusPtpRxFrames),
FIELD(wrsPortStatusTable_s, ASN_INTEGER, wrsPortStatusMonitor), FIELD(wrsPortStatusTable_s, ASN_INTEGER, wrsPortStatusMonitor),
FIELD(wrsPortStatusTable_s, ASN_INTEGER, wrsPortStatusSfpDom),
FIELD(wrsPortStatusTable_s, ASN_INTEGER, wrsPortStatusSfpTemp),
FIELD(wrsPortStatusTable_s, ASN_INTEGER, wrsPortStatusSfpVcc),
FIELD(wrsPortStatusTable_s, ASN_INTEGER, wrsPortStatusSfpTxBias),
FIELD(wrsPortStatusTable_s, ASN_INTEGER, wrsPortStatusSfpTxPower),
FIELD(wrsPortStatusTable_s, ASN_INTEGER, wrsPortStatusSfpRxPower),
}; };
...@@ -132,6 +138,27 @@ time_t wrsPortStatusTable_data_fill(unsigned int *n_rows) ...@@ -132,6 +138,27 @@ time_t wrsPortStatusTable_data_fill(unsigned int *n_rows)
strncpy(wrsPortStatusTable_array[i].wrsPortStatusSfpVS, strncpy(wrsPortStatusTable_array[i].wrsPortStatusSfpVS,
port_state->calib.sfp.vendor_serial, port_state->calib.sfp.vendor_serial,
sizeof(wrsPortStatusTable_array[i].wrsPortStatusSfpVS)); sizeof(wrsPortStatusTable_array[i].wrsPortStatusSfpVS));
/* Copy DOM data for SFP */
if (hal_shmem->read_sfp_diag) {
if (port_state->has_sfp_diag) {
wrsPortStatusTable_array[i].wrsPortStatusSfpDom = WRS_PORT_STATUS_SFP_DOM_ENABLE;
/* temp in C */
wrsPortStatusTable_array[i].wrsPortStatusSfpTemp = ntohs(*port_state->calib.sfp_dom_raw.temp)/256;
/* vcc in mV */
wrsPortStatusTable_array[i].wrsPortStatusSfpVcc = ntohs(*port_state->calib.sfp_dom_raw.vcc)/10;
/* tx_bias in uA */
wrsPortStatusTable_array[i].wrsPortStatusSfpTxBias = ntohs(*port_state->calib.sfp_dom_raw.tx_bias)*2;
/* tx_pow in uW */
wrsPortStatusTable_array[i].wrsPortStatusSfpTxPower = ntohs(*port_state->calib.sfp_dom_raw.tx_pow)/10;
/* rx_pow in uW */
wrsPortStatusTable_array[i].wrsPortStatusSfpRxPower = ntohs(*port_state->calib.sfp_dom_raw.rx_pow)/10;
} else {
wrsPortStatusTable_array[i].wrsPortStatusSfpDom = WRS_PORT_STATUS_SFP_DOM_NOT_SUPPORTED;
}
} else {
wrsPortStatusTable_array[i].wrsPortStatusSfpDom = WRS_PORT_STATUS_SFP_DOM_DISABLE;
}
} }
retries++; retries++;
......
...@@ -26,6 +26,9 @@ ...@@ -26,6 +26,9 @@
#define WRS_PORT_STATUS_MONITOR_ENABLE HAL_PORT_MONITOR_ENABLE #define WRS_PORT_STATUS_MONITOR_ENABLE HAL_PORT_MONITOR_ENABLE
#define WRS_PORT_STATUS_MONITOR_DISABLE HAL_PORT_MONITOR_DISABLE #define WRS_PORT_STATUS_MONITOR_DISABLE HAL_PORT_MONITOR_DISABLE
#define WRS_PORT_STATUS_SFP_DOM_ENABLE 1
#define WRS_PORT_STATUS_SFP_DOM_DISABLE 2
#define WRS_PORT_STATUS_SFP_DOM_NOT_SUPPORTED 3
struct wrsPortStatusTable_s { struct wrsPortStatusTable_s {
uint32_t index; /* not reported, index fields has to be marked uint32_t index; /* not reported, index fields has to be marked
...@@ -45,6 +48,12 @@ struct wrsPortStatusTable_s { ...@@ -45,6 +48,12 @@ struct wrsPortStatusTable_s {
unsigned long wrsPortStatusPtpTxFrames; unsigned long wrsPortStatusPtpTxFrames;
unsigned long wrsPortStatusPtpRxFrames; unsigned long wrsPortStatusPtpRxFrames;
int wrsPortStatusMonitor; /* Ignore errors on this port */ int wrsPortStatusMonitor; /* Ignore errors on this port */
int wrsPortStatusSfpDom;
int wrsPortStatusSfpTemp;
int wrsPortStatusSfpVcc;
int wrsPortStatusSfpTxBias;
int wrsPortStatusSfpTxPower;
int wrsPortStatusSfpRxPower;
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment