This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

am335x-based board wl1801 throttling

Other Parts Discussed in Thread: WL1801

Hi, my previous problem not solved, but i can test my board with smartphone.

place my board close to AP. (about 5 cm).


i am testing some network middleware with smartphone app.

sometimes, i think my board seems to be throttle

when it happen, ran "top" command minicom serial terminal,

it happening randomly.

here is the result:

22% [irq/194-wl18xx]

PID    PPID  USER  STAT  VSZ  %VSZ  %CPU  COMMAND
1406  1403 root     R    58076  23%  45% /home/root/network_server
 1118     2 root     SW       0   0%  22% [irq/194-wl18xx]
 1440  1410 root     R     2124   1%  18% top
   42     2 root     SW       0   0%   3% [kworker/0:1]
 1439     2 root     RW       0   0%   2% [kworker/u2:1]
 1422     2 root     SW       0   0%   2% [kworker/u2:2]
 1267     1 root     S     3000   1%   1% /usr/bin/ntpd -p /var/run/ntp.pid -g
    3     2 root     SW       0   0%   1% [ksoftirqd/0]
    1     0 root     S     1324   1%   0% init [5]
 1347     1 root     S     4832   2%   0% wpa_supplicant -d -Dnl80211 -c/etc/
 1389     1 root     S     4240   2%   0% hostapd -B /etc/hostapd.conf -P /var/r
  819     1 root     S     2712   1%   0% /lib/udev/udevd -d

and there is some kernel message about wl1801

here :

