blob: 20a5e1247775abf14252c1c64a73d50f7e0108c5 [file] [log] [blame]
/**@page mypage3 Environment setup and usage
* @section mysection3_1 Packet logger variants
*
* The following table shows the different packet logger variants available for debugging.
*
* The QHS710 command column indicates the command to be run on the embedded device under test
* to enable the feature.
*
* <TABLE>
* <TR> <TH>Name</TH><TH>Description</TH><TH>QHS710 command (brief)</TH></TR>
* <TR> <TD>Netdebug</TD><TD>The 'traditional' pktlogger. This packetlogger outputs statistics from
* the various different subsystems. The embedded DUT command also enables iwevent network debugging.
* </TD><TD><c>netdebug <on|off></c></TD></TR>
* <TR> <TD>sysmsgdebug</TD> <TD>Log messages captured by ssylogd.</TD>
* <TD><c>sysmsgdebug <on|off></c></TD></TR>
* <TR> <TD>Ratedebug</TD><TD>Specific rate retry debugging. This packetlogger outputs detailed
* rate adaptation information.</TD><TD><c>ratedebug <on|off></c></TD></TR>
* <TR> <TD>Memdebug</TD><TD>Specific memory block debugging. This packetlogger outputs detailed
* memory dump information.</TD><TD><c>memdebug <on|off></c></TD></TR>
* <TR> <TD>Radardebug</TD><TD>Specific radar memory debugging. This packetlogger outputs detailed
* radar memory dump information.</TD><TD><c>radardebug <on|off></c></TD></TR>
* </TABLE>
*
* The default interface for sending debug packet is eth1_0 on Video Bridge devices,
* and pcie0 on PCIe EP boards. Debug packets can be sent via wireless interface
* by using the following command.
*
* <c>qdrvcmd pktlogger 0 set interface wifi0</c>
*
* Debug packets are sent by default as broadcast IPv4 UDP packets. This command shows the current
* configuration parameters.
*
* <c>qdrvcmd pktlogger 0 show</c>
*
* The following snapshot shows other default configuration.
* \image latex pktlogger_dut_default_setting.png "Example of default configuration from a DUT" width=\textwidth
*
* Use the following command to display all of the pktlogger configuration parameters.
*
* <c>qdrvcmd pktlogger 0 help</c>
*
* \note
* At beginning of debug, it is advisable to make sure DUT can reach host PC by
* running a ping test from DUT to host PC.
*
* @section mysection3_2 Host side setup
*
* As noted in the diagram in the figure \ref image-of-top "Pktlogger high level setup", the packet logger is a distributed debugging
* facility which runs on both the embedded platform, and on a host platform connected to the same
* subnet.
*
* The host side application is written in Perl.
*
* @subsection mysection3_2_1 Microsoft Windows installation
*
* Download and install Perl from:
*
* \li http://www.activestate.com/activeperl/downloads
*
* Install the following packages by using the Package Manger: Start->Programs->ActivePerl->Perl Package Manager
* \li Config-General
*
* @subsection mysection3_2_2 Linux installation
*
* Install the following Perl packages:
*
* \li <c>Config::General</c>
*
* @subsubsection mysection3_2_2_1 Fedora Core instructions
*
* The following specific commands can be run on a Fedora Core system to install the required packages:
*
* <c>yum install perl-Config-General</c>
*
* @subsubsection mysection3_2_2_2 Ubuntu 10.10 instructions
*
* The following specific commands can be run on an Ubuntu system to install the required packages.
* In this case, the version is 10.10, but other versions should work in a similar way.
*
* <c>apt-get install libconfig-general-perl</c>
*
* @section mysection3_3 Generating the host tool tarball
*
* The host tool tarball will be distributed on an as-needs basis to customers.
*
* Build the Packet logger by doing make stat_parser in the swdepot/host directory. This copies the
* headers.txt file to the packet logger directory. Obtain the Packet Logger (including headers subdirectory)
* from the swdepot/host/pktlogger directory in the source tree that was used to build the image that is
* running netdebug. Copy the entire directory structure onto the monitoring system.
*
* Failure to use the correct header version (and checksum) will result in an error. You can force it continue
* even in the case of a mismatch with --force, but chances are something will be broken.
*
* @subsection mysection3_3_1 Host tool tarball contents
*
* The following list is a description of the files in the host tarball.
*
* \li <c>headers.txt</c> - system generated file containing all the structure headers.
* \li <c>iwevent.conf</c> - configuration file to capture iwevent logs from the network.
* \li <c>mem.conf</c> - configuration file to capture memory dump events from the network.
* \li <c>mem_track.py</c> - helper tool to parse memory dumps.
* \li <c>pktlogger-parser.conf</c> - configuration tool for the packet logger parser helper script.
* \li <c>pktlogger-parser.pl</c> - packet logger parser helper tool.
* \li <c>plot_all.py</c> - helper tool to plot statistics in real time.
* \li <c>post_analysis_tools.mk</c> - makefile to generate post-processing required for pktlogger-parser.
* \li <c>post_analysis_tools.tar</c> - tarball of generated code for post-processing.
* \li <c>pp-scan.pl</c> - perl script to scan for changed test results.
* \li <c>qdrv_netdebug_checksum.h</c> - checksum file to ensure the tool is receiving the correct debug
* packets.
* \li <c>qdrv_p4build.h</c> - version header.
* \li <c>radar.conf</c> - configuration file to capture radar memory events from the network.
* \li <c>rate.conf</c> - configuration file to capture rate adaptation events from the network.
* \li <c>stat_parser.pl</c> - main packet logger host tool.
* \li <c>stats.conf</c> - configuration file to capture statistics from the network.
* \li <c>sysmsgdebug.conf</c> - configuration to capture syslog messages from the network.
* \li <c>txbf.conf</c> - configuration to capture beamforming data from the network.
*
* @section mysection3_4 Running the host side tool
*
* The general format of the host side tool arguments is as follows:
*
* \verbatim
stat_parser.pl [--conf <conf1>[,<conf2>[,<conf3>]] [--conf <conf4>]]
[--save] [--port <port number>] [--infile <filename>]
[--log <logFilePrefix>]
[--console] [--conf2 <configFileName> ...]
[--force] [--debug ] [--verbosity <0-10>]
\endverbatim
*
* @param conf a set of comma delimited configuration files to use with the tool.
* @param save Save debug packet to a binary file instead of parsing in real-time.
* @param port UDP port number for receiving debug packets. The default is 6602.
* @param infile Parse packets from a file instead of from a network device.
* @param log prefix of the directory to store the log files in.
* @param console
* @param force
* @param debug
* @param verbosity
*
* @section mysection3_5 Configuration files
*
* The different configuration files are enabled using the --conf argument to the host side tool.
*
* The following default configuration files are defined:
*
* <TABLE>
* <TR> <TH>Config name</TH><TH>Description</TH></TR>
* <TR> <TD>stats.conf</TD><TD>The 'traditional' pktlogger.</TD></TR>
* <TR> <TD>rate.conf</TD><TD>Specific rate retry debugging.</TD></TR>
* <TR> <TD>mem.conf</TD><TD>Specific memory block debugging.</TD></TR>
* <TR> <TD>radar.conf</TD><TD>Specific radar memory debugging.</TD></TR>
* <TR> <TD>txbf.conf</TD><TD>Specific beamforming debugging.</TD></TR>
* <TR> <TD>iwevent.conf</TD><TD>Specific iwevent debugging.</TD></TR>
* <TR> <TD>sysmsgdebug.conf</TD><TD>Specific syslog debugging.</TD></TR>
* </TABLE>
*
* These files generally can be used with no alterations. The following variables can be modified in
* the file to customise individual setups.
*
* <TABLE>
* <TR> <TH>Variable</TH><TH>Description</TH><TH>Valid values</TH></TR>
* <TR> <TD>log_dir</TD><TD>The directory to store the log files. If it doesn't exist, the directory
* will be automatically created.</TD><TD>Any valid directory name.</TD></TR>
* <TR> <TD>log_file</TD><TD>An informative prefix for all the log file names</TD><TD>Any ASCII
* string.</TD></TR>
* <TR> <TD>create_raw_log</TD><TD>Whether to generate the unparsed raw log file.</TD><TD><c>0, 1</c></TD></TR>
* <TR> <TD>recs_per_file</TD><TD>The number of records to put in a single file.</TD><TD><c>1-65535</c></TD></TR>
* </TABLE>
*
* Pktlogger can be run in a single phase or in two phases.
*
* When run in a single phase, debug packets are captured and saved directly into
* various text files (depending on config types).
*
* When run in two phases, all debug packets are captured and saved into a single 'raw'
* binary file. After the capture is complete, the same script is invoked with different
* parameters to parse the binary file and generate the text file.
*
* Some of the generated text files are in readable text format, and others are in
* CSV (comma separated values) format, which can be viewed and processed in a
* spreadsheet program.
*
* @section mysection3_6 Example usage
*
* <b>Example 1: Usage on a Windows machine.</b>
*
* The host side command is:
*
* \verbatim
stat_parser.pl --save
\endverbatim
*
* In parallel, on the embedded platform, enable the packet logger function:
*
* \verbatim
netdebug on
\endverbatim
*
* After debug packet capture is complete, the following command can be used to parse the packets saved in file.
* \verbatim
stat_parser.pl --conf <stats,iwevent,mem,.etc> --infile <path to the packet file>
\endverbatim
*
* The following screenshots show the result of running these commands on the host and DUT.
*
* \anchor pktlogger-host-screenshot
* \image latex pktlogger_host_1.png "Example usage of pktlogger (host side)" width=\textwidth
*
* \anchor pktlogger_dut_screenshot1
* \image latex pktlogger_dut_1.png "Example usage of pktlogger (DUT side)" width=\textwidth
*
* After stopping capture of the debug packets, the file that contains all data can
* be found under the 'LOGS' directory.
* \anchor pktlogger_host_screenshot2
* \image latex pktlogger_host_2.png "Example usage of pktlogger (host side)" width=\textwidth
*
* Parse debug packets from file.
* \anchor pktlogger_host_screenshot3
* \image latex pktlogger_host_3.png "Example usage of pktlogger (Phase2 host side)" width=\textwidth
*
* \note In phase 2, to process packets from a file,
* if there is a mismatched version (the host tools package is not from the same
* build version as the embedded image), a message like the following will be displayed:<BR>
* \verbatim
Receiving statistics from 00:26:86:01:37:3d
ERROR: logger checksum (a6efa7d) does not match sender checksum (bb5a307c)
\endverbatim<BR>
* To correct this condition, use a host tools package with the same build version as
* the embeded image.
*
* In addition to post-capture parsing, pktlogger can capture and parse live streams
* as per the following example.
* In this case, parameters <c>--save</c> and <c>--infile</c> are not used.
* Example:
* \image latex pktlogger_host_old.png "Example usage of pktlogger (host side)" width=\textwidth
*/