xref: /openwifi/doc/app_notes/driver_stat.md (revision 17cfeb0bf7dd911e01a15d6f16132920824e9594)
1*17cfeb0bSXianjun JiaoComprehensive statistics are offered at the driver level via the [Linux sysfs](https://en.wikipedia.org/wiki/Sysfs#:~:text=sysfs%20is%20a%20pseudo%20file,user%20space%20through%20virtual%20files.).
2*17cfeb0bSXianjun Jiao
3*17cfeb0bSXianjun Jiao[[Quick start](#Quick-start)]
4*17cfeb0bSXianjun Jiao[[Sysfs explanation](#Sysfs-explanation)]
5*17cfeb0bSXianjun Jiao[[Statistics variable file meaning](#Statistics-variable-file-meaning)]
6*17cfeb0bSXianjun Jiao
7*17cfeb0bSXianjun JiaoAll operations should be done on board in openwifi directory, not in host PC.
8*17cfeb0bSXianjun Jiao
9*17cfeb0bSXianjun Jiao## Quick start
10*17cfeb0bSXianjun Jiao
11*17cfeb0bSXianjun JiaoEnable the driver level statistics (after openwifi up and running)
12*17cfeb0bSXianjun Jiao```
13*17cfeb0bSXianjun Jiao./stat_enable.sh
14*17cfeb0bSXianjun Jiao```
15*17cfeb0bSXianjun JiaoShow the statistics
16*17cfeb0bSXianjun Jiao```
17*17cfeb0bSXianjun Jiao./tx_stat_show.sh
18*17cfeb0bSXianjun Jiao./tx_prio_queue_show.sh
19*17cfeb0bSXianjun Jiao./rx_stat_show.sh
20*17cfeb0bSXianjun Jiao./rx_gain_show.sh
21*17cfeb0bSXianjun Jiao```
22*17cfeb0bSXianjun JiaoClear the stattistics
23*17cfeb0bSXianjun Jiao```
24*17cfeb0bSXianjun Jiao./tx_stat_show.sh clear
25*17cfeb0bSXianjun Jiao./tx_prio_queue_show.sh clear
26*17cfeb0bSXianjun Jiao./rx_stat_show.sh clear
27*17cfeb0bSXianjun Jiao```
28*17cfeb0bSXianjun JiaoTo only show the statistics for the link with a specific peer node
29*17cfeb0bSXianjun Jiao```
30*17cfeb0bSXianjun Jiao./set_rx_target_sender_mac_addr.sh c83caf93
31*17cfeb0bSXianjun Jiao(If the peer node MAC address is 00:80:c8:3c:af:93)
32*17cfeb0bSXianjun Jiao```
33*17cfeb0bSXianjun JiaoTo show the statistics of all (not filtered by the peer node MAC address)
34*17cfeb0bSXianjun Jiao```
35*17cfeb0bSXianjun Jiao./set_rx_target_sender_mac_addr.sh 0
36*17cfeb0bSXianjun Jiao```
37*17cfeb0bSXianjun JiaoTo show the peer node MAC address for statistics
38*17cfeb0bSXianjun Jiao```
39*17cfeb0bSXianjun Jiao./set_rx_target_sender_mac_addr.sh
40*17cfeb0bSXianjun Jiao```
41*17cfeb0bSXianjun JiaoTo see the statistics of ACK packet, run this before above scripts
42*17cfeb0bSXianjun Jiao```
43*17cfeb0bSXianjun Jiao./set_rx_monitor_all.sh
44*17cfeb0bSXianjun Jiao```
45*17cfeb0bSXianjun JiaoDisable the statistics of ACK packet, run this before above scripts
46*17cfeb0bSXianjun Jiao```
47*17cfeb0bSXianjun Jiao./set_rx_monitor_all.sh 0
48*17cfeb0bSXianjun Jiao```
49*17cfeb0bSXianjun JiaoDisable the driver level statistics (after openwifi up and running)
50*17cfeb0bSXianjun Jiao```
51*17cfeb0bSXianjun Jiao./stat_enable.sh 0
52*17cfeb0bSXianjun Jiao```
53*17cfeb0bSXianjun Jiao
54*17cfeb0bSXianjun Jiao## Sysfs explanation
55*17cfeb0bSXianjun Jiao
56*17cfeb0bSXianjun JiaoFor user, as you can check in those scripts above, the sysfs is a set of files that can be operated in the command line for communicating with kernel module. You can find these files on zcu102 board at
57*17cfeb0bSXianjun Jiao```
58*17cfeb0bSXianjun Jiao/sys/devices/platform/fpga-axi@0/fpga-axi@0:sdr
59*17cfeb0bSXianjun Jiao```
60*17cfeb0bSXianjun JiaoOn othe boards at
61*17cfeb0bSXianjun Jiao```
62*17cfeb0bSXianjun Jiao/sys/devices/soc0/fpga-axi@0/fpga-axi@0:sdr
63*17cfeb0bSXianjun Jiao```
64*17cfeb0bSXianjun Jiao
65*17cfeb0bSXianjun Jiao## Statistics variable file meaning
66*17cfeb0bSXianjun Jiao
67*17cfeb0bSXianjun JiaoThese statistics names are the same as the file names (in those scripts) and variable names in the sdr.c. Do search these names in sdr.c to understand exact meaning of these statistics.
68*17cfeb0bSXianjun Jiao
69*17cfeb0bSXianjun Jiao- tx_stat_show.sh
70*17cfeb0bSXianjun Jiao
71*17cfeb0bSXianjun Jiao  name|meaning
72*17cfeb0bSXianjun Jiao  ------------|----------------------
73*17cfeb0bSXianjun Jiao  tx_data_pkt_need_ack_num_total     | number of tx data packet reported in openwifi_tx_interrupt() (both fail and succeed)
74*17cfeb0bSXianjun Jiao  tx_data_pkt_need_ack_num_total_fail| number of tx data packet reported in openwifi_tx_interrupt() (fail -- no ACK received)
75*17cfeb0bSXianjun Jiao  tx_data_pkt_need_ack_num_retx      | number of tx data packet reported in openwifi_tx_interrupt() at different number of retransmission (both fail and succeed)
76*17cfeb0bSXianjun Jiao  tx_data_pkt_need_ack_num_retx_fail | number of tx data packet reported in openwifi_tx_interrupt() at different number of retransmission (fail -- no ACK received)
77*17cfeb0bSXianjun Jiao  tx_data_pkt_mcs_realtime           | MCS (10*Mbps) of tx data packet reported in openwifi_tx_interrupt() (both fail and succeed)
78*17cfeb0bSXianjun Jiao  tx_data_pkt_fail_mcs_realtime      | MCS (10*Mbps) of tx data packet reported in openwifi_tx_interrupt() (fail -- no ACK received)
79*17cfeb0bSXianjun Jiao  tx_mgmt_pkt_need_ack_num_total     | number of tx management packet reported in openwifi_tx_interrupt() (both fail and succeed)
80*17cfeb0bSXianjun Jiao  tx_mgmt_pkt_need_ack_num_total_fail| number of tx management packet reported in openwifi_tx_interrupt() (fail -- no ACK received)
81*17cfeb0bSXianjun Jiao  tx_mgmt_pkt_need_ack_num_retx      | number of tx management packet reported in openwifi_tx_interrupt() at different number of retransmission (both fail and succeed)
82*17cfeb0bSXianjun Jiao  tx_mgmt_pkt_need_ack_num_retx_fail | number of tx management packet reported in openwifi_tx_interrupt() at different number of retransmission (fail -- no ACK received)
83*17cfeb0bSXianjun Jiao  tx_mgmt_pkt_mcs_realtime           | MCS (10*Mbps) of tx management packet reported in openwifi_tx_interrupt() (both fail and succeed)
84*17cfeb0bSXianjun Jiao  tx_mgmt_pkt_fail_mcs_realtime      | MCS (10*Mbps) of tx management packet reported in openwifi_tx_interrupt() (fail -- no ACK received)
85*17cfeb0bSXianjun Jiao
86*17cfeb0bSXianjun Jiao- tx_prio_queue_show.sh
87*17cfeb0bSXianjun Jiao
88*17cfeb0bSXianjun Jiao  tx_prio_queue_show.sh will show 4 rows. Each row is corresponding one Linux-prio and one FPGA queue. Each row has 12 elements. Elements' name will not be displayed in the command line.
89*17cfeb0bSXianjun Jiao
90*17cfeb0bSXianjun Jiao  Element name|meaning
91*17cfeb0bSXianjun Jiao  ------------|----------------------
92*17cfeb0bSXianjun Jiao  tx_prio_num            | number of tx packet from Linux prio N to openwifi_tx()
93*17cfeb0bSXianjun Jiao  tx_prio_interrupt_num  | number of tx packet from Linux prio N recorded in openwifi_tx_interrupt()
94*17cfeb0bSXianjun Jiao  tx_prio_stop0_fake_num | number of Linux prio N stopped attempt in the 1st place of openwfii_tx(), fake alarm
95*17cfeb0bSXianjun Jiao  tx_prio_stop0_real_num | number of Linux prio N stopped attempt in the 1st place of openwfii_tx(), real stop
96*17cfeb0bSXianjun Jiao  tx_prio_stop1_num      | number of Linux prio N stopped in the 2nd place of openwfii_tx()
97*17cfeb0bSXianjun Jiao  tx_prio_wakeup_num     | number of Linux prio N waked up in openwifi_tx_interrupt()
98*17cfeb0bSXianjun Jiao  tx_queue_num           | number of tx packet for FPGA queue N to openwifi_tx()
99*17cfeb0bSXianjun Jiao  tx_queue_interrupt_num | number of tx packet for FPGA queue N recorded in openwifi_tx_interrupt()
100*17cfeb0bSXianjun Jiao  tx_queue_stop0_fake_num| number of FPGA queue N stopped attempt in the 1st place of openwfii_tx(), fake alarm
101*17cfeb0bSXianjun Jiao  tx_queue_stop0_real_num| number of FPGA queue N stopped attempt in the 1st place of openwfii_tx(), real stop
102*17cfeb0bSXianjun Jiao  tx_queue_stop1_num     | number of FPGA queue N stopped in the 2nd place of openwfii_tx()
103*17cfeb0bSXianjun Jiao  tx_queue_wakeup_num    | number of FPGA queue N waked up in openwifi_tx_interrupt()
104*17cfeb0bSXianjun Jiao
105*17cfeb0bSXianjun Jiao- rx_stat_show.sh
106*17cfeb0bSXianjun Jiao
107*17cfeb0bSXianjun Jiao  name|meaning
108*17cfeb0bSXianjun Jiao  ------------|----------------------
109*17cfeb0bSXianjun Jiao  rx_data_pkt_num_total               | number of rx data packet with both FCS ok and failed
110*17cfeb0bSXianjun Jiao  rx_data_pkt_num_fail                | number of rx data packet with FCS failed
111*17cfeb0bSXianjun Jiao  rx_mgmt_pkt_num_total               | number of rx management packet with both FCS ok and failed
112*17cfeb0bSXianjun Jiao  rx_mgmt_pkt_num_fail                | number of rx management packet with FCS failed
113*17cfeb0bSXianjun Jiao  rx_ack_pkt_num_total                | number of rx ACK packet with both FCS ok and failed
114*17cfeb0bSXianjun Jiao  rx_ack_pkt_num_fail                 | number of rx ACK packet with FCS failed
115*17cfeb0bSXianjun Jiao  rx_data_pkt_mcs_realtime            | MCS (10*Mbps) of rx data packet with both FCS ok and failed
116*17cfeb0bSXianjun Jiao  rx_data_pkt_fail_mcs_realtime       | MCS (10*Mbps) of rx data packet with FCS failed
117*17cfeb0bSXianjun Jiao  rx_mgmt_pkt_mcs_realtime            | MCS (10*Mbps) of rx management packet with both FCS ok and failed
118*17cfeb0bSXianjun Jiao  rx_mgmt_pkt_fail_mcs_realtime       | MCS (10*Mbps) of rx management packet with FCS failed
119*17cfeb0bSXianjun Jiao  rx_ack_pkt_mcs_realtime             | MCS (10*Mbps) of rx ACK packet with both FCS ok and failed
120*17cfeb0bSXianjun Jiao  rx_data_ok_agc_gain_value_realtime  | agc gain value of rx data packet with FCS ok
121*17cfeb0bSXianjun Jiao  rx_data_fail_agc_gain_value_realtime| agc gain value of rx data packet with FCS failed
122*17cfeb0bSXianjun Jiao  rx_mgmt_ok_agc_gain_value_realtime  | agc gain value of rx management packet with FCS ok
123*17cfeb0bSXianjun Jiao  rx_mgmt_fail_agc_gain_value_realtime| agc gain value of rx management packet with FCS failed
124*17cfeb0bSXianjun Jiao  rx_ack_ok_agc_gain_value_realtime   | agc gain value of rx ACK packet with FCS ok
125*17cfeb0bSXianjun Jiao
126*17cfeb0bSXianjun Jiao- rx_gain_show.sh
127*17cfeb0bSXianjun Jiao
128*17cfeb0bSXianjun Jiao  name|meaning
129*17cfeb0bSXianjun Jiao  ------------|----------------------
130*17cfeb0bSXianjun Jiao  rx_data_ok_agc_gain_value_realtime  | agc gain value of rx data packet with FCS ok
131*17cfeb0bSXianjun Jiao  rx_data_fail_agc_gain_value_realtime| agc gain value of rx data packet with FCS failed
132*17cfeb0bSXianjun Jiao  rx_mgmt_ok_agc_gain_value_realtime  | agc gain value of rx management packet with FCS ok
133*17cfeb0bSXianjun Jiao  rx_mgmt_fail_agc_gain_value_realtime| agc gain value of rx management packet with FCS failed
134*17cfeb0bSXianjun Jiao  rx_ack_ok_agc_gain_value_realtime   | agc gain value of rx ACK packet with FCS ok
135*17cfeb0bSXianjun Jiao
136*17cfeb0bSXianjun Jiao  Note: gain value here is always 14 dB higher than set_rx_gain_auto.sh/set_rx_gain_manual.sh at 5220MHz. 5dB higher at 2.4GHz.
137