root@am335x-evm:~# [ 1066.674409] wlcore: ERROR Tx stuck (in FW) for 5000 ms. Starting recovery
[ 1066.681882] ------------[ cut here ]------------
[ 1066.687201] WARNING: CPU: 0 PID: 1422 at drivers/net/wireless/ti/wlcore/main.c:802 wl12xx_queue_reco)
[ 1066.699897] Modules linked in: ipt_MASQUERADE iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipx
[ 1066.752088] CPU: 0 PID: 1422 Comm: kworker/u2:2 Not tainted 3.12.10-ti2013.12.01 #1
[ 1066.760508] Workqueue: phy0 wl12xx_tx_watchdog_work [wlcore]
[ 1066.766779] Backtrace:
[ 1066.769671] [<c0017880>] (dump_backtrace+0x0/0x10c) from [<c0017a1c>] (show_stack+0x18/0x1c)
[ 1066.778874]  r6:bf2189fc r5:00000009 r4:00000000 r3:c07f537c
[ 1066.785465] [<c0017a04>] (show_stack+0x0/0x1c) from [<c0569cd4>] (dump_stack+0x20/0x28)
[ 1066.794210] [<c0569cb4>] (dump_stack+0x0/0x28) from [<c0046d08>] (warn_slowpath_common+0x70/0x90)
[ 1066.803879] [<c0046c98>] (warn_slowpath_common+0x0/0x90) from [<c0046d4c>] (warn_slowpath_null+0x24/)
[ 1066.814266]  r8:00000000 r7:cd076400 r6:cc088c20 r5:cc088c54 r4:cc088c20
[ 1066.822274] [<c0046d28>] (warn_slowpath_null+0x0/0x2c) from [<bf2189fc>] (wl12xx_queue_recovery_work)
[ 1066.834109] [<bf218988>] (wl12xx_queue_recovery_work+0x0/0x80 [wlcore]) from [<bf218db8>] (wl12xx_tx)
[ 1066.847342]  r4:cc0898d4 r3:00000001
[ 1066.851454] [<bf218cb4>] (wl12xx_tx_watchdog_work+0x0/0x138 [wlcore]) from [<c0059f50>] (process_one)
[ 1066.862943]  r6:cd06e800 r5:cc0898d4 r4:cd294d40 r3:bf218cb4
[ 1066.869526] [<c0059e54>] (process_one_work+0x0/0x340) from [<c005a558>] (worker_thread+0x130/0x370)
[ 1066.879376] [<c005a428>] (worker_thread+0x0/0x370) from [<c005fbdc>] (kthread+0xac/0xb8)
[ 1066.888227] [<c005fb30>] (kthread+0x0/0xb8) from [<c00146f8>] (ret_from_fork+0x14/0x3c)
[ 1066.896968]  r7:00000000 r6:00000000 r5:c005fb30 r4:cd0b5e74
[ 1066.903525] ---[ end trace 522e3074244c5176 ]---
[ 1066.909534] wlcore: Hardware recovery in progress. FW ver: Rev 8.8.0.0.13
[ 1066.917551] wlcore: pc: 0x0, hint_sts: 0x00000048 count: 1
[ 1066.928000] wlcore: down
[ 1066.931002] wlcore: down
[ 1066.935453] ieee80211 phy0: Hardware restart was requested
[ 1070.879596] wlcore: PHY firmware version: Rev 8.2.0.0.195
[ 1071.058628] wlcore: firmware booted (Rev 8.8.0.0.13)
[ 1071.107231] wlcore: Association completed.

  • Hi,

    It still looks to be some RF issue.
    Is it possible to share a fw log to confirm the observation. To take the fw logs, please follow the below steps:

    ***

    Device Configuration

    First time only:

    Wlconf configuration:

    Set SDIO as an output:
    wlconf -i /etc/firmware/ti-connectivity/wl18xx-conf.bin -o /etc/firmware/ti-connectivity/wl18xx-conf.bin –set       core.fwlog.output=0x02

    (Optional)Update num of FW‘s memblocks allocate for logger :
    wlconf -i /etc/firmware/ti-connectivity/wl18xx-conf.bin -o /etc/firmware/ti-connectivity/wl18xx-conf.bin –set core.fwlog.mem_blocks=0x03

    (Optional)Validate Configuration:
    wlconf -i /etc/firmware/ti-connectivity/wl18xx-conf.bin –g

    wl_logproxy daemon:


    Copy “wl_logproxy” to /system/bin and chmod it.

    Link to source code:
    https://github.com/TI-OpenLink/18xx-ti-utils/blob/mc_internal/wl_logproxy.c


    mkdir /data/misc/wifi/fwlogs

    Update the insmod of the wlcore module to:
    insmod /system/lib/modules/wlcore.ko fwlog=continuous

    reboot device.

    Every time after reboot:

    Activate the logger:


    Prior to WLAN-ON:

    /system/bin/wl_logproxy 1555 /sys/devices/platform/omap/omap_hsmmc.4/mmc_host/mmc2/mmc2:0001/mmc2:0001:2/wl18xx/fwlog /data/misc/wifi/fwlogs/ 10000000 &
    If not a TI standard platform , you might need to look for fwlogs/ location

    ***

    Regards,
    Gigi Joseph.

  • > Update the insmod of the wlcore module to:
    > insmod /system/lib/modules/wlcore.ko fwlog=continuous

     

    Hi, this is not possible in ti-sdk-am335x-evm-07.00.00.00,

    it use device tree.

  • Hi,

    Sorry for the late response.
    Could you just try to set the host IRQ line to Level Triggered and retry just to see?

    Regards,
    Gigi Joseph.

  • Hi,


    how do i set the value?

    platform-quirks = <1>;

            wlan_en_reg: fixedregulator@2 {
                    compatible = "regulator-fixed";
                    regulator-name = "wlan-en-regulator";
                    regulator-min-microvolt = <1800000>;
                    regulator-max-microvolt = <1800000>;

                    /* WLAN_EN GPIO for this board - Bank1, pin16 */
                    gpio = <&gpio0 0 0>;

                    /* WLAN card specific delay */
                    startup-delay-us = <70000>;
                    enable-active-high;
            };

            wlcore {
                    compatible = "wlcore";
                    gpio = <50>; /*1 18 Bank3, pin17 */
                    platform-quirks = <1>;

                    /*
                     * TODO: use edge irqs for suspend/resume.
                     * in newer kerenls, we seem to miss interrupts when
                     * working with edge irqs, so revert back to level irqs.
                     */
                     /* platform-quirks = <1>; */

                    /* if a 12xx card is there, configure the clock to
                       WL12XX_REFCLOCK_38_XTAL */
                    board-ref-clock = <4>;
            };

  • Hi,

    You can just comment "platform-quirks = <1>;
    But it seems its already commented for you?

    Not sure I understood your other post regarding wlcore/ fwlog. Can you do it runtime/compile time? 

    Regards,
    Gigi Joseph.

  • no i didn't commented.

    i will test it later, thanks for the reply!

  • i commented "platform-quirks = <1>;"  and tested it.

    much better than before, but still i see irregular beacon lost detected messages 

  • Hi,

    Thanks for the information.
    The beacon loss is a totally different issue that what you were seeing ("Tx is stuck").

    Beacon loss messages is indicative of an issue with the RF performance (air/ap/antenna/etc). Is it possible to test it in a shield room and confirm that you don't see the "beacon loss" messages?

    Regards,
    Gigi Joseph.