Commit 430ee471 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 af8f7c16
......@@ -637,6 +637,12 @@
\snmpentrye{WR-SWITCH-MIB}{wrsPortStatusTable}{wrsPortStatusPtpTxFrames.<n>}{}
\snmpentrye{WR-SWITCH-MIB}{wrsPortStatusTable}{wrsPortStatusPtpRxFrames.<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>}{}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Add entries from other MIBs.
......
......@@ -28,7 +28,14 @@ wrSwitchMIB MODULE-IDENTITY
REVISION "201807181400Z"
DESCRIPTION
"Add wrsStartCntLldpd
Add wrsPortStatusMonitor
Add in wrsPortStatusTable:
- wrsPortStatusMonitor
- wrsPortStatusSfpDom
- wrsPortStatusSfpTemp
- wrsPortStatusSfpVcc
- wrsPortStatusSfpTxBias
- wrsPortStatusSfpTxPower
- wrsPortStatusSfpRxPower
"
REVISION "201602171600Z"
......@@ -1973,7 +1980,13 @@ WrsPortStatusEntry ::=
wrsPortStatusSfpError INTEGER,
wrsPortStatusPtpTxFrames Counter32,
wrsPortStatusPtpRxFrames Counter32,
wrsPortStatusMonitor INTEGER
wrsPortStatusMonitor INTEGER,
wrsPortStatusSfpDom INTEGER,
wrsPortStatusSfpTemp INTEGER,
wrsPortStatusSfpVcc INTEGER,
wrsPortStatusSfpTxBias INTEGER,
wrsPortStatusSfpTxPower INTEGER,
wrsPortStatusSfpRxPower INTEGER
}
wrsPortStatusIndex OBJECT-TYPE
......@@ -2122,6 +2135,64 @@ wrsPortStatusMonitor OBJECT-TYPE
"If disable, SNMP will not generate any errors for this port."
::= { 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 OBJECT-TYPE
SYNTAX SEQUENCE OF WrsPstatsHCEntry
......
......@@ -24,6 +24,12 @@ static struct pickinfo wrsPortStatusTable_pickinfo[] = {
FIELD(wrsPortStatusTable_s, ASN_COUNTER, wrsPortStatusPtpTxFrames),
FIELD(wrsPortStatusTable_s, ASN_COUNTER, wrsPortStatusPtpRxFrames),
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)
strncpy(wrsPortStatusTable_array[i].wrsPortStatusSfpVS,
port_state->calib.sfp.vendor_serial,
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++;
......
......@@ -26,6 +26,9 @@
#define WRS_PORT_STATUS_MONITOR_ENABLE HAL_PORT_MONITOR_ENABLE
#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 {
uint32_t index; /* not reported, index fields has to be marked
......@@ -45,6 +48,12 @@ struct wrsPortStatusTable_s {
unsigned long wrsPortStatusPtpTxFrames;
unsigned long wrsPortStatusPtpRxFrames;
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