This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
en:users:drivers:ath10k:debug [2015/01/26 09:49] 127.0.0.1 external edit |
en:users:drivers:ath10k:debug [2017/03/29 14:32] (current) Kalle Valo [Firmware crash dump file] useless use of cat and add a log message |
||
---|---|---|---|
Line 26: | Line 26: | ||
ATH10K_DBG_BMI = 0x00000400, | ATH10K_DBG_BMI = 0x00000400, | ||
ATH10K_DBG_REGULATORY = 0x00000800, | ATH10K_DBG_REGULATORY = 0x00000800, | ||
+ | ATH10K_DBG_TESTMODE = 0x00001000, | ||
+ | ATH10K_DBG_WMI_PRINT = 0x00002000, | ||
+ | ATH10K_DBG_PCI_PS = 0x00004000, | ||
+ | ATH10K_DBG_AHB = 0x00008000, | ||
ATH10K_DBG_ANY = 0xffffffff, | ATH10K_DBG_ANY = 0xffffffff, | ||
};</code> | };</code> | ||
Line 142: | Line 146: | ||
Just type iw to get short hint how to use it. | Just type iw to get short hint how to use it. | ||
- | |||
<code>iw | <code>iw | ||
Line 151: | Line 154: | ||
. | . | ||
.</code> | .</code> | ||
- | Currently ath10k HW is limited to handle only single fixed rate setting or limit number of used spatial streams. | ||
- | Not passing any arguments would clear the existing mask (if any). | + | Currently ath10k is limited to handle VHT MCS in ranges: none, 0-7, 0-8, and 0-9. You cannot set any other ranges. |
- | Some examples: | + | Not passing any arguments would clear the existing mask (if any): |
+ | <code>iw wlan0 set bitrates</code> | ||
- | <code>iw wlanX set bitrates legacy-5 ht-mcs-5 vht-mcs-5 2:9</code> | + | To set VHT, nss=2, mcs=9: |
- | will setup VHT, nss=2, mcs=9 | + | |
+ | <code>iw wlan0 set bitrates legacy-5 ht-mcs-5 vht-mcs-5 2:9</code> | ||
- | <code>iw wlanX set bitrates legacy-5 18 ht-mcs-5 vht-mcs-5</code> | ||
- | will setup legacy, 18Mbps | ||
+ | To set legacy, 18Mbps: | ||
- | <code>iw wlanX set bitrates legacy-5 ht-mcs-5 3 vht-mcs-5</code> | + | <code>iw wlan0 set bitrates legacy-5 18 ht-mcs-5 vht-mcs-5</code> |
- | will setup HT, nss=1, mcs=3 | + | |
+ | To set HT, nss=1, mcs=3: | ||
- | <code>iw wlanX set bitrates legacy-5 ht-mcs-5 vht-mcs-5 1:0-9</code> | + | <code>iw wlan0 set bitrates legacy-5 ht-mcs-5 3 vht-mcs-5</code> |
- | will setup nss=1 | + | |
+ | To set nss=1 MCS indexes 0-9 | ||
- | <code>iw wlanX set bitrates legacy-5 ht-mcs-5 vht-mcs-5 1:0-9 2:0-9</code> | + | <code>iw wlan0 set bitrates legacy-5 ht-mcs-5 vht-mcs-5 1:0-9</code> |
- | will setup nss=2 | + | |
+ | |||
+ | To set nss=2: | ||
+ | |||
+ | <code>iw wlan0 set bitrates legacy-5 ht-mcs-5 vht-mcs-5 1:0-9 2:0-9</code> | ||
It is possible to force SGI by adding force-sgi at the end of command: | It is possible to force SGI by adding force-sgi at the end of command: | ||
+ | <code>iw wlan0 set bitrates legacy-5 ht-mcs-5 vht-mcs-5 2:9 force-sgi</code> | ||
- | <code>iw wlanX set bitrates legacy-5 ht-mcs-5 vht-mcs-5 2:9 force-sgi</code> | + | Few more complicated examples, only supported since 4.2 kernel: |
+ | |||
+ | <code> | ||
+ | iw wlan0 set bitrates legacy-5 6 12 ht-mcs-5 1 2 3 | ||
+ | iw wlan0 set bitrates legacy-5 ht-mcs-5 7 8 9 | ||
+ | iw wlan0 set bitrates legacy-5 24 ht-mcs-5 vht-mcs-5 1:0-9 | ||
+ | </code> | ||
==== Simulating firmware crashes ==== | ==== Simulating firmware crashes ==== | ||
Line 197: | Line 210: | ||
`assert` - this will send special illegal parameter to firmware to cause assert failure and crash. | `assert` - this will send special illegal parameter to firmware to cause assert failure and crash. | ||
`hw-restart` - this will simply queue hw restart without fw/hw actually crashing.</code> | `hw-restart` - this will simply queue hw restart without fw/hw actually crashing.</code> | ||
+ | |||
+ | ==== Firmware crash dump file ==== | ||
+ | |||
+ | When the firmware crashes ath10k collects various information which helps to debug the crash and creates a crash dump file. This is available via dev_coredump facility from /sys/class/devcoredump. | ||
+ | |||
+ | To automatically collect devcoredump files add script /usr/local/sbin/devcoredump-collect.sh: | ||
+ | |||
+ | <code> | ||
+ | #!/bin/sh | ||
+ | |||
+ | timestamp=$(date +%Y%m%d%H%M%S) | ||
+ | filename="/var/spool/devcoredump/devcoredump-${timestamp}.dump" | ||
+ | cp /sys/${DEVPATH}/data ${filename} | ||
+ | echo 1 > /sys/${DEVPATH}/data | ||
+ | logger "created ${filename}"</code> | ||
+ | |||
+ | Create a directory for the dump files: | ||
+ | |||
+ | <code> | ||
+ | sudo mkdir /var/spool/devcoredump</code> | ||
+ | |||
+ | And add a udev rules script /etc/udev/rules.d/50-devcoredump.rules: | ||
+ | |||
+ | <code> | ||
+ | SUBSYSTEM=="devcoredump", ACTION=="add", RUN+="/usr/local/sbin/devcoredump-collect.sh"</code> | ||
+ | |||
+ |