From 0bf5f4c0bf46a03e20bb12feeb1426c81bcc6f5f Mon Sep 17 00:00:00 2001 From: Adam Wujek <adam.wujek@cern.ch> Date: Tue, 19 Jul 2016 11:48:12 +0200 Subject: [PATCH] userspace/snmpd: add verbosity to wrsSoftPLLStatus in wrsTimingStatusGroup Signed-off-by: Adam Wujek <adam.wujek@cern.ch> --- userspace/snmpd/wrsTimingStatusGroup.c | 124 +++++++++++++++++-------- 1 file changed, 84 insertions(+), 40 deletions(-) diff --git a/userspace/snmpd/wrsTimingStatusGroup.c b/userspace/snmpd/wrsTimingStatusGroup.c index 035a2e8df..082e4690f 100644 --- a/userspace/snmpd/wrsTimingStatusGroup.c +++ b/userspace/snmpd/wrsTimingStatusGroup.c @@ -213,53 +213,97 @@ static void get_wrsSoftPLLStatus(void) */ s = &wrsSpllStatus_s; t = &wrsTimingStatus_s; - if ( /* check if error */ - s->wrsSpllSeqState != WRS_SPLL_SEQ_STATE_READY - || (s->wrsSpllMode == WRS_SPLL_MODE_GRAND_MASTER && s->wrsSpllAlignState != WRS_SPLL_ALIGN_STATE_LOCKED) - || ((s->wrsSpllMode != WRS_SPLL_MODE_GRAND_MASTER) + slog_obj_name = wrsSoftPLLStatus_str; + + t->wrsSoftPLLStatus = 0; + /* check if error */ + if (s->wrsSpllSeqState != WRS_SPLL_SEQ_STATE_READY) { + t->wrsSoftPLLStatus = WRS_SOFTPLL_STATUS_ERROR; + snmp_log(LOG_ERR, "SNMP: " SL_ER " %s: " + "Sequencing FSM state of SoftPLL is not READY. " + "SoftPLL is not yet ready or has unlocked.\n", + slog_obj_name); + } + if (s->wrsSpllMode == WRS_SPLL_MODE_GRAND_MASTER + && s->wrsSpllAlignState != WRS_SPLL_ALIGN_STATE_LOCKED) { + t->wrsSoftPLLStatus = WRS_SOFTPLL_STATUS_ERROR; + snmp_log(LOG_ERR, "SNMP: " SL_ER " %s: " + "Allignment FSM state of SoftPLL is not LOCKED. " + "SoftPLL is not yet ready or has unlocked.\n", + slog_obj_name); + } + if ((s->wrsSpllMode != WRS_SPLL_MODE_GRAND_MASTER) && (s->wrsSpllMode != WRS_SPLL_MODE_MASTER) - && (s->wrsSpllMode != WRS_SPLL_MODE_SLAVE)) - || ((s->wrsSpllMode == WRS_SPLL_MODE_SLAVE) && ((s->wrsSpllHlock == 0) || (s->wrsSpllMlock == 0))) - ) { - t->wrsSoftPLLStatus = - WRS_SOFTPLL_STATUS_ERROR; - /*snmp_log(LOG_ERR, "SNMP: wrsSoftPLLStatus" - "%d %d %d %d\n", - s->wrsSpllSeqState != WRS_SPLL_SEQ_STATE_READY, - s->wrsSpllMode == WRS_SPLL_MODE_GRAND_MASTER && s->wrsSpllAlignState != WRS_SPLL_ALIGN_STATE_LOCKED, - ((s->wrsSpllMode != WRS_SPLL_MODE_GRAND_MASTER) - && (s->wrsSpllMode != WRS_SPLL_MODE_MASTER) - && (s->wrsSpllMode != WRS_SPLL_MODE_SLAVE)), - ((s->wrsSpllMode == WRS_SPLL_MODE_SLAVE) && ((s->wrsSpllHlock == 0) || (s->wrsSpllMlock == 0))) - );*/ - } else if ( /* check if warning */ - (s->wrsSpllMode == WRS_SPLL_MODE_GRAND_MASTER && s->wrsSpllDelCnt > 0) - || (s->wrsSpllDelCnt != spll_DelCnt_prev) - ) { /* warning */ - t->wrsSoftPLLStatus = - WRS_SOFTPLL_STATUS_WARNING; - - } else if ( /* check if any of fields equal to 0 or WARNING_NA */ - s->wrsSpllMode == 0 - ) { /* warning NA */ - t->wrsSoftPLLStatus = - WRS_SOFTPLL_STATUS_WARNING_NA; - - } else if ( /* check if OK */ + && (s->wrsSpllMode != WRS_SPLL_MODE_SLAVE)) { + t->wrsSoftPLLStatus = WRS_SOFTPLL_STATUS_ERROR; + snmp_log(LOG_ERR, "SNMP: " SL_ER " %s: " + "SoftPLL in mode %d which is neither of the supported " + "modes: GrandMaster, Master, Slave\n", + slog_obj_name, s->wrsSpllMode); + } + if ((s->wrsSpllMode == WRS_SPLL_MODE_SLAVE) && (s->wrsSpllHlock == 0)){ + t->wrsSoftPLLStatus = WRS_SOFTPLL_STATUS_ERROR; + snmp_log(LOG_ERR, "SNMP: " SL_ER " %s: " + "SoftPLL is in Slave mode and Helper PLL is not locked\n", + slog_obj_name); + } + if ((s->wrsSpllMode == WRS_SPLL_MODE_SLAVE) && (s->wrsSpllMlock == 0)){ + t->wrsSoftPLLStatus = WRS_SOFTPLL_STATUS_ERROR; + snmp_log(LOG_ERR, "SNMP: " SL_ER " %s: " + "SoftPLL is in Slave mode and Main PLL is not locked\n", + slog_obj_name); + } + + /* check if warning */ + if (!t->wrsSoftPLLStatus) { + if (s->wrsSpllMode == WRS_SPLL_MODE_GRAND_MASTER && s->wrsSpllDelCnt > 0) { + t->wrsSoftPLLStatus = WRS_SOFTPLL_STATUS_WARNING; + snmp_log(LOG_ERR, "SNMP: " SL_W " %s: " + "SoftPLL in GrandMaster mode has unlocked from " + "the external reference. Delock counter is %d\n", + slog_obj_name, s->wrsSpllDelCnt); + } + if (s->wrsSpllMode == WRS_SPLL_MODE_MASTER && s->wrsSpllDelCnt != spll_DelCnt_prev) { + t->wrsSoftPLLStatus = WRS_SOFTPLL_STATUS_WARNING; + snmp_log(LOG_ERR, "SNMP: " SL_W " %s: " + "SoftPLL in Master mode has unlocked. Delock " + "counter insceased by %d\n", + slog_obj_name, + s->wrsSpllDelCnt - spll_DelCnt_prev); + } + if (s->wrsSpllMode == WRS_SPLL_MODE_SLAVE && s->wrsSpllDelCnt != spll_DelCnt_prev) { + t->wrsSoftPLLStatus = WRS_SOFTPLL_STATUS_WARNING; + snmp_log(LOG_ERR, "SNMP: " SL_W " %s: " + "SoftPLL in Slave mode has unlocked. Delock " + "counter insceased by %d\n", + slog_obj_name, + s->wrsSpllDelCnt - spll_DelCnt_prev); + } + } + /* check if any of fields equal to 0 or WARNING_NA */ + if (!t->wrsSoftPLLStatus) { + if (s->wrsSpllMode == 0) { + t->wrsSoftPLLStatus = WRS_SOFTPLL_STATUS_WARNING_NA; + snmp_log(LOG_ERR, "SNMP: " SL_NA " %s: " + "SoftPLL mode not set\n", + slog_obj_name); + } + } + /* check if OK */ + if ((!t->wrsSoftPLLStatus) && ( ((s->wrsSpllMode == WRS_SPLL_MODE_GRAND_MASTER && s->wrsSpllDelCnt == 0) || (s->wrsSpllDelCnt == spll_DelCnt_prev)) && s->wrsSpllSeqState == WRS_SPLL_SEQ_STATE_READY && ((s->wrsSpllMode == WRS_SPLL_MODE_GRAND_MASTER && s->wrsSpllAlignState == WRS_SPLL_ALIGN_STATE_LOCKED) || (s->wrsSpllMode == WRS_SPLL_MODE_MASTER) - || (s->wrsSpllMode == WRS_SPLL_MODE_SLAVE)) + || (s->wrsSpllMode == WRS_SPLL_MODE_SLAVE))) ) { /* OK */ - t->wrsSoftPLLStatus = - WRS_SOFTPLL_STATUS_OK; - - } else { /* probably bug in previous conditions, - * this should never happen */ - t->wrsSoftPLLStatus = - WRS_SOFTPLL_STATUS_BUG; + t->wrsSoftPLLStatus = WRS_SOFTPLL_STATUS_OK; + } + /* probably bug in previous conditions, this should never happen */ + if (!t->wrsSoftPLLStatus) { + t->wrsSoftPLLStatus = WRS_SOFTPLL_STATUS_BUG; + SLOG(SL_BUG); } spll_DelCnt_prev = s->wrsSpllDelCnt; -- GitLab