Commit 86b7500f authored by Grzegorz Daniluk's avatar Grzegorz Daniluk

Merge branch 'wrpc-snmp-doc' into proposed_master

parents 24895538 9d3b7924
revinfo.tex
wrpc_failures.pdf
all : wrpc_failures.pdf
.PHONY : all clean
RELEASE = $(shell git describe --always --dirty)
wrpc_failures.pdf : wrpc_failures.tex fail.tex intro.tex snmp_objects.tex snmp_exports.tex
@echo '\\newcommand{\\gitrevinfo}{'$(RELEASE)'}' > revinfo.tex
pdflatex wrpc_failures.tex
pdflatex wrpc_failures.tex
# To speed up generation of document for development, please comment out:
# % print alphabetical list
# \printnoidxglossary[type=snmp_all,style=tree,sort=letter]
# from doc/wrpc_failures/snmp_exports.tex file.
clean :
rm -f *.eps *.dat *.log *.out *.aux *.dvi *.ps *.toc *.pdf revinfo.tex
This section tries to identify all the possible ways the White Rabbit PTP Core can
fail. The structure of each error description is the following:
\begin{itemize}[leftmargin=0pt]
\item [] \underline{Severity}: describes how critical is the fault. Currently
we distinguish two severity levels:
\begin{packed_items}
\item WARNING - means that despite the fault the synchronization
functionality was not affected so the WRPC behaves correctly in the WR
network.
\item ERROR - means that the fault is critical and most probably WRPC
misbehaves.
\end{packed_items}
\item [] \underline{Mode}: for timing failures, it describes which modes are
affected. Possible values are:
\begin{packed_items}
\item \emph{Slave} - the WR Node (WR PTP Core) synchronizes to another WR
device.
\item \emph{Grand Master} - the WR Node (WR PTP Core) is at the top of the
synchronization hierarchy. It is synchronized to an external clock (e.g.
GPS, Cesium) and provides timing to other WR/PTP devices.
\item \emph{Master} - the WR Node (WR PTP Core) at the top of the
synchronization hierarchy. It provides timing to other WR/PTP devices
but runs from a local oscillator (not synchronized to an external
clock).
\item \emph{all} - any WR PTP Core can be affected regardless the timing
mode.
\end{packed_items}
\item [] \underline{Description}: What the problem is about, how important it
is and what are the effects if it occurs.
\item [] \underline{SNMP objects}: Which SNMP objects should be monitored to
detect the failure. These are objects from the \texttt{WR-WRPC-MIB}.
\item [] \underline{Error/Warning condition}: condition that should be checked
at the SNMP manager's side to detect given problem. Often you will see there
conditions like:\\
\texttt{[value] != [value]\_prev} or\\
\texttt{[value] - [value]\_prev > [threshold]}\\
where \text{[value]} and \text{[value]\_prev} are the current and previous
iteration readouts of an SNMP object. This way we check if the value of the
object has changed from the previous readout or if it has changed by more
than a safe threshold.
\item [] \underline{Action}: list of actions that should be performed in case
of an error/warning. Regardless of the detailed actions described for each
of the errors below, there are some common remarks that apply to all
situations:
\begin{itemize}
\item If a procedure given for a specific SNMP object does not solve the
problem, please contact WR experts to perform a more in-depth analysis of
the network. For this, you should provide a complete dump of the WRPC
status generated in the first step of each procedure.
\item The first action in most of the procedures, called \emph{Dump state}
requires simply calling a tool provided by WR developers that reads all
the detailed information from the node and writes it to a single file
that can be later analyzed by the experts.
\item If a problem solving procedure requires restarting or replacing a WR
Node working in the \emph{Grand Master} mode, please make sure that after
the repair, all other WR devices in the network are synchronized and do
not report any problems.
\item If a procedure requires replacing WR Node with a new unit, the
broken one should be handled to WR experts or the hardware manufacturer to
investigate the problem.
\end{itemize}
\end{itemize}
\newpage
\subsection{Timing error}
\label{sec:timing_fail}
As a timing error we define the WR PTP Core not being able to synchronize its
local time to the WR Master (if WRPC runs in the slave mode), or not being able
to provide correct WR time to the rest of the WR network (if WRPC runs in the
master mode). This section contains the list of faults leading to a timing error.
\subsubsection{\bf PTP/PPSi went out of \texttt{TRACK\_PHASE}}
\label{fail:timing:ppsi_track_phase}
\begin{pck_descr}
\item [] \underline{Severity}: ERROR
\item [] \underline{Mode}: \emph{Slave}
\item [] \underline{Description}:\\
If the \emph{PTP/PPSi} WR servo goes out of the \texttt{TRACK\_PHASE}
state, this means something bad has happened and the node lost
synchronization to its Master.
\item [] \underline{SNMP objects}:\\
{\footnotesize
\snmpadd{WR-WRPC-MIB::wrpcPtpServoStateN}\\
\snmpadd{WR-WRPC-MIB::wrpcPtpServoStateErrCnt} }
\item [] \underline{Error condition}:\\
{\footnotesize
\texttt{wrpcPtpServoStateErrCnt != wrpcPtpServoStateErrCnt\_prev} }
\item [] \underline{Action}:
\begin{pck_proc}
\item Check if the WR Master - timing source, was not restarted. If it
was, Slave leaving \texttt{TRACK\_PHASE} state is a normal behavior
and it should automatically re-synchronize.
\item Dump state
\item Check the status of the WR Master - timing source. In case it has
reported some problems, please follow the diagnostics document for the
WR Switch.
\item If the switch did not report any problems, restart the WR Node.
\item If the problem persists replace the WR Node hardware with a new
unit.
\item If the problem persists, please notify WR experts.
\end{pck_proc}
\end{pck_descr}
\subsubsection{\bf Offset jump not compensated by Slave}
\label{fail:timing:offset_jump}
\begin{pck_descr}
\item [] \underline{Severity}: ERROR
\item [] \underline{Mode}: \emph{Slave}
\item [] \underline{Description}:\\
This may happen if the Master resets its WR time counters (e.g. because
it lost the link to its Master higher in the hierarchy or to external
clock), but the WR Slave does not follow the jump.
\item [] \underline{SNMP objects}:\\
{\footnotesize
\snmpadd{WR-WRPC-MIB::wrpcPtpClockOffsetPsHR}\\
\snmpadd{WR-WRPC-MIB::wrpcPtpClockOffsetErrCnt} }
\item [] \underline{Error condition}:\\
{\footnotesize
\texttt{wrpcPtpClockOffsetErrCnt != wrpcPtpClockOffsetErrCnt\_prev} }
\item [] \underline{Action}:
\begin{pck_proc}
\item Dump state
\item Check the status of the WR Master - timing source. Normally, time
jumps should not happen and if they do, the problem should be
investigated on the WR Master side (e.g. \emph{Grand Master} unlocked
from the external reference).
\item Restart the WR Node and let it synchronize again.
\end{pck_proc}
\end{pck_descr}
\subsubsection{\bf Detected jump in the RTT value calculated by \emph{PTP/PPSi}}
\label{fail:timing:rtt_jump}
\begin{pck_descr}
\item [] \underline{Severity}: ERROR
\item [] \underline{Mode}: \emph{Slave}
\item [] \underline{Description}:\\
Once a WR link is established the round-trip delay (RTT) can change
smoothly due to the temperature variations. However, if a sudden jump is
detected, that means that an erroneous timestamp was generated either on
the Master or the Slave side.
One cause of that could be the wrong value of the t24p transition point.
\item [] \underline{SNMP objects}:\\
{\footnotesize
\snmpadd{WR-WRPC-MIB::wrpcPtpRTT}\\
\snmpadd{WR-WRPC-MIB::wrpcPtpRTTErrCnt} }
\item [] \underline{Error condition}:\\
{\footnotesize
\texttt{wrpcPtpRTTErrCnt != wrpcPtpRTTErrCnt\_prev} }
\item [] \underline{Action}:
\begin{pck_proc}
\item Dump state.
\item Check the status status of the WR Master - timing source.
Eventually proceed to investigate the problem on the WR Master side.
\item Restart the Node.
\item If the problem persists, replace the WR Node with a new unit.
\end{pck_proc}
\end{pck_descr}
\subsubsection{\bf Wrong $\Delta_{TXM}$, $\Delta_{RXM}$, $\Delta_{TXS}$,
$\Delta_{RXS}$, $\alpha$ values are reported to the \emph{PTP/PPSi} daemon}
\label{fail:timing:deltas_report}
\begin{pck_descr}
\item [] \underline{Severity}: ERROR
\item [] \underline{Mode}: \emph{Slave}
\item [] \underline{Description}:\\
If \emph{PTP/PPSi} doesn't get the correct values of fixed hardware delays,
it won't be able to calculate a proper Master-to-Slave delay. Although
the estimated offset in \emph{PTP/PPSi} is close to 0, the WRPC won't be
synchronized to the Master with sub-nanosecond accuracy.
\item [] \underline{SNMP objects}:\\
{\footnotesize
\snmpadd{WR-WRPC-MIB::wrpcPtpDeltaTxM}\\
\snmpadd{WR-WRPC-MIB::wrpcPtpDeltaRxM}\\
\snmpadd{WR-WRPC-MIB::wrpcPtpDeltaTxS}\\
\snmpadd{WR-WRPC-MIB::wrpcPtpDeltaRxS}\\
\snmpadd{WR-WRPC-MIB::wrpcPtpAlpha} }
\item [] \underline{Error condition}:\\
{\footnotesize
\texttt{wrpcPtpDeltaTxM == 0 || wrpcPtpDeltaRxM == 0 ||}\\
\texttt{wrpcPtpDeltaTxS == 0 || wrpcPtpDeltaRxS == 0 ||}\\
\texttt{wrpcPtpAlpha == 0} }
\item [] \underline{Action}:
\begin{pck_proc}
\item Check if the correct calibration values are entered both for the WR
Node and WR Master. WR Switch will report this in its own SNMP status
objects.
\item Check the White Rabbit PTP Core User Manual
\footnote{\url{http://www.ohwr.org/projects/wr-cores/wiki/Current\_release}}
for the instructions how the calibration values can be configured
locally or remotely using SET for SNMP objects.
\end{pck_proc}
\end{pck_descr}
\subsubsection{\bf PTP servo is not updating}
\label{fail:timing:servo_not_updating}
\begin{pck_descr}
\item [] \underline{Severity}: ERROR
\item [] \underline{Mode}: \emph{Slave}
\item [] \underline{Description}:\\
If PTP servo is not updating, we still increment the internal timing
counters, but don't have updated information on the Master time and link
delay. After some time the slave local time will drift away from the
master.
\item [] \underline{SNMP objects}:\\
{\footnotesize
\snmpadd{WR-WRPC-MIB::wrpcPtpServoUpdates}\\
\snmpadd{WR-WRPC-MIB::wrpcPtpServoUpdateTime} }
\item [] \underline{Error condition}:\\
{\footnotesize
\texttt{wrpcPtpServoUpdates != wrpcPtpServoUpdates} }
\item [] \underline{Action}:
\begin{pck_proc}
\item Dump state
\item Check if the PTP frames are flowing between the WR Node and its
timing master (error \ref{fail:timing:no_frames}).
\item Check the status of the WR Master - timing source.
\item Check if the SoftPLL did not unlock (error
\ref{fail:timing:spll_unlock}).
\item Restart the WR Node.
\item If the problem persists, replace the WR Node with a new unit.
\end{pck_proc}
\end{pck_descr}
\subsubsection{\bf \emph{SoftPLL} became unlocked}
\label{fail:timing:spll_unlock}
\begin{pck_descr}
\item [] \underline{Severity}: ERROR / WARNING
\item [] \underline{Mode}: \emph{all}
\item [] \underline{Description}:\\
If the \emph{SoftPLL} loses lock, for any reason, Slave, Master or Grand
Master node can no longer be syntonized and phase aligned with its time
source. WRPC in Master mode without properly locked Helper PLL is not
able to perform reliable phase measurements for enhancing Rx timestamps
resolution. For a Grand Master the reason of \emph{SoftPLL} going out of
lock might be disconnected 1-PPS/10MHz signals or that the external
clock is down.
\item [] \underline{SNMP objects}:\\
{\footnotesize
\snmpadd{WR-WRPC-MIB::wrpcSpllMode}\\
\snmpadd{WR-WRPC-MIB::wrpcSpllSeqState}\\
\snmpadd{WR-WRPC-MIB::wrpcSpllAlignState}\\
\snmpadd{WR-WRPC-MIB::wrpcSpllHlock}\\
\snmpadd{WR-WRPC-MIB::wrpcSpllMlock}\\
\snmpadd{WR-WRPC-MIB::wrpcSpllDelCnt} }
\item [] \underline{Error condition}:\\
{\footnotesize
\texttt{wrpcSpllSeqState != ready\emph{(3)} ||}\\
\texttt{[wrpcSpllMode == grandmaster\emph(1) \&\& wrpcAlignState != locked\emph{(6)}] ||}\\ % GrandMaster not locked
\texttt{[wrpcSpllMode == slave\emph{(3)} \&\& wrpcSpllHlock == 0] ||}\\ % Spll slave and Hpll unlocked
\texttt{[wrpcSpllMode == slave\emph{(3)} \&\& wrpcSpllMlock == 0] ||}\\ % Spll slave and Mpll unlocked
\texttt{[wrpcSpllMode != grandmaster\emph{(1)} \&\& wrpcSpllMode != master\emph{(2)} \&\& wrpcSpllMode != slave\emph{(3)}]}} % Spll in neither of the GM/Master/Slave modes
\item [] \underline{Warning condition}:\\
{\footnotesize
\texttt{[wrpcSpllMode == grandmaster\emph{(1)} \&\& wrpcSpllDelCnt > 0]}} % GrandMaster has unlocked from reference at some point
\item [] \underline{Action for \emph{Grand Master} WR Node}:
\begin{pck_proc}
\item Dump state
\item Check 1-PPS and 10MHz signals coming from an external source.
Verify if they are properly connected and, in case of a GPS receiver,
check if it is synchronized and locked.
\item Restart the WR Node
\item If the problem persists, replace the WR Node with a new unit
\end{pck_proc}
\item [] \underline{Action for \emph{Slave} WR Node}:
\begin{pck_proc}
\item Dump state
\item Check the status of the WR Master - timing source. Eventually
proceed to investigate the problem on the Master.
\item Verify if the WR link was not lost and re-initialized by checking
the SNMP manager software logs.
\item Restart the WR Node
\item If the problem persists, replace the WR Node with a new unit.
\end{pck_proc}
\end{pck_descr}
\subsubsection{\bf PTP frames don't reach LM32}
\label{fail:timing:no_frames}
\begin{pck_descr}
\item [] \underline{Severity}: ERROR
\item [] \underline{Mode}: \emph{all}
\item [] \underline{Description}:\\
In this case, \emph{PTP/PPSi} will fail to stay synchronized and provide
synchronization. Even if the WR servo is in the \texttt{TRACK\_PHASE}
state, it calculates a new phase shift based on the Master-to-Slave delay
variations. To calculate these variations, it still needs timestamped
PTP frames flowing. There could be several causes of such fault:
\begin{itemize}
\item WR Switch problem
\item wrong VLANs configuration
\item WR PTP Core HDL problem
\end{itemize}
\item [] \underline{SNMP objects}:\\
{\footnotesize
\snmpadd{WR-WRPC-MIB::wrpcPtpTx}\\
\snmpadd{WR-WRPC-MIB::wrpcPtpRx}\\
\snmpadd{WR-WRPC-MIB::wrpcPortInternalTx}\\
\snmpadd{WR-WRPC-MIB::wrpcPortInternalRx} }
\item [] \underline{Error condition}:\\
{\footnotesize
\texttt{wrpcPtpTx == wrpcPtpTx\_prev || wrpcPtpRx == wrpcPtpRx\_prev ||}\\
\texttt{wrpcPortInternalTx == wrpcPortInternalTx\_prev ||}\\
\texttt{wrpcPortInternalRx == wrpcPortInternalRx\_prev} }
\item [] \underline{Action}:
\begin{pck_proc}
\item Dump state.
\item Check the state of the WR Master - timing source. Especially, if
the PTP daemon is still running there.
\item Check if the VLANs configuration on the WR Node matches the
configuration of the WR Switch where this node is connected. Wrong
configuration (e.g. different VIDs) will cause the frames to be
dropped.
\item Restart the WR Node.
\item If possible, stop or reduce any additional (heavy) traffic that
might be sent through the WR network.
\item If the problem persists, please notify WR experts.
\end{pck_proc}
\end{pck_descr}
\subsubsection{\bf Detected SFP not supported for WR timing}
\label{fail:timing:wrong_sfp}
\begin{pck_descr}
\item [] \underline{Severity}: ERROR
\item [] \underline{Mode}: \emph{all}
\item [] \underline{Description}:\\
By not supported SFP for WR timing we mean a transceiver that doesn't
have the \emph{alpha} parameter and fixed hardware delays defined in the
SFP database. The consequence is \emph{PTP} not having the right
values to estimate the link asymmetry. Despite the \emph{PTP} offset
being close to \emph{0ps}, the device won't be properly synchronized.
\item [] \underline{SNMP objects}:\\
{\footnotesize
\snmpadd{WR-WRPC-MIB::wrpcPortSfpPn}\\
\snmpadd{WR-WRPC-MIB::wrpcPortSfpInDB} }
\item [] \underline{Error condition}:\\
{\footnotesize
\texttt{wrpcPortSfpInDB != inDataBase\emph{(2)}} }
\item [] \underline{Action}:
\begin{pck_proc}
\item Check if the SFP database is correctly defined by making sure the
error \ref{fail:timing:no_sfpdb} is not reported.
\item Change the optical SFP transceiver in the WR Node. Either it is
broken and should be replaced since its ID cannot be read correctly,
or a non-supported transceiver was plugged to the device.
\end{pck_proc}
\end{pck_descr}
\subsubsection{\bf SFP database not configured}
\label{fail:timing:no_sfpdb}
\begin{pck_descr}
\item [] \underline{Severity}: ERROR
\item [] \underline{Mode}: \emph{all}
\item [] \underline{Description}:\\
If there are no SFP entries in the database, any (even WR-supported) SFP
cannot be matched with the calibration values for a given hardware and
fiber. Despite \emph{PTP/PPSi} offset being close to 0 \emph{ps}, the
device won't be properly synchronized.
\item [] \underline{SNMP objects}:\\
{\footnotesize
\snmpadd{WR-WRPC-MIB::wrpcSfpPn.<n>}\\
\snmpadd{WR-WRPC-MIB::wrpcSfpDeltaTx.<n>}\\
\snmpadd{WR-WRPC-MIB::wrpcSfpDeltaRx.<n>}\\
\snmpadd{WR-WRPC-MIB::wrpcSfpAlpha.<n>} }
\item [] \underline{Note}: It's enough to try reading index 1 of the above
SNMP objects tables to make sure there is at least one entry in the
database.
\item [] \underline{Error condition}:\\
{\footnotesize
Error when trying to get any of the \texttt{wrpcSfpPn.1};
\texttt{wrpcSfpDeltaTx.1}; \texttt{wrpcSfpDeltaRx.1};
\texttt{wrpcSfpAlpha.1} SNMP objects}
\item [] \underline{Action}:
\begin{pck_proc}
\item Check the White Rabbit PTP Core User's
Manual\footnote{\url{http://www.ohwr.org/projects/wr-cores/wiki/Current\_release}}
for the instructions how the calibration values can be configured
locally or remotely using SET for SNMP objects.
\end{pck_proc}
\end{pck_descr}
\newpage
\subsection{Other errors}
\label{sec:other_fail}
\subsubsection{\bf WR link is down or FPGA not programmed or FPGA programmed with incorrect bitstream}
\label{fail:timing:master_down}
\begin{pck_descr}
\item [] \underline{Severity}: ERROR
\item [] \underline{Description}:\\
WRPC is monitored over the WR network. This means, to detect whether
the communication link is down we can either periodically ping the
device or monitor if there are no timeouts from SNMP requests.
\item [] \underline{SNMP objects}: \emph{(none)}
\item [] \underline{Error condition}:\\
{\footnotesize
SNMP request timeout or PING timeout}
\item [] \underline{Action}:
\begin{pck_proc}
\item Investigate on the computer/front-end where the WR Node card is
installed, if all the drivers are properly loaded and if the FPGA gets
programmed. You can take another WR Master device and connect it
locally to verify if the WR Node is programmed correctly.
\item Check the fiber link e.g. by connecting another WR Node, with a
different SFP transceiver to the same fiber.
\item If there is still no link on the new WR Node, try connecting
fiber on the Master side to another port of the WR Switch (using
different SFP transceiver).
\item If there is still no link, the fiber connection is either dirty or
broken.
\end{pck_proc}
\end{pck_descr}
\subsubsection{\bf WR PTP Core reset}
\label{fail:other:reset}
\begin{pck_descr}
\item [] \underline{Severity}: ERROR
\item [] \underline{Description}:\\
If the WRPC was reset it might either mean that there was a power cut or
some not yet known bug caused the WRPC software to crash.
\item [] \underline{SNMP objects}:\\
{\footnotesize
\snmpadd{WR-WRPC-MIB::wrpcTimeSystemUptime} }
\item [] \underline{Error condition}:\\
{\footnotesize
\texttt{wrpcTimeSystemUpdate < wrpcTimeSystemUpdate\_prev} }
\item [] \underline{Action}:
\begin{pck_proc}
\item Dump state.
\item Check if there was a power cut e.g. by checking the uptime of the
computer/front-end where the WR Node card is installed.
\item If there was no power cut or intended machine restart, make a full
state dump and report problem to WR experts.
\end{pck_proc}
\end{pck_descr}
\subsubsection{\bf WR PTP Core time reset}
\label{fail:other:time_reset}
\begin{pck_descr}
\item [] \underline{Severity}: ERROR
\item [] \underline{Description}:\\
If the WRPC internal time counters are reset, this might mean the WR
Master in the network has some problems and WRPC has followed the time
reset. If that's not the case, this might mean some not yet known bug
caused the WRPC time reset.
\item [] \underline{SNMP objects}:\\
{\footnotesize
\snmpadd{WR-WRPC-MIB::wrpcTimeTAI}\\
\snmpadd{WR-WRPC-MIB::wrpcTimeTAIString} }
\item [] \underline{Error condition}:\\
{\footnotesize
\texttt{wrpcTimeTAI == 0} }
\item [] \underline{Action}:
\begin{pck_proc}
\item Dump state.
\item Check the status of the WR Master - timing source.
\item Check in the SNMP manager software logs, if there were no
\emph{link down} errors for the WR Node or the WR Master Switch. In
that case, the SFP optical transceivers should be changed or the fiber
link should be investigated.
\end{pck_proc}
\end{pck_descr}
\subsubsection{\bf Temperature of the node too high}
\label{fail:other:temp}
\begin{pck_descr}
\item [] \underline{Severity}: WARNING
\item [] \underline{Description}:\\
If the temperature raises too high we might break our electronics. It
also means that most probably something is wrong with the node cooling.
\item [] \underline{SNMP objects}:\\
{\footnotesize
\snmpadd{WR-WRPC-MIB::wrpcTemperatureName.<n>}\\
\snmpadd{WR-WRPC-MIB::wrpcTemperatureValue.<n>} }
\item [] \underline{Error condition}:\\
{\footnotesize
\texttt{wrpcTemperatureValue.<n> > THRESHOLD} }
\item [] \underline{Action}:
\begin{pck_proc}
\item Check the cooling for the computer/front-end/rack where the WR
Node is installed.
\end{pck_proc}
\end{pck_descr}
\section{Introduction}
This document provides information about the diagnostics of the White Rabbit
PTP Core (WRPC) - an HDL module present in every White Rabbit node. It is a
complementary documentation to the official \emph{White Rabbit PTP Core User's
Manual} published with every stable release. Please refer to this user manual
for the information about the WRPC, its interfaces and building instructions for
the official reference designs.\\
White Rabbit PTP Core starting from \emph{v4.0} provides diagnostic mechanisms
in the form of SNMP objects and optional Syslog messages (depending on the build
time LM32 software configuration). The implementation of an SNMP agent in the
WRPC is very basic comparing to the diagnostics offered by the White Rabbit
Switch. Since we are very constraint on the code size running inside the WR PTP
Core, almost all of the logic to detect and report errors has to be implemented
on the SNMP Manager's side.\\
This document has many internal hyperlinks that associate SNMP objects with
related problems description and the other way round. These links can be easily
used when reading the document on a computer.
\section{List of exported SNMP objects}
This section lists all the SNMP objects exported by the WR PTP Core. The objects
provide read-only values unless stated otherwise in their description.\\
\printnoidxglossary[type=snmp_status,title=,style=objtree,sort=def]
\snmpentrys{WR-WRPC-MIB}{}{wrpcVersionGroup}{
Group containing information about the WR PTP Core firmware version.}
\snmpentrys{WR-WRPC-MIB}{wrpcVersionGroup}{wrpcVersionHwType}{
\underline{Description:}
Type of the hardware of a given WR Node.}
\snmpentrys{WR-WRPC-MIB}{wrpcVersionGroup}{wrpcVersionSwVersion}{
\underline{Description:}
Version of the LM32 software running inside the WR PTP Core. }
\snmpentrys{WR-WRPC-MIB}{wrpcVersionGroup}{wrpcVersionSwBuildBy}{
\underline{Description:}
Information who has compiled the LM32 software running inside the WR PTP
Core. }
\snmpentrys{WR-WRPC-MIB}{wrpcVersionGroup}{wrpcVersionSwBuildDate}{
\underline{Description:}
Information when the LM32 software was compiled. }
\snmpentrys{WR-WRPC-MIB}{}{wrpcTimeGroup}{
Group containing system timers information}
\snmpentrys{WR-WRPC-MIB}{wrpcTimeGroup}{wrpcTimeTAI}{
\underline{Description:}
Current TAI time of the WR Node.
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{wrpcTimeGroup}{wrpcTimeTAIString}{
\underline{Description:}
The current TAI time, printed as \%y-\%m-\%d-\%H:\%M:\%S (no time zone)
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{wrpcTimeGroup}{wrpcTimeSystemUptime}{
\underline{Description:}
System uptime in hundreds of second
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{}{wrpcTemperatureTable}{
Table of onboard thermometers measurements.}
\snmpentrys{WR-WRPC-MIB}{wrpcTemperatureTable}{wrpcTemperatureName.<n>}{
\underline{Description:}
Name of the temperature sensor \emph{n}.
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{wrpcTemperatureTable}{wrpcTemperatureValue.<n>}{
\underline{Description:}
Temperature value of the sensor \emph{n}.
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{}{wrpcSpllStatusGroup}{
Group containing White Rabbit PLLs status}
\snmpentrys{WR-WRPC-MIB}{wrpcSpllStatusGroup}{wrpcSpllMode}{
\underline{Description:}
Mode of operation of the Soft PLL inside WR PTP Core. Possible values:
\begin{packed_items_snmp_obj}
\item \texttt{grandmaster\emph{(1)}} -- Master synchronized to external reference (e.g. GPS or Cesium)
\item \texttt{master\emph{(2)}} -- Free-running Master
\item \texttt{slave\emph{(3)}}
\item \texttt{disabled\emph{(4)}}
\end{packed_items_snmp_obj}
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{wrpcSpllStatusGroup}{wrpcSpllIrqCnt}{
\underline{Description:}
Number of interrupts received by SoftPLL for DDMTD tags.}
\snmpentrys{WR-WRPC-MIB}{wrpcSpllStatusGroup}{wrpcSpllSeqState}{
\underline{Description:}
SoftPLL sequencer state. Possible values:
\begin{packed_items_snmp_obj}
\item \texttt{startExt\emph{(1)}}
\item \texttt{waitExt\emph{(2)}}
\item \texttt{startHelper\emph{(3)}}
\item \texttt{waitHelper\emph{(4)}}
\item \texttt{startMain\emph{(5)}}
\item \texttt{waitMain\emph{(6)}}
\item \texttt{disabled\emph{(7)}}
\item \texttt{ready\emph{(8)}}
\item \texttt{clearDacs\emph{(9)}}
\item \texttt{waitClearDacs\emph{(10)}}
\end{packed_items_snmp_obj}
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{wrpcSpllStatusGroup}{wrpcSpllAlignState}{
\underline{Description:}
SoftPLL aligner state. Possible values:
\begin{packed_items_snmp_obj}
\item \texttt{extOff\emph{(0)}}
\item \texttt{start\emph{(1)}}
\item \texttt{initCsync\emph{(2)}}
\item \texttt{waitCsync\emph{(3)}}
\item \texttt{waitSample\emph{(4)}}
\item \texttt{compensateDelay\emph{(5)}}
\item \texttt{locked\emph{(6)}}
\item \texttt{startAlignment\emph{(7)}}
\item \texttt{startMain\emph{(8)}}
\item \texttt{waitClkin\emph{(9)}}
\item \texttt{waitPlock\emph{(10)}}
\end{packed_items_snmp_obj}
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{wrpcSpllStatusGroup}{wrpcSpllHlock}{
\underline{Description:}
Helper PLL lock status.
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{wrpcSpllStatusGroup}{wrpcSpllMlock}{
\underline{Description:}
Main PLL lock status.
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{wrpcSpllStatusGroup}{wrpcSpllHY}{
\underline{Description:}
Helper PLL DAC value (range 0-65535).}
\snmpentrys{WR-WRPC-MIB}{wrpcSpllStatusGroup}{wrpcSpllMY}{
\underline{Description:}
Main PLL DAC value (range 0-65535).}
\snmpentrys{WR-WRPC-MIB}{wrpcSpllStatusGroup}{wrpcSpllDelCnt}{
\underline{Description:}
Delock counter - how many times either Helper of Main PLL lost lock since
the WRPC software has started.
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{}{wrpcPtpGroup}{
Group with various information about PTP state}
\snmpentrys{WR-WRPC-MIB}{wrpcPtpGroup}{wrpcPtpServoStateN}{
\underline{Description:}
Current state of WR synchronization servo running in the PTP. Possible
values:
\begin{packed_items_snmp_obj}
\item \texttt{uninitialized\emph{(0)}}
\item \texttt{syncNsec\emph{(1)}}
\item \texttt{syncSec\emph{(2)}}
\item \texttt{syncPhase\emph{(3)}}
\item \texttt{trackPhase\emph{(4)}}
\item \texttt{waitOffsetStable\emph{(5)}}
\end{packed_items_snmp_obj}
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{wrpcPtpGroup}{wrpcPtpClockOffsetPsHR}{
\underline{Description:}
Current clock offset from master in picoseconds, calculated by PTP.
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{wrpcPtpGroup}{wrpcPtpSkew}{
\underline{Description:}
The estimated change of master-to-slave delay, in picoseconds.}
\snmpentrys{WR-WRPC-MIB}{wrpcPtpGroup}{wrpcPtpRTT}{
\underline{Description:}
Round-trip-time in picoseconds calculated by PTP.
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{wrpcPtpGroup}{wrpcPtpServoUpdates}{
\underline{Description:}
Counter incremented each time the WR PTP servo calculates the offset value
from WR master and corrects the local clock.
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{wrpcPtpGroup}{wrpcPtpServoUpdateTime}{
\underline{Description:}
TAI nanoseconds when the WR PTP servo was last updated.
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{wrpcPtpGroup}{wrpcPtpDeltaTxM}{
\underline{Description:}
Fixed Tx latency of the WR master.
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{wrpcPtpGroup}{wrpcPtpDeltaRxM}{
\underline{Description:}
Fixed Rx latency of the WR master.
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{wrpcPtpGroup}{wrpcPtpDeltaTxS}{
\underline{Description:}
Fixed Tx latency of the WR slave.
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{wrpcPtpGroup}{wrpcPtpDeltaRxS}{
\underline{Description:}
Fixed Rx latency of the WR slave.
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{wrpcPtpGroup}{wrpcPtpServoStateErrCnt}{
\underline{Description:}
Number of times when WR PTP servo has lost the synchronization, i.e. went
ouf from the TRACK\_PHASE state.
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{wrpcPtpGroup}{wrpcPtpClockOffsetErrCnt}{
\underline{Description:}
Number of times when calculated offset to the Master was larger than
+/-500ps.
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{wrpcPtpGroup}{wrpcPtpRTTErrCnt}{
\underline{Description:}
Number of times when the jump was detected in the calculated round-trip-time
value. The jump is detected when rtt changes by more than 1ns comparing to the
previously calculated value.
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{wrpcPtpGroup}{wrpcPtpAsymmetry}{
\underline{Description:}
Link asymmetry calculated by PTP.}
\snmpentrys{WR-WRPC-MIB}{wrpcPtpGroup}{wrpcPtpTx}{
\underline{Description:}
Number of transmitted PTP frames.
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{wrpcPtpGroup}{wrpcPtpRx}{
\underline{Description:}
Number of received PTP frames.
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{wrpcPtpGroup}{wrpcPtpAlpha}{
\underline{Description:}
Alpha value (fiber asymmetry coefficient) used for WR to estimate the
one-way link delay.
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{}{wrpcPtpConfigGroup}{
The groups contains objects for configuring remotely the SFP database with
calibration parameters}
\snmpentrys{WR-WRPC-MIB}{wrpcPtpConfigGroup}{wrpcPtpConfigRestart}{
\underline{Description:}
Read-write object to trigger the PTP restart to use the new settings.
Possible values:
\begin{packed_items_snmp_obj}
\item write: \texttt{restartPtp\emph{(1)}} -- triggers PTP restart
\item read: \texttt{restartPtpSuccessful\emph{(100)}} -- PTP restart triggered successfully
\item read: \texttt{restartPtpFailed\emph{(200)}} -- failed to trigger PTP restart
\end{packed_items_snmp_obj}
}
\snmpentrys{WR-WRPC-MIB}{wrpcPtpConfigGroup}{wrpcPtpConfigApply}{
\underline{Description:}
Read-write object to validate and apply SFP settings. Possible values:
\begin{packed_items_snmp_obj}
\item write: \texttt{writeToFlashGivenSfp\emph{(1)}} -- write provided
\texttt{\glshyperlink{WR-WRPC-MIB::wrpcPtpConfigDeltaTx}},
\texttt{\glshyperlink{WR-WRPC-MIB::wrpcPtpConfigDeltaRx}},
\texttt{\glshyperlink{WR-WRPC-MIB::wrpcPtpConfigAlpha}} values to the SFP
database stored in the Flash for the SFP product number provided in
\texttt{\glshyperlink{WR-WRPC-MIB::wrpcPtpConfigSfpPn}}. The new values are
automatically loaded to the memory (\emph{sfp match} command is executed).
\item write: \texttt{writeToFlashCurrentSfp\emph{(2)}} -- write provided
\texttt{\glshyperlink{WR-WRPC-MIB::wrpcPtpConfigDeltaTx}},
\texttt{\glshyperlink{WR-WRPC-MIB::wrpcPtpConfigDeltaRx}},
\texttt{\glshyperlink{WR-WRPC-MIB::wrpcPtpConfigAlpha}} values to the SFP
database stored in the Flash for the SFP that is currently used. The new
values are automatically loaded to the memory (\emph{sfp match} command is
executed).
\item w: \texttt{writeToMemoryCurrentSfp\emph{(3)}} -- write provided
\texttt{\glshyperlink{WR-WRPC-MIB::wrpcPtpConfigDeltaTx}},
\texttt{\glshyperlink{WR-WRPC-MIB::wrpcPtpConfigDeltaRx}},
\texttt{\glshyperlink{WR-WRPC-MIB::wrpcPtpConfigAlpha}} values only to the
memory. The SFP database in the Flash is not modified.
\item write: \texttt{eraseFlash\emph{(50)}} -- erase SFP database stored in the Flash
\item read: \texttt{applySuccessful\emph{(100)}} -- required configuration applied successfully
\item read: \texttt{applySuccessfulMatchFailed\emph{(101)}} -- required values written to the database but
could not be matched with the currently used SFP
\item read: \texttt{applyFailed\emph{(200)}} -- failed to apply configuration
\item read: \texttt{applyFailedI2CError\emph{(201)}} -- failed to apply, communication error with the
flash memory
\item read: \texttt{applyFailedDBFull\emph{(202)}} -- failed to apply, SFP database is full
\item read: \texttt{applyFailedInvalidPN\emph{(203)}} -- failed to apply, invalid SFP product number
\end{packed_items_snmp_obj}
}
\snmpentrys{WR-WRPC-MIB}{wrpcPtpConfigGroup}{wrpcPtpConfigSfpPn}{
\underline{Description:}
Read-write object. SFP product number identifying which entry in the Flash
SFP database to
update. }
\snmpentrys{WR-WRPC-MIB}{wrpcPtpConfigGroup}{wrpcPtpConfigDeltaTx}{
\underline{Description:}
Read-write object. Fixed Tx delay value to be written, in picoseconds. }
\snmpentrys{WR-WRPC-MIB}{wrpcPtpConfigGroup}{wrpcPtpConfigDeltaRx}{
\underline{Description:}
Read-write object. Fixed Rx delay value to be written, in picoseconds. }
\snmpentrys{WR-WRPC-MIB}{wrpcPtpConfigGroup}{wrpcPtpConfigAlpha}{
\underline{Description:}
Read-write object. Alpha fiber asymmetry parameter to be written. }
\snmpentrys{WR-WRPC-MIB}{}{wrpcPortGroup}{
Group containing various information about the WR Ethernet port.}
\snmpentrys{WR-WRPC-MIB}{wrpcPortGroup}{wrpcPortLinkStatus}{
\underline{Description:}
Status of the link. Possible values:\\
\texttt{down\emph{(1)}} -- link is down\\
\texttt{up\emph{(2)}} -- link is up}
\snmpentrys{WR-WRPC-MIB}{wrpcPortGroup}{wrpcPortSfpPn}{
\underline{Description:}
Product number of the SFP currently plugged into the WR port.
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{wrpcPortGroup}{wrpcPortSfpInDB}{
\underline{Description:}
Information whether the currently plugged SFP was matched with the
calibration values stored in the database.
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{wrpcPortGroup}{wrpcPortInternalTx}{
\underline{Description:}
Total number of Ethernet frames transmitted from LM32 processor.
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{wrpcPortGroup}{wrpcPortInternalRx}{
\underline{Description:}
Total number of Ethernet frames received by LM32 processor.
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{}{wrpcSfpTable}{
Table of the calibration values stored in the SFP database.}
\snmpentrys{WR-WRPC-MIB}{wrpcSfpTable}{wrpcSfpPn.<n>}{
\underline{Description:}
Product number for the SFP \emph{n} in the database.}
\snmpentrys{WR-WRPC-MIB}{wrpcSfpTable}{wrpcSfpDeltaTx.<n>}{
\underline{Description:}
Fixed Tx delay for the SFP \emph{n} in the database.
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{wrpcSfpTable}{wrpcSfpDeltaRx.<n>}{
\underline{Description:}
Fixed Rx delay for the SFP \emph{n} in the database.
\glspar \underline{Related problems:}}
\snmpentrys{WR-WRPC-MIB}{wrpcSfpTable}{wrpcSfpAlpha.<n>}{
\underline{Description:}
Alpha fiber asymmetry coefficient for the SFP \emph{n} in the database.}
\def\us{\char`\_}
\documentclass[a4paper, 12pt]{article}
%\documentclass{article}
\usepackage{fullpage}
\usepackage{pgf}
\usepackage{tikz}
\usetikzlibrary{arrows,automata,shapes}
\usepackage{multirow}
\usepackage{color}
\usepackage[latin1]{inputenc}
\usepackage{verbatim}
\usepackage{amsmath}
\usepackage{textcomp}
\usepackage{times,mathptmx}
\usepackage{chngcntr}
\usepackage{hyperref}
\usepackage{enumitem}
\usepackage{scrextend}
%\usepackage[table]{xcolor}
\usepackage{listings}
\definecolor{light-gray}{gray}{0.95}
%\usepackage[firstpage]{draftwatermark}
% for glossary
% nopostdot - no dot at the end of index entires
\usepackage[nogroupskip,nopostdot,counter=subsubsection]{glossaries}
\renewcommand{\glossarysection}[2][]{}
\usepackage{listings}
\usepackage{cancel}
\graphicspath{ {../../../../figures/} }
\newenvironment{packed_enum}{
\begin{enumerate}[leftmargin=0pt,topsep=-12pt]
\setlength{\itemsep}{1pt}
\setlength{\parskip}{0pt}
\setlength{\parsep}{0pt}
}{\end{enumerate}}
\newenvironment{packed_items}{
\begin{itemize}[topsep=-12pt]
\setlength{\itemsep}{1pt}
\setlength{\parskip}{0pt}
\setlength{\parsep}{0pt}
}{\end{itemize}}
% \begin{itemize}[leftmargin=50pt] %,topsep=-12pt]
\newenvironment{packed_items_snmp_obj}{
\begin{itemize}[leftmargin=50pt]
\setlength{\itemsep}{1pt}
\setlength{\parskip}{0pt}
\setlength{\parsep}{0pt}
\renewcommand\labelitemi{--}
}{\end{itemize}}
\newenvironment{pck_descr}{
\begin{itemize}[leftmargin=0pt,topsep=-12pt]
\setlength{\itemsep}{1pt}
\setlength{\parskip}{0pt}
\setlength{\parsep}{0pt}
}{\end{itemize}}
\newenvironment{pck_proc}{
\begin{enumerate}[leftmargin=15pt,topsep=-12pt]
\setlength{\itemsep}{1pt}
\setlength{\parskip}{0pt}
\setlength{\parsep}{0pt}
}{\end{enumerate}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% creating subsubsubsection notation
% src: http://www.latex-community.org/forum/viewtopic.php?f=5&t=791
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\setcounter{secnumdepth}{6}
\renewcommand\theparagraph{\Alph{paragraph}}
\makeatletter
\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{0.0001pt \@plus .2ex}%
{\normalfont\normalsize\bfseries}}
\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{0.0001pt \@plus .2ex}%
{\normalfont\normalsize\bfseries}}
\counterwithin{paragraph}{subsubsection}
\counterwithin{subparagraph}{paragraph}
\makeatother
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\eqoffset}[1]{%
{\ensuremath{%
{\text{offset}}_{#1}}%
}%
}
\newcommand{\eqdelay}[1]{{\text{delay}}_{#1}}
\newcommand{\eqasymm}{{\text{asymmetry}}}
% for glossary, set way of sorting entries
\makenoidxglossaries
% don't bold entries, texttt them
\renewcommand*{\glsnamefont}[1]{\texttt{\textmd{#1}}}
\newglossary*{snmp_status}{SNMP's status objects}
\newglossary*{snmp_expert}{SNMP's expert objects}
\newglossary*{snmp_other}{Objects from other MIBs}
% alphabetical list of all entries
\newglossary*{snmp_all}{All SNMP objects}
\defglsentryfmt[snmp_status]{\texttt{\glsentryfmt}}
\defglsentryfmt[snmp_expert]{\texttt{\glsentryfmt}}
\defglsentryfmt[snmp_other]{\texttt{\glsentryfmt}}
% macro to add entires
\newcommand{\snmpadd}[1]{
\glspl{#1}\glsadd{x#1}%
}
% helpers to add glossary entries
% add newline to non empty strings. For descriptions.
\newcommand{\descr}[1]{
\ifx&#1&%
%
\else% put fixed space
\\#1
\fi
}
% {MIB}{parent}{object}{comment}{glossary_name}
\newcommand{\snmpentry}[5]{%
\ifx&#2&% if parameter 2 is empty don't add parent
\newglossaryentry{#1::#3}{%
type=#5,%
name={#3},%
plural={#1::#3},% used to display name not plural
user1={#1},% MIB
description={\descr{#4}}%
}%
\else
\newglossaryentry{#1::#3}{%
type=#5,%
name={#3},%
description={\descr{#4}},%
plural={#1::#3},% used to display name not plural
user1={#1},% MIB
parent={#1::#2}%
}%
\fi
% add entry to alphabetical list
\newglossaryentry{x#1::#3}{%
type=snmp_all,%
name={#1::#3},%
description={}
}%
}
% {MIB}{parent}{object}{comment}
\newcommand{\snmpentrye}[4]{%
\snmpentry{#1}{#2}{#3}{#4}{snmp_expert}
}
% {MIB}{parent}{object}{comment}
\newcommand{\snmpentrys}[4]{%
\snmpentry{#1}{#2}{#3}{#4}{snmp_status}
}
% command to add snmp objects from other MIBs
% {MIB}{parent}{object}{comment}
\newcommand{\snmpentryo}[4]{%
\snmpentry{#1}{#2}{#3}{#4}{snmp_other}
}
% extra indent for lists
\newlength{\paraaindent}
% indent for new paragraphs
\newlength{\snmpentryindent}
% load glossary definitions from snmp_objects.tex
\loadglsentries{snmp_objects}
% use \kern 0.33em instead of \space to have fixed width space
\newglossarystyle{objtree}{%
\renewenvironment{theglossary}%
{\setlength{\parindent}{0pt}%
\setlength{\parskip}{0pt plus 0.3pt}}%
{}%
\renewcommand*{\glossaryheader}{}%
\renewcommand*{\glsgroupheading}[1]{}%
\renewcommand{\glossentry}[2]{%
\hangindent30pt\relax
% save indent for other paragraphs
\setlength{\snmpentryindent}{\hangindent}
\parindent0pt\relax
% set indent for lists entries
\setlength{\paraaindent}{\hangindent}
\addtolength{\paraaindent}{14pt}
\setlist[enumerate]{leftmargin=\paraaindent}
$\bullet$\kern 0.33em\glsentryitem{##1}\glstreenamefmt{\glstarget{##1}{\texttt{\textmd{\glsentryuseri{##1}}::}\glossentryname{##1}}}%
\ifglshassymbol{##1}{\kern 0.33em(\glossentrysymbol{##1})}{}%
\glossentrydesc{##1}\glspostdescription\kern 0.33em##2\par\vspace{12pt}
}%
\renewcommand{\subglossentry}[3]{%
\hangindent##1\glstreeindent\relax
\addtolength{\hangindent}{30pt}
% save indent for other paragraphs
\setlength{\snmpentryindent}{\hangindent}
\parindent##1\glstreeindent\relax
% set indent for lists entries
\setlength{\paraaindent}{\hangindent}
\addtolength{\paraaindent}{14pt}
\setlist[enumerate]{leftmargin=\paraaindent}
\ifnum##1=1\relax
$\circ$%
\fi
\ifnum##1=2\relax
$\ast$%
\fi
\kern 0.33em%
\ifnum##1=1\relax
\glssubentryitem{##2}%
\fi
\glstreenamefmt{\glstarget{##2}{\glossentryname{##2}}}%
\ifglshassymbol{##2}{\kern 0.33em(\glossentrysymbol{##2})}{}%
\glossentrydesc{##2}\glspostdescription\kern 0.33em##3\par\vspace{12pt}
}%
%redefine \glspar to support indentation in many paragraphs
\renewcommand{\glspar}{%
\par
\parindent\snmpentryindent % restore first line in paragraph indent
\hangindent\snmpentryindent % restore other lines in paragraph indent
}%
}
\newcommand{\ignore}[1]{}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\setcounter{tocdepth}{2}
\input{revinfo.tex}
\title{White Rabbit PTP Core: Failures and Diagnostics}
\author{Grzegorz Daniluk\\[.5cm] CERN BE-CO-HT\\ \small{\gitrevinfo}}
\maketitle
\thispagestyle{empty}
\begin{figure}[ht!]
\centering
\vspace{1.3cm}
\includegraphics[width=0.50\textwidth]{img/WRlogo.pdf}
\end{figure}
\newpage
\newpage
\newpage
\tableofcontents
\newpage
\input{intro.tex}
\newpage
\section{Possible Errors}
\label{sec:failures}
\input{fail.tex}
\newpage
\input{snmp_exports.tex}
% add not used entries, but don't display their's section
% based on:
% http://tex.stackexchange.com/questions/115635/glossaries-suppress-pages-when-using-glsaddall
\forallglsentries{\thislabel}%
{%
\ifglsused{\thislabel}{}{\glsadd[format=ignore]{\thislabel}}%
}
\end{document}
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