Linux wireless drivers development
 help / color / mirror / Atom feed
* RE: staging: wilc1000: kernel Oops while opening the device
From: Ganesh.Krishna @ 2016-09-22 12:34 UTC (permalink / raw)
  To: gregkh, nicolas.ferre; +Cc: linux-wireless, Aditya.Shankar, luisbg
In-Reply-To: <20160919134201.GA25769@kroah.com>

>-----Original Message-----
>From: Greg Kroah-Hartman [mailto:gregkh@linuxfoundation.org] 
>Sent: Monday, September 19, 2016 7:12 PM
>To: Nicolas Ferre
>Cc: linux-wireless@vger.kernel.org; Aditya Shankar - I16078; Ganesh Krishna - I00112; luisbg@osg.samsung.com
>Subject: Re: staging: wilc1000: kernel Oops while opening the device
>
>On Mon, Sep 19, 2016 at 02:06:02PM +0200, Nicolas Ferre wrote:
>> Hi all,
>> 
>> While using the wilc1000 driver with latest 4.8-rc7, I have 
>> difficulties to open the device and actually use it as I have this 
>> kernel Oops right after the loading of the firmware (wilc1003_firmware.bin).
>> 
>> If I revert back the driver to its 
>> b9811891a9f60ca9c314dcab3244c65930c4cf37 state, it works okay. I did 
>> this because I tend to think that it might be related to the latest move on this driver to "completion" or "work queues".
>> It seems to be a regression from 4.7.
>
>Ick, not good at all.
>
>Any chance you can run 'git bisect' to see if you can find the offending patch?
>
>I thought the maintainers were testing this driver over time :(

>thanks,
>
>greg k-h

Ick indeed. Maintainers are on it full time. Thank you very much for the flag. While I am only reporting activity, hope to have results soon.
Regards,
ganesh k 

^ permalink raw reply

* Re: brcmf_txfinalize misses 802.1x packet leading to infinite WARNINGs
From: Rafał Miłecki @ 2016-09-22 12:24 UTC (permalink / raw)
  To: Hante Meuleman, Arend van Spriel, brcm80211-dev-list; +Cc: linux-wireless
In-Reply-To: <20160922115935.11287-1-zajec5@gmail.com>

On 09/22/2016 01:59 PM, Rafał Miłecki wrote:
> And again...
>
> I decided to focus on brcmf_flowring_delete a bit more.
>
> As I can see flowrings are created and removed from time to time, in most cases
> they are empty when being deleted. When they are not, things go wrong. In below
> log you can see brcmfmac removing flowring that got 8 skb packets.
>
> First some summary, of what was already partially noticed in previous e-mail:
> 1) brcmf_flowring_delete calls brcmu_pkt_buf_free_skb directly bypassing
>    brcmf_txfinalize. It means tracing 802.1x packets and counting TX errors is
>    broken.
> 2) After freeing skb (as the result of brcmf_flowring_delete) there will still
>    an IRQ, MSGBUF_TYPE_TX_STATUS and call to the brcmf_txfinalize. That's
>    definitely unexpected as brcmf_txfinalize will be operating on skb that was
>    already freed.
>
> Now, there is something new that looks even worse. Sometimes brcmf_txfinalize
> may be called multiple times for the same skb! Take a close look at my log.
> It was called twice for skb c64a5a80. Twice for c64a5480. Twice for c64a5f00.
> Then Linux/device rebooted itself due to amount of console messages.

I got the same problem again, but this time there was only 1 skb in my flowring.
That resulted in less serial console messages and no reboot.

It doesn't look good. brcmf_txfinalize was called 11 times after deleting
flowring. Everytime it was working with the same skb that was already freed.

After my DIR-885L and brcmfmac managed to survive that, my smartphone remained
connected but I couldn't contact it (no reply to ping). I had to reconnect and
then it was back OK.

[ 2927.500112] brcmfmac: CONSOLE: 029651.820 wl0: Proxy STA 78:d6:f0:9b:ba:bc link is already gone !!??

[ 2927.509473] brcmfmac: [brcmf_msgbuf_process_flow_ring_delete_response -> __brcmf_msgbuf_remove_flowring] flowid:3
[ 2927.519800] brcmfmac: [__brcmf_msgbuf_remove_flowring -> __brcmf_flowring_delete] flowid:3 ring:c7850540
[ 2927.529318] brcmfmac: [__brcmf_msgbuf_remove_flowring -> __brcmf_flowring_delete] count:0

[ 2927.537526] brcmfmac: [brcmf_msgbuf_process_flow_ring_delete_response -> __brcmf_msgbuf_remove_flowring] flowid:34
[ 2927.547929] brcmfmac: [__brcmf_msgbuf_remove_flowring -> __brcmf_flowring_delete] flowid:34 ring:c7850180
[ 2927.557533] brcmfmac: [__brcmf_msgbuf_remove_flowring -> __brcmf_flowring_delete] count:0

[ 2927.559735] brcmfmac: [brcmf_msgbuf_flowring_create -> __brcmf_flowring_create] da:78:d6:f0:9b:ba:bc prio:0 ifidx:1
[ 2927.559739] brcmfmac: [brcmf_msgbuf_flowring_create -> __brcmf_flowring_create] flowid:3
[ 2927.584463] brcmfmac: [brcmf_msgbuf_process_flow_ring_create_response] flowid:3 status:0x0000

[ 2927.593211] brcmfmac: [brcmf_msgbuf_process_flow_ring_delete_response -> __brcmf_msgbuf_remove_flowring] flowid:3
[ 2927.603538] brcmfmac: [__brcmf_msgbuf_remove_flowring -> __brcmf_flowring_delete] flowid:3 ring:c658cb80
[ 2927.613059] brcmfmac: [__brcmf_flowring_delete -> __brcmu_pkt_buf_free_skb] [ifp:  (null)] Freeing skb:c64d1240 skb->dev:c6b3f800 skb->dev->name:wlan1-1
[ 2927.626750] brcmfmac: [__brcmf_msgbuf_remove_flowring -> __brcmf_flowring_delete] count:1

[ 2928.348341] brcmfmac: CONSOLE: 029652.655 wl0: wlc_ampdu_resp_timeout: cleaning up resp tid 0 waiting forseq 0xbb9 for 1000 ms

[ 2930.887857] brcmfmac: [brcmf_msgbuf_flowring_create -> __brcmf_flowring_create] da:78:d6:f0:9b:ba:bc prio:0 ifidx:1
[ 2930.898340] brcmfmac: [brcmf_msgbuf_flowring_create -> __brcmf_flowring_create] flowid:3
[ 2930.906686] brcmfmac: [brcmf_msgbuf_process_flow_ring_create_response] flowid:3 status:0x0000

[ 2933.982285] brcmfmac: [__brcmf_txfinalize -> __brcmu_pkt_buf_free_skb] [ifp:c6b3fc80] ***BUG*** skb:c64d1240 skb->dev:c6b3f800 skb->dev->name:wlan1-1
[ 2933.995705] ------------[ cut here ]------------
[ 2934.000359] WARNING: CPU: 1 PID: 615 at compat-wireless-2016-06-20/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c:70 __brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac]()
[ 2934.015949] Modules linked in: pppoe ppp_async iptable_nat brcmfmac pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntrack xt_commed
[ 2934.088284] CPU: 1 PID: 615 Comm: irq/33-brcmf_pc Not tainted 4.4.21 #0
[ 2934.094913] Hardware name: BCM5301X
[ 2934.098403] Backtrace:
[ 2934.100877] [<c001708c>] (dump_backtrace) from [<c0017288>] (show_stack+0x18/0x1c)
[ 2934.108465]  r7:00000046 r6:bf1d1146 r5:60000093 r4:00000000
[ 2934.114183] [<c0017270>] (show_stack) from [<c017d038>] (dump_stack+0x84/0xa4)
[ 2934.121421] [<c017cfb4>] (dump_stack) from [<c0021490>] (warn_slowpath_common+0x8c/0xb8)
[ 2934.129527]  r5:00000009 r4:00000000
[ 2934.133126] [<c0021404>] (warn_slowpath_common) from [<c0021560>] (warn_slowpath_null+0x24/0x2c)
[ 2934.141931]  r8:a0000013 r7:c6b3fdd0 r6:bf1c9f2d r5:c6b3fc80 r4:c64d1240
[ 2934.148707] [<c002153c>] (warn_slowpath_null) from [<bf1bd550>] (__brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac])
[ 2934.158923] [<bf1bd4b8>] (__brcmu_pkt_buf_free_skb [brcmfmac]) from [<bf1bde90>] (__brcmf_txfinalize+0x19c/0x1d0 [brcmfmac])
[ 2934.170158]  r8:c04903c8 r7:c6b3fdd0 r6:c64d1240 r5:c658cf40 r4:c6b3fc80
[ 2934.176931] [<bf1bdcf4>] (__brcmf_txfinalize [brcmfmac]) from [<bf1c377c>] (brcmf_msgbuf_txdata+0x53c/0x6e8 [brcmfmac])
[ 2934.187731]  r10:c64d1240 r9:cacd2e80 r8:cacd2e80 r7:c7388180 r6:00000021 r5:00000000
[ 2934.195616]  r4:c7389c00
[ 2934.198175] [<bf1c3390>] (brcmf_msgbuf_txdata [brcmfmac]) from [<bf1c3964>] (brcmf_proto_msgbuf_rx_trigger+0x3c/0xd0 [brcmfmac])
[ 2934.209761]  r10:00000000 r9:c0493882 r8:c738ba64 r7:c0057d98 r6:c7a0c240 r5:00010000
[ 2934.217646]  r4:c7389c00
[ 2934.220207] [<bf1c3928>] (brcmf_proto_msgbuf_rx_trigger [brcmfmac]) from [<bf1c8004>] (brcmf_pcie_isr_thread+0x1c4/0x238 [brcmfmac])
[ 2934.232138]  r7:c0057d98 r6:c7a0c240 r5:00010000 r4:c68fa800
[ 2934.237853] [<bf1c7e40>] (brcmf_pcie_isr_thread [brcmfmac]) from [<c0057dbc>] (irq_thread_fn+0x24/0x3c)
[ 2934.247266]  r9:c0493882 r8:c738ba64 r7:c0057d98 r6:c7a0c240 r5:c738ba40 r4:c738ba40
[ 2934.255069] [<c0057d98>] (irq_thread_fn) from [<c00580a0>] (irq_thread+0xf8/0x1e4)
[ 2934.262655]  r7:c0057d98 r6:c7254000 r5:c738ba40 r4:c7a0c240
[ 2934.268363] [<c0057fa8>] (irq_thread) from [<c00394c4>] (kthread+0xe0/0xf4)
[ 2934.275336]  r10:00000000 r9:00000000 r8:00000000 r7:c0057fa8 r6:c738ba40 r5:00000000
[ 2934.283223]  r4:c738bcc0
[ 2934.285770] [<c00393e4>] (kthread) from [<c00097b8>] (ret_from_fork+0x14/0x3c)
[ 2934.293005]  r7:00000000 r6:00000000 r5:c00393e4 r4:c738bcc0
[ 2934.298708] ---[ end trace 886f614767d73cfe ]---

[ 2936.216611] brcmfmac: [__brcmf_txfinalize -> __brcmu_pkt_buf_free_skb] [ifp:c6b3fc80] ***BUG*** skb:c64d1240 skb->dev:c6b3f800 skb->dev->name:wlan1-1
[ 2936.230030] ------------[ cut here ]------------
[ 2936.234684] WARNING: CPU: 1 PID: 615 at compat-wireless-2016-06-20/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c:70 __brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac]()
[ 2936.250276] Modules linked in: pppoe ppp_async iptable_nat brcmfmac pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntrack xt_commed
[ 2936.322610] CPU: 1 PID: 615 Comm: irq/33-brcmf_pc Tainted: G        W       4.4.21 #0
[ 2936.330456] Hardware name: BCM5301X
[ 2936.333946] Backtrace:
[ 2936.336421] [<c001708c>] (dump_backtrace) from [<c0017288>] (show_stack+0x18/0x1c)
[ 2936.344008]  r7:00000046 r6:bf1d1146 r5:60000093 r4:00000000
[ 2936.349726] [<c0017270>] (show_stack) from [<c017d038>] (dump_stack+0x84/0xa4)
[ 2936.356965] [<c017cfb4>] (dump_stack) from [<c0021490>] (warn_slowpath_common+0x8c/0xb8)
[ 2936.365072]  r5:00000009 r4:00000000
[ 2936.368669] [<c0021404>] (warn_slowpath_common) from [<c0021560>] (warn_slowpath_null+0x24/0x2c)
[ 2936.377475]  r8:a0000013 r7:c6b3fdd0 r6:bf1c9f2d r5:c6b3fc80 r4:c64d1240
[ 2936.384249] [<c002153c>] (warn_slowpath_null) from [<bf1bd550>] (__brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac])
[ 2936.394468] [<bf1bd4b8>] (__brcmu_pkt_buf_free_skb [brcmfmac]) from [<bf1bde90>] (__brcmf_txfinalize+0x19c/0x1d0 [brcmfmac])
[ 2936.405702]  r8:c04903c8 r7:c6b3fdd0 r6:c64d1240 r5:c7850040 r4:c6b3fc80
[ 2936.412474] [<bf1bdcf4>] (__brcmf_txfinalize [brcmfmac]) from [<bf1c377c>] (brcmf_msgbuf_txdata+0x53c/0x6e8 [brcmfmac])
[ 2936.423275]  r10:c64d1240 r9:cacd2e90 r8:cacd2e90 r7:c7388180 r6:00000021 r5:00000000
[ 2936.431160]  r4:c7389c00
[ 2936.433720] [<bf1c3390>] (brcmf_msgbuf_txdata [brcmfmac]) from [<bf1c3964>] (brcmf_proto_msgbuf_rx_trigger+0x3c/0xd0 [brcmfmac])
[ 2936.445305]  r10:00000000 r9:c0493882 r8:c738ba64 r7:c0057d98 r6:c7a0c240 r5:00010000
[ 2936.453190]  r4:c7389c00
[ 2936.455750] [<bf1c3928>] (brcmf_proto_msgbuf_rx_trigger [brcmfmac]) from [<bf1c8004>] (brcmf_pcie_isr_thread+0x1c4/0x238 [brcmfmac])
[ 2936.467683]  r7:c0057d98 r6:c7a0c240 r5:00010000 r4:c68fa800
[ 2936.473396] [<bf1c7e40>] (brcmf_pcie_isr_thread [brcmfmac]) from [<c0057dbc>] (irq_thread_fn+0x24/0x3c)
[ 2936.482811]  r9:c0493882 r8:c738ba64 r7:c0057d98 r6:c7a0c240 r5:c738ba40 r4:c738ba40
[ 2936.490613] [<c0057d98>] (irq_thread_fn) from [<c00580a0>] (irq_thread+0xf8/0x1e4)
[ 2936.498199]  r7:c0057d98 r6:c7254000 r5:c738ba40 r4:c7a0c240
[ 2936.503906] [<c0057fa8>] (irq_thread) from [<c00394c4>] (kthread+0xe0/0xf4)
[ 2936.510880]  r10:00000000 r9:00000000 r8:00000000 r7:c0057fa8 r6:c738ba40 r5:00000000
[ 2936.518767]  r4:c738bcc0
[ 2936.521315] [<c00393e4>] (kthread) from [<c00097b8>] (ret_from_fork+0x14/0x3c)
[ 2936.528549]  r7:00000000 r6:00000000 r5:c00393e4 r4:c738bcc0
[ 2936.534252] ---[ end trace 886f614767d73cff ]---

[ 2942.054359] brcmfmac: CONSOLE: 029666.332 wl0.2: wlc_send_bar: seq 0x1 tid 0

[ 2942.683661] brcmfmac: [brcmf_msgbuf_flowring_create -> __brcmf_flowring_create] da:78:d6:f0:9b:ba:bc prio:6 ifidx:1
[ 2942.694175] brcmfmac: [brcmf_msgbuf_flowring_create -> __brcmf_flowring_create] flowid:34
[ 2942.702765] brcmfmac: [brcmf_msgbuf_process_flow_ring_create_response] flowid:34 status:0x0000

[ 2942.850073] brcmfmac: CONSOLE: 029667.008 wl0.2: wlc_send_bar: seq 0x1 tid 6

[ 2943.368191] brcmfmac: [__brcmf_txfinalize -> __brcmu_pkt_buf_free_skb] [ifp:c6b3fc80] ***BUG*** skb:c64d1240 skb->dev:c6b3f800 skb->dev->name:wlan1-1
[ 2943.381618] ------------[ cut here ]------------
[ 2943.386273] WARNING: CPU: 1 PID: 615 at compat-wireless-2016-06-20/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c:70 __brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac]()
[ 2943.401864] Modules linked in: pppoe ppp_async iptable_nat brcmfmac pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntrack xt_commed
[ 2943.474198] CPU: 1 PID: 615 Comm: irq/33-brcmf_pc Tainted: G        W       4.4.21 #0
[ 2943.482044] Hardware name: BCM5301X
[ 2943.485534] Backtrace:
[ 2943.488009] [<c001708c>] (dump_backtrace) from [<c0017288>] (show_stack+0x18/0x1c)
[ 2943.495597]  r7:00000046 r6:bf1d1146 r5:60000093 r4:00000000
[ 2943.501314] [<c0017270>] (show_stack) from [<c017d038>] (dump_stack+0x84/0xa4)
[ 2943.508553] [<c017cfb4>] (dump_stack) from [<c0021490>] (warn_slowpath_common+0x8c/0xb8)
[ 2943.516660]  r5:00000009 r4:00000000
[ 2943.520258] [<c0021404>] (warn_slowpath_common) from [<c0021560>] (warn_slowpath_null+0x24/0x2c)
[ 2943.529055]  r8:a0000013 r7:c6b3fdd0 r6:bf1c9f2d r5:c6b3fc80 r4:c64d1240
[ 2943.535829] [<c002153c>] (warn_slowpath_null) from [<bf1bd550>] (__brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac])
[ 2943.546047] [<bf1bd4b8>] (__brcmu_pkt_buf_free_skb [brcmfmac]) from [<bf1bde90>] (__brcmf_txfinalize+0x19c/0x1d0 [brcmfmac])
[ 2943.557281]  r8:c04903c8 r7:c6b3fdd0 r6:c64d1240 r5:c658cd00 r4:c6b3fc80
[ 2943.564054] [<bf1bdcf4>] (__brcmf_txfinalize [brcmfmac]) from [<bf1c377c>] (brcmf_msgbuf_txdata+0x53c/0x6e8 [brcmfmac])
[ 2943.574855]  r10:c64d1240 r9:cacd30b0 r8:cacd30b0 r7:c7388180 r6:00000021 r5:00000000
[ 2943.582741]  r4:c7389c00
[ 2943.585301] [<bf1c3390>] (brcmf_msgbuf_txdata [brcmfmac]) from [<bf1c3964>] (brcmf_proto_msgbuf_rx_trigger+0x3c/0xd0 [brcmfmac])
[ 2943.596885]  r10:00000000 r9:c0493882 r8:c738ba64 r7:c0057d98 r6:c7a0c240 r5:00010000
[ 2943.604771]  r4:c7389c00
[ 2943.607330] [<bf1c3928>] (brcmf_proto_msgbuf_rx_trigger [brcmfmac]) from [<bf1c8004>] (brcmf_pcie_isr_thread+0x1c4/0x238 [brcmfmac])
[ 2943.619262]  r7:c0057d98 r6:c7a0c240 r5:00010000 r4:c68fa800
[ 2943.624976] [<bf1c7e40>] (brcmf_pcie_isr_thread [brcmfmac]) from [<c0057dbc>] (irq_thread_fn+0x24/0x3c)
[ 2943.634391]  r9:c0493882 r8:c738ba64 r7:c0057d98 r6:c7a0c240 r5:c738ba40 r4:c738ba40
[ 2943.642193] [<c0057d98>] (irq_thread_fn) from [<c00580a0>] (irq_thread+0xf8/0x1e4)
[ 2943.649779]  r7:c0057d98 r6:c7254000 r5:c738ba40 r4:c7a0c240
[ 2943.655485] [<c0057fa8>] (irq_thread) from [<c00394c4>] (kthread+0xe0/0xf4)
[ 2943.662460]  r10:00000000 r9:00000000 r8:00000000 r7:c0057fa8 r6:c738ba40 r5:00000000
[ 2943.670346]  r4:c738bcc0
[ 2943.672893] [<c00393e4>] (kthread) from [<c00097b8>] (ret_from_fork+0x14/0x3c)
[ 2943.680129]  r7:00000000 r6:00000000 r5:c00393e4 r4:c738bcc0
[ 2943.685832] ---[ end trace 886f614767d73d00 ]---

[ 2948.380193] brcmfmac: [__brcmf_txfinalize -> __brcmu_pkt_buf_free_skb] [ifp:c6b3fc80] ***BUG*** skb:c64d1240 skb->dev:c6b3f800 skb->dev->name:wlan1-1
[ 2948.393616] ------------[ cut here ]------------
[ 2948.398271] WARNING: CPU: 1 PID: 615 at compat-wireless-2016-06-20/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c:70 __brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac]()
[ 2948.413860] Modules linked in: pppoe ppp_async iptable_nat brcmfmac pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntrack xt_commed
[ 2948.486196] CPU: 1 PID: 615 Comm: irq/33-brcmf_pc Tainted: G        W       4.4.21 #0
[ 2948.494041] Hardware name: BCM5301X
[ 2948.497532] Backtrace:
[ 2948.500007] [<c001708c>] (dump_backtrace) from [<c0017288>] (show_stack+0x18/0x1c)
[ 2948.507593]  r7:00000046 r6:bf1d1146 r5:60000093 r4:00000000
[ 2948.513311] [<c0017270>] (show_stack) from [<c017d038>] (dump_stack+0x84/0xa4)
[ 2948.520551] [<c017cfb4>] (dump_stack) from [<c0021490>] (warn_slowpath_common+0x8c/0xb8)
[ 2948.528657]  r5:00000009 r4:00000000
[ 2948.532256] [<c0021404>] (warn_slowpath_common) from [<c0021560>] (warn_slowpath_null+0x24/0x2c)
[ 2948.541061]  r8:a0000013 r7:c6b3fdd0 r6:bf1c9f2d r5:c6b3fc80 r4:c64d1240
[ 2948.547836] [<c002153c>] (warn_slowpath_null) from [<bf1bd550>] (__brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac])
[ 2948.558053] [<bf1bd4b8>] (__brcmu_pkt_buf_free_skb [brcmfmac]) from [<bf1bde90>] (__brcmf_txfinalize+0x19c/0x1d0 [brcmfmac])
[ 2948.569288]  r8:c04903c8 r7:c6b3fdd0 r6:c64d1240 r5:c7850340 r4:c6b3fc80
[ 2948.576060] [<bf1bdcf4>] (__brcmf_txfinalize [brcmfmac]) from [<bf1c377c>] (brcmf_msgbuf_txdata+0x53c/0x6e8 [brcmfmac])
[ 2948.586860]  r10:c64d1240 r9:cacd3340 r8:cacd3340 r7:c7388180 r6:00000003 r5:00000000
[ 2948.594747]  r4:c7389c00
[ 2948.597307] [<bf1c3390>] (brcmf_msgbuf_txdata [brcmfmac]) from [<bf1c3964>] (brcmf_proto_msgbuf_rx_trigger+0x3c/0xd0 [brcmfmac])
[ 2948.608891]  r10:00000000 r9:c0493882 r8:c738ba64 r7:c0057d98 r6:c7a0c240 r5:00010000
[ 2948.616776]  r4:c7389c00
[ 2948.619336] [<bf1c3928>] (brcmf_proto_msgbuf_rx_trigger [brcmfmac]) from [<bf1c8004>] (brcmf_pcie_isr_thread+0x1c4/0x238 [brcmfmac])
[ 2948.631268]  r7:c0057d98 r6:c7a0c240 r5:00010000 r4:c68fa800
[ 2948.636983] [<bf1c7e40>] (brcmf_pcie_isr_thread [brcmfmac]) from [<c0057dbc>] (irq_thread_fn+0x24/0x3c)
[ 2948.646396]  r9:c0493882 r8:c738ba64 r7:c0057d98 r6:c7a0c240 r5:c738ba40 r4:c738ba40
[ 2948.654198] [<c0057d98>] (irq_thread_fn) from [<c00580a0>] (irq_thread+0xf8/0x1e4)
[ 2948.661776]  r7:c0057d98 r6:c7254000 r5:c738ba40 r4:c7a0c240
[ 2948.667483] [<c0057fa8>] (irq_thread) from [<c00394c4>] (kthread+0xe0/0xf4)
[ 2948.674458]  r10:00000000 r9:00000000 r8:00000000 r7:c0057fa8 r6:c738ba40 r5:00000000
[ 2948.682343]  r4:c738bcc0
[ 2948.684892] [<c00393e4>] (kthread) from [<c00097b8>] (ret_from_fork+0x14/0x3c)
[ 2948.692126]  r7:00000000 r6:00000000 r5:c00393e4 r4:c738bcc0
[ 2948.697830] ---[ end trace 886f614767d73d01 ]---

[ 2948.705730] brcmfmac: CONSOLE: 029672.990 wl0.2: wlc_send_bar: seq 0x19 tid 0

[ 2956.055394] brcmfmac: [__brcmf_txfinalize -> __brcmu_pkt_buf_free_skb] [ifp:c6b3fc80] ***BUG*** skb:c64d1240 skb->dev:c6b3f800 skb->dev->name:wlan1-1
[ 2956.068820] ------------[ cut here ]------------
[ 2956.073474] WARNING: CPU: 1 PID: 615 at compat-wireless-2016-06-20/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c:70 __brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac]()
[ 2956.089064] Modules linked in: pppoe ppp_async iptable_nat brcmfmac pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntrack xt_commed
[ 2956.161400] CPU: 1 PID: 615 Comm: irq/33-brcmf_pc Tainted: G        W       4.4.21 #0
[ 2956.169245] Hardware name: BCM5301X
[ 2956.172735] Backtrace:
[ 2956.175211] [<c001708c>] (dump_backtrace) from [<c0017288>] (show_stack+0x18/0x1c)
[ 2956.182798]  r7:00000046 r6:bf1d1146 r5:60000093 r4:00000000
[ 2956.188515] [<c0017270>] (show_stack) from [<c017d038>] (dump_stack+0x84/0xa4)
[ 2956.195754] [<c017cfb4>] (dump_stack) from [<c0021490>] (warn_slowpath_common+0x8c/0xb8)
[ 2956.203861]  r5:00000009 r4:00000000
[ 2956.207459] [<c0021404>] (warn_slowpath_common) from [<c0021560>] (warn_slowpath_null+0x24/0x2c)
[ 2956.216264]  r8:a0000013 r7:c6b3fdd0 r6:bf1c9f2d r5:c6b3fc80 r4:c64d1240
[ 2956.223039] [<c002153c>] (warn_slowpath_null) from [<bf1bd550>] (__brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac])
[ 2956.233256] [<bf1bd4b8>] (__brcmu_pkt_buf_free_skb [brcmfmac]) from [<bf1bde90>] (__brcmf_txfinalize+0x19c/0x1d0 [brcmfmac])
[ 2956.244491]  r8:c04903c8 r7:c6b3fdd0 r6:c64d1240 r5:c658ca80 r4:c6b3fc80
[ 2956.251264] [<bf1bdcf4>] (__brcmf_txfinalize [brcmfmac]) from [<bf1c377c>] (brcmf_msgbuf_txdata+0x53c/0x6e8 [brcmfmac])
[ 2956.262064]  r10:c64d1240 r9:cacd3530 r8:cacd3530 r7:c7388180 r6:00000021 r5:00000000
[ 2956.269950]  r4:c7389c00
[ 2956.272509] [<bf1c3390>] (brcmf_msgbuf_txdata [brcmfmac]) from [<bf1c3964>] (brcmf_proto_msgbuf_rx_trigger+0x3c/0xd0 [brcmfmac])
[ 2956.284094]  r10:00000000 r9:c0493882 r8:c738ba64 r7:c0057d98 r6:c7a0c240 r5:00010000
[ 2956.291980]  r4:c7389c00
[ 2956.294539] [<bf1c3928>] (brcmf_proto_msgbuf_rx_trigger [brcmfmac]) from [<bf1c8004>] (brcmf_pcie_isr_thread+0x1c4/0x238 [brcmfmac])
[ 2956.306473]  r7:c0057d98 r6:c7a0c240 r5:00010000 r4:c68fa800
[ 2956.312185] [<bf1c7e40>] (brcmf_pcie_isr_thread [brcmfmac]) from [<c0057dbc>] (irq_thread_fn+0x24/0x3c)
[ 2956.321591]  r9:c0493882 r8:c738ba64 r7:c0057d98 r6:c7a0c240 r5:c738ba40 r4:c738ba40
[ 2956.329393] [<c0057d98>] (irq_thread_fn) from [<c00580a0>] (irq_thread+0xf8/0x1e4)
[ 2956.336971]  r7:c0057d98 r6:c7254000 r5:c738ba40 r4:c7a0c240
[ 2956.342677] [<c0057fa8>] (irq_thread) from [<c00394c4>] (kthread+0xe0/0xf4)
[ 2956.349653]  r10:00000000 r9:00000000 r8:00000000 r7:c0057fa8 r6:c738ba40 r5:00000000
[ 2956.357538]  r4:c738bcc0
[ 2956.360086] [<c00393e4>] (kthread) from [<c00097b8>] (ret_from_fork+0x14/0x3c)
[ 2956.367321]  r7:00000000 r6:00000000 r5:c00393e4 r4:c738bcc0
[ 2956.373024] ---[ end trace 886f614767d73d02 ]---

[ 2966.060530] brcmfmac: [__brcmf_txfinalize -> __brcmu_pkt_buf_free_skb] [ifp:c6b3fc80] ***BUG*** skb:c64d1240 skb->dev:c6b3f800 skb->dev->name:wlan1-1
[ 2966.073953] ------------[ cut here ]------------
[ 2966.078607] WARNING: CPU: 1 PID: 615 at compat-wireless-2016-06-20/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c:70 __brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac]()
[ 2966.094198] Modules linked in: pppoe ppp_async iptable_nat brcmfmac pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntrack xt_commed
[ 2966.166533] CPU: 1 PID: 615 Comm: irq/33-brcmf_pc Tainted: G        W       4.4.21 #0
[ 2966.174378] Hardware name: BCM5301X
[ 2966.177869] Backtrace:
[ 2966.180345] [<c001708c>] (dump_backtrace) from [<c0017288>] (show_stack+0x18/0x1c)
[ 2966.187931]  r7:00000046 r6:bf1d1146 r5:60000093 r4:00000000
[ 2966.193648] [<c0017270>] (show_stack) from [<c017d038>] (dump_stack+0x84/0xa4)
[ 2966.200887] [<c017cfb4>] (dump_stack) from [<c0021490>] (warn_slowpath_common+0x8c/0xb8)
[ 2966.208994]  r5:00000009 r4:00000000
[ 2966.212593] [<c0021404>] (warn_slowpath_common) from [<c0021560>] (warn_slowpath_null+0x24/0x2c)
[ 2966.221398]  r8:a0000013 r7:c6b3fdd0 r6:bf1c9f2d r5:c6b3fc80 r4:c64d1240
[ 2966.228171] [<c002153c>] (warn_slowpath_null) from [<bf1bd550>] (__brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac])
[ 2966.238382] [<bf1bd4b8>] (__brcmu_pkt_buf_free_skb [brcmfmac]) from [<bf1bde90>] (__brcmf_txfinalize+0x19c/0x1d0 [brcmfmac])
[ 2966.249616]  r8:c04903c8 r7:c6b3fdd0 r6:c64d1240 r5:c7850680 r4:c6b3fc80
[ 2966.256388] [<bf1bdcf4>] (__brcmf_txfinalize [brcmfmac]) from [<bf1c377c>] (brcmf_msgbuf_txdata+0x53c/0x6e8 [brcmfmac])
[ 2966.267190]  r10:c64d1240 r9:cacd3670 r8:cacd3670 r7:c7388180 r6:00000021 r5:00000001
[ 2966.275075]  r4:c7389c00
[ 2966.277634] [<bf1c3390>] (brcmf_msgbuf_txdata [brcmfmac]) from [<bf1c3964>] (brcmf_proto_msgbuf_rx_trigger+0x3c/0xd0 [brcmfmac])
[ 2966.289219]  r10:00000000 r9:c0493882 r8:c738ba64 r7:c0057d98 r6:c7a0c240 r5:00010000
[ 2966.297104]  r4:c7389c00
[ 2966.299664] [<bf1c3928>] (brcmf_proto_msgbuf_rx_trigger [brcmfmac]) from [<bf1c8004>] (brcmf_pcie_isr_thread+0x1c4/0x238 [brcmfmac])
[ 2966.311596]  r7:c0057d98 r6:c7a0c240 r5:00010000 r4:c68fa800
[ 2966.317311] [<bf1c7e40>] (brcmf_pcie_isr_thread [brcmfmac]) from [<c0057dbc>] (irq_thread_fn+0x24/0x3c)
[ 2966.326724]  r9:c0493882 r8:c738ba64 r7:c0057d98 r6:c7a0c240 r5:c738ba40 r4:c738ba40
[ 2966.334527] [<c0057d98>] (irq_thread_fn) from [<c00580a0>] (irq_thread+0xf8/0x1e4)
[ 2966.342112]  r7:c0057d98 r6:c7254000 r5:c738ba40 r4:c7a0c240
[ 2966.347820] [<c0057fa8>] (irq_thread) from [<c00394c4>] (kthread+0xe0/0xf4)
[ 2966.354795]  r10:00000000 r9:00000000 r8:00000000 r7:c0057fa8 r6:c738ba40 r5:00000000
[ 2966.362680]  r4:c738bcc0
[ 2966.365229] [<c00393e4>] (kthread) from [<c00097b8>] (ret_from_fork+0x14/0x3c)
[ 2966.372464]  r7:00000000 r6:00000000 r5:c00393e4 r4:c738bcc0
[ 2966.378166] ---[ end trace 886f614767d73d03 ]---

[ 2966.527066] brcmfmac: [__brcmf_txfinalize -> __brcmu_pkt_buf_free_skb] [ifp:c6b3fc80] ***BUG*** skb:c64d1240 skb->dev:c6b3f800 skb->dev->name:wlan1-1
[ 2966.540487] ------------[ cut here ]------------
[ 2966.545141] WARNING: CPU: 1 PID: 615 at compat-wireless-2016-06-20/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c:70 __brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac]()
[ 2966.560731] Modules linked in: pppoe ppp_async iptable_nat brcmfmac pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntrack xt_commed
[ 2966.633066] CPU: 1 PID: 615 Comm: irq/33-brcmf_pc Tainted: G        W       4.4.21 #0
[ 2966.640913] Hardware name: BCM5301X
[ 2966.644403] Backtrace:
[ 2966.646878] [<c001708c>] (dump_backtrace) from [<c0017288>] (show_stack+0x18/0x1c)
[ 2966.654465]  r7:00000046 r6:bf1d1146 r5:60000093 r4:00000000
[ 2966.660181] [<c0017270>] (show_stack) from [<c017d038>] (dump_stack+0x84/0xa4)
[ 2966.667422] [<c017cfb4>] (dump_stack) from [<c0021490>] (warn_slowpath_common+0x8c/0xb8)
[ 2966.675529]  r5:00000009 r4:00000000
[ 2966.679127] [<c0021404>] (warn_slowpath_common) from [<c0021560>] (warn_slowpath_null+0x24/0x2c)
[ 2966.687932]  r8:a0000013 r7:c6b3fdd0 r6:bf1c9f2d r5:c6b3fc80 r4:c64d1240
[ 2966.694703] [<c002153c>] (warn_slowpath_null) from [<bf1bd550>] (__brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac])
[ 2966.704915] [<bf1bd4b8>] (__brcmu_pkt_buf_free_skb [brcmfmac]) from [<bf1bde90>] (__brcmf_txfinalize+0x19c/0x1d0 [brcmfmac])
[ 2966.716149]  r8:c04903c8 r7:c6b3fdd0 r6:c64d1240 r5:c78508c0 r4:c6b3fc80
[ 2966.722922] [<bf1bdcf4>] (__brcmf_txfinalize [brcmfmac]) from [<bf1c377c>] (brcmf_msgbuf_txdata+0x53c/0x6e8 [brcmfmac])
[ 2966.733723]  r10:c64d1240 r9:cacd3700 r8:cacd3700 r7:c7388180 r6:00000021 r5:00000000
[ 2966.741609]  r4:c7389c00
[ 2966.744168] [<bf1c3390>] (brcmf_msgbuf_txdata [brcmfmac]) from [<bf1c3964>] (brcmf_proto_msgbuf_rx_trigger+0x3c/0xd0 [brcmfmac])
[ 2966.755753]  r10:00000000 r9:c0493882 r8:c738ba64 r7:c0057d98 r6:c7a0c240 r5:00010000
[ 2966.763639]  r4:c7389c00
[ 2966.766198] [<bf1c3928>] (brcmf_proto_msgbuf_rx_trigger [brcmfmac]) from [<bf1c8004>] (brcmf_pcie_isr_thread+0x1c4/0x238 [brcmfmac])
[ 2966.778131]  r7:c0057d98 r6:c7a0c240 r5:00010000 r4:c68fa800
[ 2966.783843] [<bf1c7e40>] (brcmf_pcie_isr_thread [brcmfmac]) from [<c0057dbc>] (irq_thread_fn+0x24/0x3c)
[ 2966.793250]  r9:c0493882 r8:c738ba64 r7:c0057d98 r6:c7a0c240 r5:c738ba40 r4:c738ba40
[ 2966.801052] [<c0057d98>] (irq_thread_fn) from [<c00580a0>] (irq_thread+0xf8/0x1e4)
[ 2966.808630]  r7:c0057d98 r6:c7254000 r5:c738ba40 r4:c7a0c240
[ 2966.814336] [<c0057fa8>] (irq_thread) from [<c00394c4>] (kthread+0xe0/0xf4)
[ 2966.821311]  r10:00000000 r9:00000000 r8:00000000 r7:c0057fa8 r6:c738ba40 r5:00000000
[ 2966.829197]  r4:c738bcc0
[ 2966.831745] [<c00393e4>] (kthread) from [<c00097b8>] (ret_from_fork+0x14/0x3c)
[ 2966.838981]  r7:00000000 r6:00000000 r5:c00393e4 r4:c738bcc0
[ 2966.844683] ---[ end trace 886f614767d73d04 ]---

[ 2971.310626] brcmfmac: [__brcmf_txfinalize -> __brcmu_pkt_buf_free_skb] [ifp:c6b3fc80] ***BUG*** skb:c64d1240 skb->dev:c6b3f800 skb->dev->name:wlan1-1
[ 2971.324049] ------------[ cut here ]------------
[ 2971.328703] WARNING: CPU: 1 PID: 615 at compat-wireless-2016-06-20/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c:70 __brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac]()
[ 2971.344293] Modules linked in: pppoe ppp_async iptable_nat brcmfmac pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntrack xt_commed
[ 2971.416627] CPU: 1 PID: 615 Comm: irq/33-brcmf_pc Tainted: G        W       4.4.21 #0
[ 2971.424474] Hardware name: BCM5301X
[ 2971.427964] Backtrace:
[ 2971.430440] [<c001708c>] (dump_backtrace) from [<c0017288>] (show_stack+0x18/0x1c)
[ 2971.438026]  r7:00000046 r6:bf1d1146 r5:60000093 r4:00000000
[ 2971.443744] [<c0017270>] (show_stack) from [<c017d038>] (dump_stack+0x84/0xa4)
[ 2971.450983] [<c017cfb4>] (dump_stack) from [<c0021490>] (warn_slowpath_common+0x8c/0xb8)
[ 2971.459090]  r5:00000009 r4:00000000
[ 2971.462688] [<c0021404>] (warn_slowpath_common) from [<c0021560>] (warn_slowpath_null+0x24/0x2c)
[ 2971.471492]  r8:a0000013 r7:c6b3fdd0 r6:bf1c9f2d r5:c6b3fc80 r4:c64d1240
[ 2971.478268] [<c002153c>] (warn_slowpath_null) from [<bf1bd550>] (__brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac])
[ 2971.488486] [<bf1bd4b8>] (__brcmu_pkt_buf_free_skb [brcmfmac]) from [<bf1bde90>] (__brcmf_txfinalize+0x19c/0x1d0 [brcmfmac])
[ 2971.499728]  r8:c04903c8 r7:c6b3fdd0 r6:c64d1240 r5:c658c080 r4:c6b3fc80
[ 2971.506501] [<bf1bdcf4>] (__brcmf_txfinalize [brcmfmac]) from [<bf1c377c>] (brcmf_msgbuf_txdata+0x53c/0x6e8 [brcmfmac])
[ 2971.517302]  r10:c64d1240 r9:cacd37f0 r8:cacd37f0 r7:c7388180 r6:00000021 r5:00000000
[ 2971.525187]  r4:c7389c00
[ 2971.527746] [<bf1c3390>] (brcmf_msgbuf_txdata [brcmfmac]) from [<bf1c3964>] (brcmf_proto_msgbuf_rx_trigger+0x3c/0xd0 [brcmfmac])
[ 2971.539332]  r10:00000000 r9:c0493882 r8:c738ba64 r7:c0057d98 r6:c7a0c240 r5:00010000
[ 2971.547217]  r4:c7389c00
[ 2971.549777] [<bf1c3928>] (brcmf_proto_msgbuf_rx_trigger [brcmfmac]) from [<bf1c8004>] (brcmf_pcie_isr_thread+0x1c4/0x238 [brcmfmac])
[ 2971.561709]  r7:c0057d98 r6:c7a0c240 r5:00010000 r4:c68fa800
[ 2971.567423] [<bf1c7e40>] (brcmf_pcie_isr_thread [brcmfmac]) from [<c0057dbc>] (irq_thread_fn+0x24/0x3c)
[ 2971.576837]  r9:c0493882 r8:c738ba64 r7:c0057d98 r6:c7a0c240 r5:c738ba40 r4:c738ba40
[ 2971.584639] [<c0057d98>] (irq_thread_fn) from [<c00580a0>] (irq_thread+0xf8/0x1e4)
[ 2971.592225]  r7:c0057d98 r6:c7254000 r5:c738ba40 r4:c7a0c240
[ 2971.597933] [<c0057fa8>] (irq_thread) from [<c00394c4>] (kthread+0xe0/0xf4)
[ 2971.604908]  r10:00000000 r9:00000000 r8:00000000 r7:c0057fa8 r6:c738ba40 r5:00000000
[ 2971.612793]  r4:c738bcc0
[ 2971.615342] [<c00393e4>] (kthread) from [<c00097b8>] (ret_from_fork+0x14/0x3c)
[ 2971.622576]  r7:00000000 r6:00000000 r5:c00393e4 r4:c738bcc0
[ 2971.628280] ---[ end trace 886f614767d73d05 ]---

[ 2972.173454] brcmfmac: [__brcmf_txfinalize -> __brcmu_pkt_buf_free_skb] [ifp:c6b3fc80] ***BUG*** skb:c64d1240 skb->dev:c6b3f800 skb->dev->name:wlan1-1
[ 2972.186877] ------------[ cut here ]------------
[ 2972.191530] WARNING: CPU: 1 PID: 615 at compat-wireless-2016-06-20/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c:70 __brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac]()
[ 2972.207120] Modules linked in: pppoe ppp_async iptable_nat brcmfmac pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntrack xt_commed
[ 2972.279454] CPU: 1 PID: 615 Comm: irq/33-brcmf_pc Tainted: G        W       4.4.21 #0
[ 2972.287301] Hardware name: BCM5301X
[ 2972.290792] Backtrace:
[ 2972.293266] [<c001708c>] (dump_backtrace) from [<c0017288>] (show_stack+0x18/0x1c)
[ 2972.300854]  r7:00000046 r6:bf1d1146 r5:60000093 r4:00000000
[ 2972.306572] [<c0017270>] (show_stack) from [<c017d038>] (dump_stack+0x84/0xa4)
[ 2972.313812] [<c017cfb4>] (dump_stack) from [<c0021490>] (warn_slowpath_common+0x8c/0xb8)
[ 2972.321917]  r5:00000009 r4:00000000
[ 2972.325516] [<c0021404>] (warn_slowpath_common) from [<c0021560>] (warn_slowpath_null+0x24/0x2c)
[ 2972.334320]  r8:a0000013 r7:c6b3fdd0 r6:bf1c9f2d r5:c6b3fc80 r4:c64d1240
[ 2972.341097] [<c002153c>] (warn_slowpath_null) from [<bf1bd550>] (__brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac])
[ 2972.351314] [<bf1bd4b8>] (__brcmu_pkt_buf_free_skb [brcmfmac]) from [<bf1bde90>] (__brcmf_txfinalize+0x19c/0x1d0 [brcmfmac])
[ 2972.362556]  r8:c04903c8 r7:c6b3fdd0 r6:c64d1240 r5:c7850800 r4:c6b3fc80
[ 2972.369328] [<bf1bdcf4>] (__brcmf_txfinalize [brcmfmac]) from [<bf1c377c>] (brcmf_msgbuf_txdata+0x53c/0x6e8 [brcmfmac])
[ 2972.380130]  r10:c64d1240 r9:cacd3900 r8:cacd3900 r7:c7388180 r6:00000021 r5:00000000
[ 2972.388015]  r4:c7389c00
[ 2972.390574] [<bf1c3390>] (brcmf_msgbuf_txdata [brcmfmac]) from [<bf1c3964>] (brcmf_proto_msgbuf_rx_trigger+0x3c/0xd0 [brcmfmac])
[ 2972.402158]  r10:00000000 r9:c0493882 r8:c738ba64 r7:c0057d98 r6:c7a0c240 r5:00010000
[ 2972.410044]  r4:c7389c00
[ 2972.412605] [<bf1c3928>] (brcmf_proto_msgbuf_rx_trigger [brcmfmac]) from [<bf1c8004>] (brcmf_pcie_isr_thread+0x1c4/0x238 [brcmfmac])
[ 2972.424536]  r7:c0057d98 r6:c7a0c240 r5:00010000 r4:c68fa800
[ 2972.430251] [<bf1c7e40>] (brcmf_pcie_isr_thread [brcmfmac]) from [<c0057dbc>] (irq_thread_fn+0x24/0x3c)
[ 2972.439665]  r9:c0493882 r8:c738ba64 r7:c0057d98 r6:c7a0c240 r5:c738ba40 r4:c738ba40
[ 2972.447467] [<c0057d98>] (irq_thread_fn) from [<c00580a0>] (irq_thread+0xf8/0x1e4)
[ 2972.455054]  r7:c0057d98 r6:c7254000 r5:c738ba40 r4:c7a0c240
[ 2972.460760] [<c0057fa8>] (irq_thread) from [<c00394c4>] (kthread+0xe0/0xf4)
[ 2972.467734]  r10:00000000 r9:00000000 r8:00000000 r7:c0057fa8 r6:c738ba40 r5:00000000
[ 2972.475621]  r4:c738bcc0
[ 2972.478169] [<c00393e4>] (kthread) from [<c00097b8>] (ret_from_fork+0x14/0x3c)
[ 2972.485403]  r7:00000000 r6:00000000 r5:c00393e4 r4:c738bcc0
[ 2972.491107] ---[ end trace 886f614767d73d06 ]---

[ 2974.318618] brcmfmac: [__brcmf_txfinalize -> __brcmu_pkt_buf_free_skb] [ifp:c6b3fc80] ***BUG*** skb:c64d1240 skb->dev:c6b3f800 skb->dev->name:wlan1-1
[ 2974.332046] ------------[ cut here ]------------
[ 2974.336700] WARNING: CPU: 1 PID: 615 at compat-wireless-2016-06-20/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c:70 __brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac]()
[ 2974.352291] Modules linked in: pppoe ppp_async iptable_nat brcmfmac pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntrack xt_commed
[ 2974.424626] CPU: 1 PID: 615 Comm: irq/33-brcmf_pc Tainted: G        W       4.4.21 #0
[ 2974.432471] Hardware name: BCM5301X
[ 2974.435962] Backtrace:
[ 2974.438437] [<c001708c>] (dump_backtrace) from [<c0017288>] (show_stack+0x18/0x1c)
[ 2974.446024]  r7:00000046 r6:bf1d1146 r5:60000093 r4:00000000
[ 2974.451741] [<c0017270>] (show_stack) from [<c017d038>] (dump_stack+0x84/0xa4)
[ 2974.458981] [<c017cfb4>] (dump_stack) from [<c0021490>] (warn_slowpath_common+0x8c/0xb8)
[ 2974.467086]  r5:00000009 r4:00000000
[ 2974.470685] [<c0021404>] (warn_slowpath_common) from [<c0021560>] (warn_slowpath_null+0x24/0x2c)
[ 2974.479482]  r8:a0000013 r7:c6b3fdd0 r6:bf1c9f2d r5:c6b3fc80 r4:c64d1240
[ 2974.486259] [<c002153c>] (warn_slowpath_null) from [<bf1bd550>] (__brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac])
[ 2974.496474] [<bf1bd4b8>] (__brcmu_pkt_buf_free_skb [brcmfmac]) from [<bf1bde90>] (__brcmf_txfinalize+0x19c/0x1d0 [brcmfmac])
[ 2974.507708]  r8:c04903c8 r7:c6b3fdd0 r6:c64d1240 r5:c658c3c0 r4:c6b3fc80
[ 2974.514481] [<bf1bdcf4>] (__brcmf_txfinalize [brcmfmac]) from [<bf1c377c>] (brcmf_msgbuf_txdata+0x53c/0x6e8 [brcmfmac])
[ 2974.525282]  r10:c64d1240 r9:cacd3a20 r8:cacd3a20 r7:c7388180 r6:00000021 r5:00000000
[ 2974.533168]  r4:c7389c00
[ 2974.535727] [<bf1c3390>] (brcmf_msgbuf_txdata [brcmfmac]) from [<bf1c3964>] (brcmf_proto_msgbuf_rx_trigger+0x3c/0xd0 [brcmfmac])
[ 2974.547312]  r10:00000000 r9:c0493882 r8:c738ba64 r7:c0057d98 r6:c7a0c240 r5:00010000
[ 2974.555198]  r4:c7389c00
[ 2974.557757] [<bf1c3928>] (brcmf_proto_msgbuf_rx_trigger [brcmfmac]) from [<bf1c8004>] (brcmf_pcie_isr_thread+0x1c4/0x238 [brcmfmac])
[ 2974.569690]  r7:c0057d98 r6:c7a0c240 r5:00010000 r4:c68fa800
[ 2974.575403] [<bf1c7e40>] (brcmf_pcie_isr_thread [brcmfmac]) from [<c0057dbc>] (irq_thread_fn+0x24/0x3c)
[ 2974.584817]  r9:c0493882 r8:c738ba64 r7:c0057d98 r6:c7a0c240 r5:c738ba40 r4:c738ba40
[ 2974.592619] [<c0057d98>] (irq_thread_fn) from [<c00580a0>] (irq_thread+0xf8/0x1e4)
[ 2974.600197]  r7:c0057d98 r6:c7254000 r5:c738ba40 r4:c7a0c240
[ 2974.605905] [<c0057fa8>] (irq_thread) from [<c00394c4>] (kthread+0xe0/0xf4)
[ 2974.612879]  r10:00000000 r9:00000000 r8:00000000 r7:c0057fa8 r6:c738ba40 r5:00000000
[ 2974.620765]  r4:c738bcc0
[ 2974.623312] [<c00393e4>] (kthread) from [<c00097b8>] (ret_from_fork+0x14/0x3c)
[ 2974.630549]  r7:00000000 r6:00000000 r5:c00393e4 r4:c738bcc0
[ 2974.636250] ---[ end trace 886f614767d73d07 ]---

[ 2975.049818] brcmfmac: [__brcmf_txfinalize -> __brcmu_pkt_buf_free_skb] [ifp:c6b3fc80] ***BUG*** skb:c64d1240 skb->dev:c6b3f800 skb->dev->name:wlan1-1
[ 2975.063243] ------------[ cut here ]------------
[ 2975.067897] WARNING: CPU: 1 PID: 615 at compat-wireless-2016-06-20/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c:70 __brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac]()
[ 2975.083488] Modules linked in: pppoe ppp_async iptable_nat brcmfmac pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntrack xt_commed
[ 2975.155822] CPU: 1 PID: 615 Comm: irq/33-brcmf_pc Tainted: G        W       4.4.21 #0
[ 2975.163668] Hardware name: BCM5301X
[ 2975.167159] Backtrace:
[ 2975.169634] [<c001708c>] (dump_backtrace) from [<c0017288>] (show_stack+0x18/0x1c)
[ 2975.177221]  r7:00000046 r6:bf1d1146 r5:60000093 r4:00000000
[ 2975.182938] [<c0017270>] (show_stack) from [<c017d038>] (dump_stack+0x84/0xa4)
[ 2975.190177] [<c017cfb4>] (dump_stack) from [<c0021490>] (warn_slowpath_common+0x8c/0xb8)
[ 2975.198283]  r5:00000009 r4:00000000
[ 2975.201882] [<c0021404>] (warn_slowpath_common) from [<c0021560>] (warn_slowpath_null+0x24/0x2c)
[ 2975.210688]  r8:a0000013 r7:c6b3fdd0 r6:bf1c9f2d r5:c6b3fc80 r4:c64d1240
[ 2975.217465] [<c002153c>] (warn_slowpath_null) from [<bf1bd550>] (__brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac])
[ 2975.227681] [<bf1bd4b8>] (__brcmu_pkt_buf_free_skb [brcmfmac]) from [<bf1bde90>] (__brcmf_txfinalize+0x19c/0x1d0 [brcmfmac])
[ 2975.238923]  r8:c04903c8 r7:c6b3fdd0 r6:c64d1240 r5:c7850b00 r4:c6b3fc80
[ 2975.245695] [<bf1bdcf4>] (__brcmf_txfinalize [brcmfmac]) from [<bf1c377c>] (brcmf_msgbuf_txdata+0x53c/0x6e8 [brcmfmac])
[ 2975.256496]  r10:c64d1240 r9:cacd3c50 r8:cacd3c50 r7:c7388180 r6:00000021 r5:00000000
[ 2975.264381]  r4:c7389c00
[ 2975.266941] [<bf1c3390>] (brcmf_msgbuf_txdata [brcmfmac]) from [<bf1c3964>] (brcmf_proto_msgbuf_rx_trigger+0x3c/0xd0 [brcmfmac])
[ 2975.278526]  r10:00000000 r9:c0493882 r8:c738ba64 r7:c0057d98 r6:c7a0c240 r5:00010000
[ 2975.286411]  r4:c7389c00
[ 2975.288971] [<bf1c3928>] (brcmf_proto_msgbuf_rx_trigger [brcmfmac]) from [<bf1c8004>] (brcmf_pcie_isr_thread+0x1c4/0x238 [brcmfmac])
[ 2975.300904]  r7:c0057d98 r6:c7a0c240 r5:00010000 r4:c68fa800
[ 2975.306617] [<bf1c7e40>] (brcmf_pcie_isr_thread [brcmfmac]) from [<c0057dbc>] (irq_thread_fn+0x24/0x3c)
[ 2975.316032]  r9:c0493882 r8:c738ba64 r7:c0057d98 r6:c7a0c240 r5:c738ba40 r4:c738ba40
[ 2975.323834] [<c0057d98>] (irq_thread_fn) from [<c00580a0>] (irq_thread+0xf8/0x1e4)
[ 2975.331420]  r7:c0057d98 r6:c7254000 r5:c738ba40 r4:c7a0c240
[ 2975.337127] [<c0057fa8>] (irq_thread) from [<c00394c4>] (kthread+0xe0/0xf4)
[ 2975.344102]  r10:00000000 r9:00000000 r8:00000000 r7:c0057fa8 r6:c738ba40 r5:00000000
[ 2975.351987]  r4:c738bcc0
[ 2975.354535] [<c00393e4>] (kthread) from [<c00097b8>] (ret_from_fork+0x14/0x3c)
[ 2975.361770]  r7:00000000 r6:00000000 r5:c00393e4 r4:c738bcc0
[ 2975.367473] ---[ end trace 886f614767d73d08 ]---

^ permalink raw reply

* Re: brcmf_txfinalize misses 802.1x packet leading to infinite WARNINGs
From: Rafał Miłecki @ 2016-09-22 11:59 UTC (permalink / raw)
  To: Hante Meuleman, Arend van Spriel, brcm80211-dev-list
  Cc: linux-wireless, Rafał Miłecki
In-Reply-To: <20160920111604.32716-1-zajec5@gmail.com>

And again...

I decided to focus on brcmf_flowring_delete a bit more.

As I can see flowrings are created and removed from time to time, in most cases
they are empty when being deleted. When they are not, things go wrong. In below
log you can see brcmfmac removing flowring that got 8 skb packets.

First some summary, of what was already partially noticed in previous e-mail:
1) brcmf_flowring_delete calls brcmu_pkt_buf_free_skb directly bypassing
   brcmf_txfinalize. It means tracing 802.1x packets and counting TX errors is
   broken.
2) After freeing skb (as the result of brcmf_flowring_delete) there will still
   an IRQ, MSGBUF_TYPE_TX_STATUS and call to the brcmf_txfinalize. That's
   definitely unexpected as brcmf_txfinalize will be operating on skb that was
   already freed.

Now, there is something new that looks even worse. Sometimes brcmf_txfinalize
may be called multiple times for the same skb! Take a close look at my log.
It was called twice for skb c64a5a80. Twice for c64a5480. Twice for c64a5f00.
Then Linux/device rebooted itself due to amount of console messages.

[  242.242012] brcmfmac: [brcmf_msgbuf_process_flow_ring_delete_response -> __brcmf_msgbuf_remove_flowring] flowid:36
[  242.252440] brcmfmac: [__brcmf_msgbuf_remove_flowring -> __brcmf_flowring_delete] flowid:36 ring:c667fd40
[  242.262043] brcmfmac: [__brcmf_flowring_delete -> __brcmu_pkt_buf_free_skb] [ifp:  (null)] Freeing skb:c64a5780 skb->dev:c647a000 skb->dev->name:wlan1-1
[  242.275733] brcmfmac: [__brcmf_flowring_delete -> __brcmu_pkt_buf_free_skb] [ifp:  (null)] Freeing skb:c64a5540 skb->dev:c647a000 skb->dev->name:wlan1-1
[  242.289420] brcmfmac: [__brcmf_flowring_delete -> __brcmu_pkt_buf_free_skb] [ifp:  (null)] Freeing skb:c64a5180 skb->dev:c647a000 skb->dev->name:wlan1-1
[  242.303112] brcmfmac: [__brcmf_flowring_delete -> __brcmu_pkt_buf_free_skb] [ifp:  (null)] Freeing skb:c64a5f00 skb->dev:c647a000 skb->dev->name:wlan1-1
[  242.316802] brcmfmac: [__brcmf_flowring_delete -> __brcmu_pkt_buf_free_skb] [ifp:  (null)] Freeing skb:c64a50c0 skb->dev:c647a000 skb->dev->name:wlan1-1
[  242.330488] brcmfmac: [__brcmf_flowring_delete -> __brcmu_pkt_buf_free_skb] [ifp:  (null)] Freeing skb:c64a5480 skb->dev:c647a000 skb->dev->name:wlan1-1
[  242.344177] brcmfmac: [__brcmf_flowring_delete -> __brcmu_pkt_buf_free_skb] [ifp:  (null)] Freeing skb:c64a5a80 skb->dev:c647a000 skb->dev->name:wlan1-1
[  242.357867] brcmfmac: [__brcmf_flowring_delete -> __brcmu_pkt_buf_free_skb] [ifp:  (null)] Freeing skb:c64a5900 skb->dev:c647a000 skb->dev->name:wlan1-1
[  242.371548] brcmfmac: [__brcmf_msgbuf_remove_flowring -> __brcmf_flowring_delete] count:8

[  242.379758] brcmfmac: [brcmf_msgbuf_process_flow_ring_delete_response -> __brcmf_msgbuf_remove_flowring] flowid:37
[  242.390159] brcmfmac: [__brcmf_msgbuf_remove_flowring -> __brcmf_flowring_delete] flowid:37 ring:c667fc80
[  242.399752] brcmfmac: [__brcmf_msgbuf_remove_flowring -> __brcmf_flowring_delete] count:0

[  242.433468] brcmfmac: [brcmf_msgbuf_flowring_create -> __brcmf_flowring_create] da:78:d6:f0:9b:ba:bc prio:0 ifidx:1
[  242.443974] brcmfmac: [brcmf_msgbuf_flowring_create -> __brcmf_flowring_create] flowid:36
[  242.452580] brcmfmac: [brcmf_msgbuf_process_flow_ring_create_response] flowid:36 status:0x0000

[  242.765056] brcmfmac: [__brcmf_txfinalize -> __brcmu_pkt_buf_free_skb] [ifp:c647a480] ***BUG*** skb:c64a5900 skb->dev:c647a000 skb->dev->name:wlan1-1
[  242.778479] ------------[ cut here ]------------
[  242.783133] WARNING: CPU: 1 PID: 616 at compat-wireless-2016-06-20/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c:70 __brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac]()
[  242.798724] Modules linked in: pppoe ppp_async iptable_nat brcmfmac pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntrack xt_commed
[  242.871057] CPU: 1 PID: 616 Comm: irq/33-brcmf_pc Not tainted 4.4.21 #0
[  242.877686] Hardware name: BCM5301X
[  242.881176] Backtrace: 
[  242.883651] [<c001708c>] (dump_backtrace) from [<c0017288>] (show_stack+0x18/0x1c)
[  242.891230]  r7:00000046 r6:bf1d1146 r5:60000093 r4:00000000
[  242.896946] [<c0017270>] (show_stack) from [<c017d038>] (dump_stack+0x84/0xa4)
[  242.904186] [<c017cfb4>] (dump_stack) from [<c0021490>] (warn_slowpath_common+0x8c/0xb8)
[  242.912293]  r5:00000009 r4:00000000
[  242.915891] [<c0021404>] (warn_slowpath_common) from [<c0021560>] (warn_slowpath_null+0x24/0x2c)
[  242.924696]  r8:a0000013 r7:c647a5d0 r6:bf1c9f2d r5:c647a480 r4:c64a5900
[  242.931468] [<c002153c>] (warn_slowpath_null) from [<bf1bd550>] (__brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac])
[  242.941680] [<bf1bd4b8>] (__brcmu_pkt_buf_free_skb [brcmfmac]) from [<bf1bde90>] (__brcmf_txfinalize+0x19c/0x1d0 [brcmfmac])
[  242.952914]  r8:c04903c8 r7:c647a5d0 r6:c64a5900 r5:c648ca00 r4:c647a480
[  242.959687] [<bf1bdcf4>] (__brcmf_txfinalize [brcmfmac]) from [<bf1c377c>] (brcmf_msgbuf_txdata+0x53c/0x6e8 [brcmfmac])
[  242.970488]  r10:c64a5900 r9:cacd1000 r8:cacd1000 r7:c7395600 r6:0000001e r5:00000000
[  242.978373]  r4:c72bb840
[  242.980934] [<bf1c3390>] (brcmf_msgbuf_txdata [brcmfmac]) from [<bf1c3964>] (brcmf_proto_msgbuf_rx_trigger+0x3c/0xd0 [brcmfmac])
[  242.992517]  r10:00000000 r9:c0493882 r8:c6965064 r7:c0057d98 r6:c7a0c300 r5:00010000
[  243.000403]  r4:c72bb840
[  243.002963] [<bf1c3928>] (brcmf_proto_msgbuf_rx_trigger [brcmfmac]) from [<bf1c8004>] (brcmf_pcie_isr_thread+0x1c4/0x238 [brcmfmac])
[  243.014895]  r7:c0057d98 r6:c7a0c300 r5:00010000 r4:c68ea800
[  243.020608] [<bf1c7e40>] (brcmf_pcie_isr_thread [brcmfmac]) from [<c0057dbc>] (irq_thread_fn+0x24/0x3c)
[  243.030023]  r9:c0493882 r8:c6965064 r7:c0057d98 r6:c7a0c300 r5:c6965040 r4:c6965040
[  243.037826] [<c0057d98>] (irq_thread_fn) from [<c00580a0>] (irq_thread+0xf8/0x1e4)
[  243.045412]  r7:c0057d98 r6:c6920000 r5:c6965040 r4:c7a0c300
[  243.051118] [<c0057fa8>] (irq_thread) from [<c00394c4>] (kthread+0xe0/0xf4)
[  243.058093]  r10:00000000 r9:00000000 r8:00000000 r7:c0057fa8 r6:c6965040 r5:00000000
[  243.065979]  r4:c6965080
[  243.068526] [<c00393e4>] (kthread) from [<c00097b8>] (ret_from_fork+0x14/0x3c)
[  243.075762]  r7:00000000 r6:00000000 r5:c00393e4 r4:c6965080
[  243.081465] ---[ end trace 9caeb81bf124e5fc ]---

[  243.086158] brcmfmac: [__brcmf_txfinalize -> __brcmu_pkt_buf_free_skb] [ifp:c647a480] ***BUG*** skb:c64a5a80 skb->dev:c647a000 skb->dev->name:wlan1-1
[  243.099579] ------------[ cut here ]------------
[  243.104228] WARNING: CPU: 1 PID: 616 at compat-wireless-2016-06-20/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c:70 __brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac]()
[  243.119822] Modules linked in: pppoe ppp_async iptable_nat brcmfmac pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntrack xt_commed
[  243.192157] CPU: 1 PID: 616 Comm: irq/33-brcmf_pc Tainted: G        W       4.4.21 #0
[  243.200004] Hardware name: BCM5301X
[  243.203494] Backtrace: 
[  243.205966] [<c001708c>] (dump_backtrace) from [<c0017288>] (show_stack+0x18/0x1c)
[  243.213548]  r7:00000046 r6:bf1d1146 r5:60000093 r4:00000000
[  243.219263] [<c0017270>] (show_stack) from [<c017d038>] (dump_stack+0x84/0xa4)
[  243.226504] [<c017cfb4>] (dump_stack) from [<c0021490>] (warn_slowpath_common+0x8c/0xb8)
[  243.234610]  r5:00000009 r4:00000000
[  243.238209] [<c0021404>] (warn_slowpath_common) from [<c0021560>] (warn_slowpath_null+0x24/0x2c)
[  243.247005]  r8:a0000013 r7:c647a5d0 r6:bf1c9f2d r5:c647a480 r4:c64a5a80
[  243.253779] [<c002153c>] (warn_slowpath_null) from [<bf1bd550>] (__brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac])
[  243.263997] [<bf1bd4b8>] (__brcmu_pkt_buf_free_skb [brcmfmac]) from [<bf1bde90>] (__brcmf_txfinalize+0x19c/0x1d0 [brcmfmac])
[  243.275232]  r8:c04903c8 r7:c647a5d0 r6:c64a5a80 r5:c648c740 r4:c647a480
[  243.282005] [<bf1bdcf4>] (__brcmf_txfinalize [brcmfmac]) from [<bf1c377c>] (brcmf_msgbuf_txdata+0x53c/0x6e8 [brcmfmac])
[  243.292805]  r10:c64a5a80 r9:cacd1010 r8:cacd1010 r7:c7395600 r6:0000001e r5:00000001
[  243.300691]  r4:c72bb840
[  243.303251] [<bf1c3390>] (brcmf_msgbuf_txdata [brcmfmac]) from [<bf1c3964>] (brcmf_proto_msgbuf_rx_trigger+0x3c/0xd0 [brcmfmac])
[  243.314835]  r10:00000000 r9:c0493882 r8:c6965064 r7:c0057d98 r6:c7a0c300 r5:00010000
[  243.322721]  r4:c72bb840
[  243.325281] [<bf1c3928>] (brcmf_proto_msgbuf_rx_trigger [brcmfmac]) from [<bf1c8004>] (brcmf_pcie_isr_thread+0x1c4/0x238 [brcmfmac])
[  243.337213]  r7:c0057d98 r6:c7a0c300 r5:00010000 r4:c68ea800
[  243.342926] [<bf1c7e40>] (brcmf_pcie_isr_thread [brcmfmac]) from [<c0057dbc>] (irq_thread_fn+0x24/0x3c)
[  243.352341]  r9:c0493882 r8:c6965064 r7:c0057d98 r6:c7a0c300 r5:c6965040 r4:c6965040
[  243.360143] [<c0057d98>] (irq_thread_fn) from [<c00580a0>] (irq_thread+0xf8/0x1e4)
[  243.367729]  r7:c0057d98 r6:c6920000 r5:c6965040 r4:c7a0c300
[  243.373435] [<c0057fa8>] (irq_thread) from [<c00394c4>] (kthread+0xe0/0xf4)
[  243.380411]  r10:00000000 r9:00000000 r8:00000000 r7:c0057fa8 r6:c6965040 r5:00000000
[  243.388296]  r4:c6965080
[  243.390844] [<c00393e4>] (kthread) from [<c00097b8>] (ret_from_fork+0x14/0x3c)
[  243.398080]  r7:00000000 r6:00000000 r5:c00393e4 r4:c6965080
[  243.403782] ---[ end trace 9caeb81bf124e5fd ]---

[  243.416467] brcmfmac: [__brcmf_txfinalize -> __brcmu_pkt_buf_free_skb] [ifp:c647a480] ***BUG*** skb:c64a5480 skb->dev:c647a000 skb->dev->name:wlan1-1
[  243.429895] ------------[ cut here ]------------
[  243.434549] WARNING: CPU: 1 PID: 616 at compat-wireless-2016-06-20/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c:70 __brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac]()
[  243.450139] Modules linked in: pppoe ppp_async iptable_nat brcmfmac pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntrack xt_commed
[  243.522474] CPU: 1 PID: 616 Comm: irq/33-brcmf_pc Tainted: G        W       4.4.21 #0
[  243.530321] Hardware name: BCM5301X
[  243.533811] Backtrace: 
[  243.536285] [<c001708c>] (dump_backtrace) from [<c0017288>] (show_stack+0x18/0x1c)
[  243.543864]  r7:00000046 r6:bf1d1146 r5:60000193 r4:00000000
[  243.549581] [<c0017270>] (show_stack) from [<c017d038>] (dump_stack+0x84/0xa4)
[  243.556821] [<c017cfb4>] (dump_stack) from [<c0021490>] (warn_slowpath_common+0x8c/0xb8)
[  243.564928]  r5:00000009 r4:00000000
[  243.568525] [<c0021404>] (warn_slowpath_common) from [<c0021560>] (warn_slowpath_null+0x24/0x2c)
[  243.577331]  r8:a0000113 r7:c647a5d0 r6:bf1c9f2d r5:c647a480 r4:c64a5480
[  243.584107] [<c002153c>] (warn_slowpath_null) from [<bf1bd550>] (__brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac])
[  243.594324] [<bf1bd4b8>] (__brcmu_pkt_buf_free_skb [brcmfmac]) from [<bf1bde90>] (__brcmf_txfinalize+0x19c/0x1d0 [brcmfmac])
[  243.605566]  r8:c04903c8 r7:c647a5d0 r6:c64a5480 r5:c648c5c0 r4:c647a480
[  243.612339] [<bf1bdcf4>] (__brcmf_txfinalize [brcmfmac]) from [<bf1c377c>] (brcmf_msgbuf_txdata+0x53c/0x6e8 [brcmfmac])
[  243.623140]  r10:c64a5480 r9:cacd1020 r8:cacd1020 r7:c7395600 r6:0000001e r5:00000000
[  243.631025]  r4:c72bb840
[  243.633584] [<bf1c3390>] (brcmf_msgbuf_txdata [brcmfmac]) from [<bf1c3964>] (brcmf_proto_msgbuf_rx_trigger+0x3c/0xd0 [brcmfmac])
[  243.645169]  r10:00000000 r9:c0493882 r8:c6965064 r7:c0057d98 r6:c7a0c300 r5:00010000
[  243.653054]  r4:c72bb840
[  243.655615] [<bf1c3928>] (brcmf_proto_msgbuf_rx_trigger [brcmfmac]) from [<bf1c8004>] (brcmf_pcie_isr_thread+0x1c4/0x238 [brcmfmac])
[  243.667547]  r7:c0057d98 r6:c7a0c300 r5:00010000 r4:c68ea800
[  243.673261] [<bf1c7e40>] (brcmf_pcie_isr_thread [brcmfmac]) from [<c0057dbc>] (irq_thread_fn+0x24/0x3c)
[  243.682675]  r9:c0493882 r8:c6965064 r7:c0057d98 r6:c7a0c300 r5:c6965040 r4:c6965040
[  243.690477] [<c0057d98>] (irq_thread_fn) from [<c00580a0>] (irq_thread+0xf8/0x1e4)
[  243.698063]  r7:c0057d98 r6:c6920000 r5:c6965040 r4:c7a0c300
[  243.703770] [<c0057fa8>] (irq_thread) from [<c00394c4>] (kthread+0xe0/0xf4)
[  243.710746]  r10:00000000 r9:00000000 r8:00000000 r7:c0057fa8 r6:c6965040 r5:00000000
[  243.718632]  r4:c6965080
[  243.721179] [<c00393e4>] (kthread) from [<c00097b8>] (ret_from_fork+0x14/0x3c)
[  243.728415]  r7:00000000 r6:00000000 r5:c00393e4 r4:c6965080
[  243.734117] ---[ end trace 9caeb81bf124e5fe ]---

[  243.738821] brcmfmac: [__brcmf_txfinalize -> __brcmu_pkt_buf_free_skb] [ifp:c647a480] ***BUG*** skb:c64a5f00 skb->dev:c647a000 skb->dev->name:wlan1-1
[  243.752240] ------------[ cut here ]------------
[  243.756892] WARNING: CPU: 1 PID: 616 at compat-wireless-2016-06-20/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c:70 __brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac]()
[  243.772482] Modules linked in: pppoe ppp_async iptable_nat brcmfmac pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntrack xt_commed
[  243.844818] CPU: 1 PID: 616 Comm: irq/33-brcmf_pc Tainted: G        W       4.4.21 #0
[  243.852664] Hardware name: BCM5301X
[  243.856154] Backtrace: 
[  243.858627] [<c001708c>] (dump_backtrace) from [<c0017288>] (show_stack+0x18/0x1c)
[  243.866207]  r7:00000046 r6:bf1d1146 r5:60000193 r4:00000000
[  243.871923] [<c0017270>] (show_stack) from [<c017d038>] (dump_stack+0x84/0xa4)
[  243.879164] [<c017cfb4>] (dump_stack) from [<c0021490>] (warn_slowpath_common+0x8c/0xb8)
[  243.887271]  r5:00000009 r4:00000000
[  243.890869] [<c0021404>] (warn_slowpath_common) from [<c0021560>] (warn_slowpath_null+0x24/0x2c)
[  243.899666]  r8:a0000113 r7:c647a5d0 r6:bf1c9f2d r5:c647a480 r4:c64a5f00
[  243.906439] [<c002153c>] (warn_slowpath_null) from [<bf1bd550>] (__brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac])
[  243.916648] [<bf1bd4b8>] (__brcmu_pkt_buf_free_skb [brcmfmac]) from [<bf1bde90>] (__brcmf_txfinalize+0x19c/0x1d0 [brcmfmac])
[  243.927884]  r8:c04903c8 r7:c647a5d0 r6:c64a5f00 r5:c648cb00 r4:c647a480
[  243.934655] [<bf1bdcf4>] (__brcmf_txfinalize [brcmfmac]) from [<bf1c377c>] (brcmf_msgbuf_txdata+0x53c/0x6e8 [brcmfmac])
[  243.945457]  r10:c64a5f00 r9:cacd1030 r8:cacd1030 r7:c7395600 r6:0000001e r5:00000001
[  243.953343]  r4:c72bb840
[  243.955902] [<bf1c3390>] (brcmf_msgbuf_txdata [brcmfmac]) from [<bf1c3964>] (brcmf_proto_msgbuf_rx_trigger+0x3c/0xd0 [brcmfmac])
[  243.967487]  r10:00000000 r9:c0493882 r8:c6965064 r7:c0057d98 r6:c7a0c300 r5:00010000
[  243.975372]  r4:c72bb840
[  243.977932] [<bf1c3928>] (brcmf_proto_msgbuf_rx_trigger [brcmfmac]) from [<bf1c8004>] (brcmf_pcie_isr_thread+0x1c4/0x238 [brcmfmac])
[  243.989864]  r7:c0057d98 r6:c7a0c300 r5:00010000 r4:c68ea800
[  243.995578] [<bf1c7e40>] (brcmf_pcie_isr_thread [brcmfmac]) from [<c0057dbc>] (irq_thread_fn+0x24/0x3c)
[  244.004984]  r9:c0493882 r8:c6965064 r7:c0057d98 r6:c7a0c300 r5:c6965040 r4:c6965040
[  244.012787] [<c0057d98>] (irq_thread_fn) from [<c00580a0>] (irq_thread+0xf8/0x1e4)
[  244.020373]  r7:c0057d98 r6:c6920000 r5:c6965040 r4:c7a0c300
[  244.026078] [<c0057fa8>] (irq_thread) from [<c00394c4>] (kthread+0xe0/0xf4)
[  244.033055]  r10:00000000 r9:00000000 r8:00000000 r7:c0057fa8 r6:c6965040 r5:00000000
[  244.040939]  r4:c6965080
[  244.043487] [<c00393e4>] (kthread) from [<c00097b8>] (ret_from_fork+0x14/0x3c)
[  244.050723]  r7:00000000 r6:00000000 r5:c00393e4 r4:c6965080
[  244.056426] ---[ end trace 9caeb81bf124e5ff ]---

[  244.061843] brcmfmac: [__brcmf_txfinalize -> __brcmu_pkt_buf_free_skb] [ifp:c647a480] ***BUG*** skb:c64a50c0 skb->dev:c647a000 skb->dev->name:wlan1-1
[  244.075263] ------------[ cut here ]------------
[  244.079922] WARNING: CPU: 1 PID: 616 at compat-wireless-2016-06-20/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c:70 __brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac]()
[  244.095514] Modules linked in: pppoe ppp_async iptable_nat brcmfmac pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntrack xt_commed
[  244.167850] CPU: 1 PID: 616 Comm: irq/33-brcmf_pc Tainted: G        W       4.4.21 #0
[  244.175696] Hardware name: BCM5301X
[  244.179186] Backtrace: 
[  244.181660] [<c001708c>] (dump_backtrace) from [<c0017288>] (show_stack+0x18/0x1c)
[  244.189239]  r7:00000046 r6:bf1d1146 r5:60000193 r4:00000000
[  244.194956] [<c0017270>] (show_stack) from [<c017d038>] (dump_stack+0x84/0xa4)
[  244.202196] [<c017cfb4>] (dump_stack) from [<c0021490>] (warn_slowpath_common+0x8c/0xb8)
[  244.210302]  r5:00000009 r4:00000000
[  244.213901] [<c0021404>] (warn_slowpath_common) from [<c0021560>] (warn_slowpath_null+0x24/0x2c)
[  244.222706]  r8:a0000113 r7:c647a5d0 r6:bf1c9f2d r5:c647a480 r4:c64a50c0
[  244.229476] [<c002153c>] (warn_slowpath_null) from [<bf1bd550>] (__brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac])
[  244.239690] [<bf1bd4b8>] (__brcmu_pkt_buf_free_skb [brcmfmac]) from [<bf1bde90>] (__brcmf_txfinalize+0x19c/0x1d0 [brcmfmac])
[  244.250924]  r8:c04903c8 r7:c647a5d0 r6:c64a50c0 r5:c648c640 r4:c647a480
[  244.257697] [<bf1bdcf4>] (__brcmf_txfinalize [brcmfmac]) from [<bf1c377c>] (brcmf_msgbuf_txdata+0x53c/0x6e8 [brcmfmac])
[  244.268497]  r10:c64a50c0 r9:cacd1040 r8:cacd1040 r7:c7395600 r6:0000001e r5:00000000
[  244.276383]  r4:c72bb840
[  244.278942] [<bf1c3390>] (brcmf_msgbuf_txdata [brcmfmac]) from [<bf1c3964>] (brcmf_proto_msgbuf_rx_trigger+0x3c/0xd0 [brcmfmac])
[  244.290527]  r10:00000000 r9:c0493882 r8:c6965064 r7:c0057d98 r6:c7a0c300 r5:00010000
[  244.298413]  r4:c72bb840
[  244.300972] [<bf1c3928>] (brcmf_proto_msgbuf_rx_trigger [brcmfmac]) from [<bf1c8004>] (brcmf_pcie_isr_thread+0x1c4/0x238 [brcmfmac])
[  244.312905]  r7:c0057d98 r6:c7a0c300 r5:00010000 r4:c68ea800
[  244.318618] [<bf1c7e40>] (brcmf_pcie_isr_thread [brcmfmac]) from [<c0057dbc>] (irq_thread_fn+0x24/0x3c)
[  244.328025]  r9:c0493882 r8:c6965064 r7:c0057d98 r6:c7a0c300 r5:c6965040 r4:c6965040
[  244.335826] [<c0057d98>] (irq_thread_fn) from [<c00580a0>] (irq_thread+0xf8/0x1e4)
[  244.343404]  r7:c0057d98 r6:c6920000 r5:c6965040 r4:c7a0c300
[  244.349112] [<c0057fa8>] (irq_thread) from [<c00394c4>] (kthread+0xe0/0xf4)
[  244.356085]  r10:00000000 r9:00000000 r8:00000000 r7:c0057fa8 r6:c6965040 r5:00000000
[  244.363972]  r4:c6965080
[  244.366519] [<c00393e4>] (kthread) from [<c00097b8>] (ret_from_fork+0x14/0x3c)
[  244.373755]  r7:00000000 r6:00000000 r5:c00393e4 r4:c6965080
[  244.379457] ---[ end trace 9caeb81bf124e600 ]---

[  244.385925] brcmfmac: [__brcmf_txfinalize -> __brcmu_pkt_buf_free_skb] [ifp:c647a480] ***BUG*** skb:c64a5180 skb->dev:c647a000 skb->dev->name:wlan1-1
[  244.399348] ------------[ cut here ]------------
[  244.404009] WARNING: CPU: 1 PID: 616 at compat-wireless-2016-06-20/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c:70 __brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac]()
[  244.419599] Modules linked in: pppoe ppp_async iptable_nat brcmfmac pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntrack xt_commed
[  244.491935] CPU: 1 PID: 616 Comm: irq/33-brcmf_pc Tainted: G        W       4.4.21 #0
[  244.499780] Hardware name: BCM5301X
[  244.503271] Backtrace: 
[  244.505745] [<c001708c>] (dump_backtrace) from [<c0017288>] (show_stack+0x18/0x1c)
[  244.513333]  r7:00000046 r6:bf1d1146 r5:60000193 r4:00000000
[  244.519050] [<c0017270>] (show_stack) from [<c017d038>] (dump_stack+0x84/0xa4)
[  244.526290] [<c017cfb4>] (dump_stack) from [<c0021490>] (warn_slowpath_common+0x8c/0xb8)
[  244.534397]  r5:00000009 r4:00000000
[  244.537994] [<c0021404>] (warn_slowpath_common) from [<c0021560>] (warn_slowpath_null+0x24/0x2c)
[  244.546791]  r8:a0000113 r7:c647a5d0 r6:bf1c9f2d r5:c647a480 r4:c64a5180
[  244.553568] [<c002153c>] (warn_slowpath_null) from [<bf1bd550>] (__brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac])
[  244.563782] [<bf1bd4b8>] (__brcmu_pkt_buf_free_skb [brcmfmac]) from [<bf1bde90>] (__brcmf_txfinalize+0x19c/0x1d0 [brcmfmac])
[  244.575018]  r8:c04903c8 r7:c647a5d0 r6:c64a5180 r5:c648cc40 r4:c647a480
[  244.581790] [<bf1bdcf4>] (__brcmf_txfinalize [brcmfmac]) from [<bf1c377c>] (brcmf_msgbuf_txdata+0x53c/0x6e8 [brcmfmac])
[  244.592590]  r10:c64a5180 r9:cacd1070 r8:cacd1070 r7:c7395600 r6:0000001e r5:00000001
[  244.600477]  r4:c72bb840
[  244.603036] [<bf1c3390>] (brcmf_msgbuf_txdata [brcmfmac]) from [<bf1c3964>] (brcmf_proto_msgbuf_rx_trigger+0x3c/0xd0 [brcmfmac])
[  244.614621]  r10:00000000 r9:c0493882 r8:c6965064 r7:c0057d98 r6:c7a0c300 r5:00010000
[  244.622506]  r4:c72bb840
[  244.625066] [<bf1c3928>] (brcmf_proto_msgbuf_rx_trigger [brcmfmac]) from [<bf1c8004>] (brcmf_pcie_isr_thread+0x1c4/0x238 [brcmfmac])
[  244.636998]  r7:c0057d98 r6:c7a0c300 r5:00010000 r4:c68ea800
[  244.642712] [<bf1c7e40>] (brcmf_pcie_isr_thread [brcmfmac]) from [<c0057dbc>] (irq_thread_fn+0x24/0x3c)
[  244.652126]  r9:c0493882 r8:c6965064 r7:c0057d98 r6:c7a0c300 r5:c6965040 r4:c6965040
[  244.659928] [<c0057d98>] (irq_thread_fn) from [<c00580a0>] (irq_thread+0xf8/0x1e4)
[  244.667506]  r7:c0057d98 r6:c6920000 r5:c6965040 r4:c7a0c300
[  244.673213] [<c0057fa8>] (irq_thread) from [<c00394c4>] (kthread+0xe0/0xf4)
[  244.680188]  r10:00000000 r9:00000000 r8:00000000 r7:c0057fa8 r6:c6965040 r5:00000000
[  244.688074]  r4:c6965080
[  244.690622] [<c00393e4>] (kthread) from [<c00097b8>] (ret_from_fork+0x14/0x3c)
[  244.697857]  r7:00000000 r6:00000000 r5:c00393e4 r4:c6965080
[  244.703559] ---[ end trace 9caeb81bf124e601 ]---

[  244.708277] brcmfmac: [__brcmf_txfinalize -> __brcmu_pkt_buf_free_skb] [ifp:c647a480] ***BUG*** skb:c64a5f00 skb->dev:c647a000 skb->dev->name:wlan1-1
[  244.721699] ------------[ cut here ]------------
[  244.726339] WARNING: CPU: 1 PID: 616 at compat-wireless-2016-06-20/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c:70 __brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac]()
[  244.741934] Modules linked in: pppoe ppp_async iptable_nat brcmfmac pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntrack xt_commed
[  244.814268] CPU: 1 PID: 616 Comm: irq/33-brcmf_pc Tainted: G        W       4.4.21 #0
[  244.822116] Hardware name: BCM5301X
[  244.825605] Backtrace: 
[  244.828073] [<c001708c>] (dump_backtrace) from [<c0017288>] (show_stack+0x18/0x1c)
[  244.835659]  r7:00000046 r6:bf1d1146 r5:60000193 r4:00000000
[  244.841371] [<c0017270>] (show_stack) from [<c017d038>] (dump_stack+0x84/0xa4)
[  244.848607] [<c017cfb4>] (dump_stack) from [<c0021490>] (warn_slowpath_common+0x8c/0xb8)
[  244.856713]  r5:00000009 r4:00000000
[  244.860311] [<c0021404>] (warn_slowpath_common) from [<c0021560>] (warn_slowpath_null+0x24/0x2c)
[  244.869108]  r8:a0000113 r7:c647a5d0 r6:bf1c9f2d r5:c647a480 r4:c64a5f00
[  244.875878] [<c002153c>] (warn_slowpath_null) from [<bf1bd550>] (__brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac])
[  244.886092] [<bf1bd4b8>] (__brcmu_pkt_buf_free_skb [brcmfmac]) from [<bf1bde90>] (__brcmf_txfinalize+0x19c/0x1d0 [brcmfmac])
[  244.897326]  r8:c04903c8 r7:c647a5d0 r6:c64a5f00 r5:c648cb40 r4:c647a480
[  244.904100] [<bf1bdcf4>] (__brcmf_txfinalize [brcmfmac]) from [<bf1c377c>] (brcmf_msgbuf_txdata+0x53c/0x6e8 [brcmfmac])
[  244.914900]  r10:c64a5f00 r9:cacd1080 r8:cacd1080 r7:c7395600 r6:0000001e r5:00000002
[  244.922786]  r4:c72bb840
[  244.925344] [<bf1c3390>] (brcmf_msgbuf_txdata [brcmfmac]) from [<bf1c3964>] (brcmf_proto_msgbuf_rx_trigger+0x3c/0xd0 [brcmfmac])
[  244.936930]  r10:00000000 r9:c0493882 r8:c6965064 r7:c0057d98 r6:c7a0c300 r5:00010000
[  244.944815]  r4:c72bb840
[  244.947375] [<bf1c3928>] (brcmf_proto_msgbuf_rx_trigger [brcmfmac]) from [<bf1c8004>] (brcmf_pcie_isr_thread+0x1c4/0x238 [brcmfmac])
[  244.959307]  r7:c0057d98 r6:c7a0c300 r5:00010000 r4:c68ea800
[  244.965020] [<bf1c7e40>] (brcmf_pcie_isr_thread [brcmfmac]) from [<c0057dbc>] (irq_thread_fn+0x24/0x3c)
[  244.974426]  r9:c0493882 r8:c6965064 r7:c0057d98 r6:c7a0c300 r5:c6965040 r4:c6965040
[  244.982229] [<c0057d98>] (irq_thread_fn) from [<c00580a0>] (irq_thread+0xf8/0x1e4)
[  244.989807]  r7:c0057d98 r6:c6920000 r5:c6965040 r4:c7a0c300
[  244.995512] [<c0057fa8>] (irq_thread) from [<c00394c4>] (kthread+0xe0/0xf4)
[  245.002488]  r10:00000000 r9:00000000 r8:00000000 r7:c0057fa8 r6:c6965040 r5:00000000
[  245.010374]  r4:c6965080
[  245.012920] [<c00393e4>] (kthread) from [<c00097b8>] (ret_from_fork+0x14/0x3c)
[  245.020157]  r7:00000000 r6:00000000 r5:c00393e4 r4:c6965080
[  245.025859] ---[ end trace 9caeb81bf124e602 ]---

[  245.030694] brcmfmac: [__brcmf_txfinalize -> __brcmu_pkt_buf_free_skb] [ifp:c647a480] ***BUG*** skb:c64a5480 skb->dev:c647a000 skb->dev->name:wlan1-1
[  245.044121] ------------[ cut here ]------------
[  245.048770] WARNING: CPU: 1 PID: 616 at compat-wireless-2016-06-20/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c:70 __brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac]()
[  245.064365] Modules linked in: pppoe ppp_async iptable_nat brcmfmac pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntrack xt_commed
[  245.136699] CPU: 1 PID: 616 Comm: irq/33-brcmf_pc Tainted: G        W       4.4.21 #0
[  245.144546] Hardware name: BCM5301X
[  245.148036] Backtrace: 
[  245.150507] [<c001708c>] (dump_backtrace) from [<c0017288>] (show_stack+0x18/0x1c)
[  245.158089]  r7:00000046 r6:bf1d1146 r5:60000193 r4:00000000
[  245.163805] [<c0017270>] (show_stack) from [<c017d038>] (dump_stack+0x84/0xa4)
[  245.171046] [<c017cfb4>] (dump_stack) from [<c0021490>] (warn_slowpath_common+0x8c/0xb8)
[  245.179153]  r5:00000009 r4:00000000
[  245.182752] [<c0021404>] (warn_slowpath_common) from [<c0021560>] (warn_slowpath_null+0x24/0x2c)
[  245.191556]  r8:a0000113 r7:c647a5d0 r6:bf1c9f2d r5:c647a480 r4:c64a5480
[  245.198328] [<c002153c>] (warn_slowpath_null) from [<bf1bd550>] (__brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac])
[  245.208541] [<bf1bd4b8>] (__brcmu_pkt_buf_free_skb [brcmfmac]) from [<bf1bde90>] (__brcmf_txfinalize+0x19c/0x1d0 [brcmfmac])
[  245.219774]  r8:c04903c8 r7:c647a5d0 r6:c64a5480 r5:c648c340 r4:c647a480
[  245.226548] [<bf1bdcf4>] (__brcmf_txfinalize [brcmfmac]) from [<bf1c377c>] (brcmf_msgbuf_txdata+0x53c/0x6e8 [brcmfmac])
[  245.237348]  r10:c64a5480 r9:cacd1090 r8:cacd1090 r7:c7395600 r6:0000001e r5:00000003
[  245.245234]  r4:c72bb840
[  245.247793] [<bf1c3390>] (brcmf_msgbuf_txdata [brcmfmac]) from [<bf1c3964>] (brcmf_proto_msgbuf_rx_trigger+0x3c/0xd0 [brcmfmac])
[  245.259378]  r10:00000000 r9:c0493882 r8:c6965064 r7:c0057d98 r6:c7a0c300 r5:00010000
[  245.267263]  r4:c72bb840
[  245.269823] [<bf1c3928>] (brcmf_proto_msgbuf_rx_trigger [brcmfmac]) from [<bf1c8004>] (brcmf_pcie_isr_thread+0x1c4/0x238 [brcmfmac])
[  245.281757]  r7:c0057d98 r6:c7a0c300 r5:00010000 r4:c68ea800
[  245.287469] [<bf1c7e40>] (brcmf_pcie_isr_thread [brcmfmac]) from [<c0057dbc>] (irq_thread_fn+0x24/0x3c)
[  245.296884]  r9:c0493882 r8:c6965064 r7:c0057d98 r6:c7a0c300 r5:c6965040 r4:c6965040
[  245.304686] [<c0057d98>] (irq_thread_fn) from [<c00580a0>] (irq_thread+0xf8/0x1e4)
[  245.312272]  r7:c0057d98 r6:c6920000 r5:c6965040 r4:c7a0c300
[  245.317979] [<c0057fa8>] (irq_thread) from [<c00394c4>] (kthread+0xe0/0xf4)
[  245.324954]  r10:00000000 r9:00000000 r8:00000000 r7:c0057fa8 r6:c6965040 r5:00000000
[  245.332840]  r4:c6965080
[  245.335387] [<c00393e4>] (kthread) from [<c00097b8>] (ret_from_fork+0x14/0x3c)
[  245.342623]  r7:00000000 r6:00000000 r5:c00393e4 r4:c6965080
[  245.348326] ---[ end trace 9caeb81bf124e603 ]---

[  245.352983] brcmfmac: [__brcmf_txfinalize -> __brcmu_pkt_buf_free_skb] [ifp:c647a480] ***BUG*** skb:c64a5a80 skb->dev:c647a000 skb->dev->name:wlan1-1
[  245.366404] ------------[ cut here ]------------
[  245.371043] WARNING: CPU: 1 PID: 616 at compat-wireless-2016-06-20/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c:70 __brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac]()
[  245.386630] Modules linked in: pppoe ppp_async iptable_nat brcmfmac pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntrack xt_commed
[  245.458964] CPU: 1 PID: 616 Comm: irq/33-brcmf_pc Tainted: G        W       4.4.21 #0
[  245.466811] Hardware name: BCM5301X
[  245.470303] Backtrace: 
[  245.472770] [<c001708c>] (dump_backtrace) from [<c0017288>] (show_stack+0x18/0x1c)
[  245.480356]  r7:00000046 r6:bf1d1146 r5:60000193 r4:00000000
[  245.486068] [<c0017270>] (show_stack) from [<c017d038>] (dump_stack+0x84/0xa4)
[  245.493303] [<c017cfb4>] (dump_stack) from [<c0021490>] (warn_slowpath_common+0x8c/0xb8)
[  245.501410]  r5:00000009 r4:00000000
[  245.505008] [<c0021404>] (warn_slowpath_common) from [<c0021560>] (warn_slowpath_null+0x24/0x2c)
[  245.513813]  r8:a0000113 r7:c647a5d0 r6:bf1c9f2d r5:c647a480 r4:c64a5a80
[  245.520584] [<c002153c>] (warn_slowpath_null) from [<bf1bd550>] (__brcmu_pkt_buf_free_skb+0x98/0x1ec [brcmfmac])
[  245.530797] [<bf1bd4b8>] (__brcmu_pkt_buf_free_skb [brcmfmac]) from [<bf1bde90>] (__brcmf_txfinalize+0x19c/0x1d0 [brcmfmac])
[  245.542032]  r8:c04903c8 r7:c647a5d0 r6:c64a5a80 r5:c648cc00 r4:c647a480
[  245.548805] [<bf1bdcf4>] (__brcmf_txfinalize [brcmfmac]) from [<bf1c377c>] (b�
---
 .../wireless/broadcom/brcm80211/brcmfmac/core.c    | 111 ++++++++++++++++++++-
 .../wireless/broadcom/brcm80211/brcmfmac/core.h    |  20 +++-
 .../broadcom/brcm80211/brcmfmac/flowring.c         |  12 ++-
 .../broadcom/brcm80211/brcmfmac/flowring.h         |   6 +-
 .../broadcom/brcm80211/brcmfmac/fwsignal.c         |  31 +++++-
 .../wireless/broadcom/brcm80211/brcmfmac/msgbuf.c  |  27 ++++-
 .../net/wireless/broadcom/brcm80211/brcmfmac/usb.c |   3 +
 .../wireless/broadcom/brcm80211/brcmutil/utils.c   |   2 +-
 .../broadcom/brcm80211/include/brcmu_utils.h       |   2 +-
 9 files changed, 202 insertions(+), 12 deletions(-)

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
index 8d16f02..42d1fdd 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
@@ -38,6 +38,48 @@
 #include "pcie.h"
 #include "common.h"
 
+#include <linux/sched.h>
+
+static size_t print_time(u64 ts, char *buf)
+{
+	unsigned long rem_nsec;
+
+	rem_nsec = do_div(ts, 1000000000);
+
+	if (!buf)
+		return snprintf(NULL, 0, "[%5lu.000000]", (unsigned long)ts);
+
+	return sprintf(buf, "[%5lu.%06lu]",
+		       (unsigned long)ts, rem_nsec / 1000);
+}
+
+/* Free the driver packet. Free the tag if present */
+void __brcmu_pkt_buf_free_skb(const char *c0, struct brcmf_if *ifp, struct sk_buff *skb)
+{
+	if (!skb)
+		return;
+
+	if (ifp) {
+		struct pend_skb *e;
+		unsigned long flags;
+
+		spin_lock_irqsave(&ifp->pend_lock, flags);
+		list_for_each_entry(e, &ifp->pend_skbs, list) {
+			if (e->skb == skb) {
+				pr_info("[%s -> %s] [ifp:%p] ***BUG*** skb:%p skb->dev:%p skb->dev->name:%s\n", c0, __func__, ifp, e->skb, e->skb->dev, e->skb->dev ? e->skb->dev->name : "---");
+				WARN_ON(1);
+				break;
+			}
+		}
+		spin_unlock_irqrestore(&ifp->pend_lock, flags);
+	} else if (strcmp(c0, "brcmf_msgbuf_query_dcmd")) {
+		pr_info("[%s -> %s] [ifp:%p] Freeing skb:%p skb->dev:%p skb->dev->name:%s\n", c0, __func__, ifp, skb, skb->dev, skb->dev ? skb->dev->name : "---");
+	}
+
+	WARN_ON(skb->next);
+	dev_kfree_skb_any(skb);
+}
+
 #define MAX_WAIT_FOR_8021X_TX			msecs_to_jiffies(950)
 
 #define BRCMF_BSSIDX_INVALID			-1
@@ -250,6 +292,21 @@ static netdev_tx_t brcmf_netdev_start_xmit(struct sk_buff *skb,
 	if (eh->h_proto == htons(ETH_P_PAE))
 		atomic_inc(&ifp->pend_8021x_cnt);
 
+	{
+		struct pend_skb *e;
+		unsigned long flags;
+
+		e = kzalloc(sizeof(*e), GFP_KERNEL);
+		e->skb = skb;
+		e->start_time = local_clock();
+		e->start_jiffies = jiffies;
+		e->pae = eh->h_proto == htons(ETH_P_PAE);
+
+		spin_lock_irqsave(&ifp->pend_lock, flags);
+		list_add_tail(&e->list, &ifp->pend_skbs);
+		spin_unlock_irqrestore(&ifp->pend_lock, flags);
+	}
+
 	ret = brcmf_fws_process_skb(ifp, skb);
 
 done:
@@ -333,7 +390,7 @@ static int brcmf_rx_hdrpull(struct brcmf_pub *drvr, struct sk_buff *skb,
 	if (ret || !(*ifp) || !(*ifp)->ndev) {
 		if (ret != -ENODATA && *ifp)
 			(*ifp)->stats.rx_errors++;
-		brcmu_pkt_buf_free_skb(skb);
+		__brcmu_pkt_buf_free_skb(__func__, *ifp, skb);
 		return -ENODATA;
 	}
 
@@ -378,7 +435,7 @@ void brcmf_rx_event(struct device *dev, struct sk_buff *skb)
 	brcmu_pkt_buf_free_skb(skb);
 }
 
-void brcmf_txfinalize(struct brcmf_if *ifp, struct sk_buff *txp, bool success)
+void __brcmf_txfinalize(const char *c0, struct brcmf_if *ifp, struct sk_buff *txp, bool success)
 {
 	struct ethhdr *eh;
 	u16 type;
@@ -386,8 +443,38 @@ void brcmf_txfinalize(struct brcmf_if *ifp, struct sk_buff *txp, bool success)
 	eh = (struct ethhdr *)(txp->data);
 	type = ntohs(eh->h_proto);
 
+	{
+		struct pend_skb *e, *tmp;
+		//u64 now_time = local_clock();
+		unsigned long now_jiffies = jiffies;
+		unsigned long flags;
+
+		spin_lock_irqsave(&ifp->pend_lock, flags);
+		list_for_each_entry_safe(e, tmp, &ifp->pend_skbs, list) {
+			if (e->skb == txp) {
+				if (e->timedout) {
+					char start[32], commit[32];
+
+					print_time(e->start_time, start);
+					print_time(e->commit_time, commit);
+
+					pr_info("[%s -> %s] Finally finalizing skb:%p skb->dev:%p skb->dev->name:%s (start_time:%s; commit_time:%s)\n",
+						c0, __func__,
+						e->skb, e->skb->dev, e->skb->dev ? e->skb->dev->name : "---",
+						start, commit);
+				}
+
+				list_del(&e->list);
+				kfree(e);
+				break;
+			}
+		}
+		spin_unlock_irqrestore(&ifp->pend_lock, flags);
+	}
+
 	if (type == ETH_P_PAE) {
 		atomic_dec(&ifp->pend_8021x_cnt);
+
 		if (waitqueue_active(&ifp->pend_8021x_wait))
 			wake_up(&ifp->pend_8021x_wait);
 	}
@@ -477,6 +564,9 @@ static int brcmf_netdev_open(struct net_device *ndev)
 
 	atomic_set(&ifp->pend_8021x_cnt, 0);
 
+	INIT_LIST_HEAD(&ifp->pend_skbs);
+	spin_lock_init(&ifp->pend_lock);
+
 	/* Get current TOE mode from dongle */
 	if (brcmf_fil_iovar_int_get(ifp, "toe_ol", &toe_ol) >= 0
 	    && (toe_ol & TOE_TX_CSUM_OL) != 0)
@@ -1169,7 +1259,22 @@ int brcmf_netdev_wait_pend8021x(struct brcmf_if *ifp)
 				 !brcmf_get_pend_8021x_cnt(ifp),
 				 MAX_WAIT_FOR_8021X_TX);
 
-	WARN_ON(!err);
+	//WARN_ON(!err);
+	if (!err)
+		pr_info("[%s] ***TIMEOUT WARNING*** ifp:%p brcmf_ifname(ifp):%s brcmf_get_pend_8021x_cnt(ifp):%d\n", __func__, ifp, brcmf_ifname(ifp), brcmf_get_pend_8021x_cnt(ifp));
+	if (!list_empty(&ifp->pend_skbs)) {
+		struct pend_skb *e;
+		unsigned long flags;
+
+		spin_lock_irqsave(&ifp->pend_lock, flags);
+		list_for_each_entry(e, &ifp->pend_skbs, list) {
+			if (e->pae) {
+				e->timedout = true;
+				pr_info("[%s] Pending 802.1x skb:%p skb->dev:%p skb->dev->name:%s\n", __func__, e->skb, e->skb->dev, e->skb->dev ? e->skb->dev->name : "---");
+			}
+		}
+		spin_unlock_irqrestore(&ifp->pend_lock, flags);
+	}
 
 	return !err;
 }
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h
index 8fa34ca..208f0d2 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h
@@ -50,6 +50,9 @@
 
 #define NDOL_MAX_ENTRIES	8
 
+void __brcmu_pkt_buf_free_skb(const char *c0, struct brcmf_if *ifp, struct sk_buff *skb);
+#define brcmu_pkt_buf_free_skb(skb)	__brcmu_pkt_buf_free_skb(__func__, ifp, skb)
+
 /**
  * struct brcmf_ampdu_rx_reorder - AMPDU receive reorder info
  *
@@ -169,6 +172,16 @@ enum brcmf_netif_stop_reason {
 	BRCMF_NETIF_STOP_REASON_DISCONNECTED = BIT(2)
 };
 
+struct pend_skb {
+	struct sk_buff *skb;
+	u64 start_time;
+	unsigned long start_jiffies;
+	u64 commit_time;
+	bool timedout;
+	bool pae;
+	struct list_head list;
+};
+
 /**
  * struct brcmf_if - interface control information.
  *
@@ -203,9 +216,13 @@ struct brcmf_if {
 	u8 netif_stop;
 	spinlock_t netif_stop_lock;
 	atomic_t pend_8021x_cnt;
+	bool pend_8021x_ready;
 	wait_queue_head_t pend_8021x_wait;
 	struct in6_addr ipv6_addr_tbl[NDOL_MAX_ENTRIES];
 	u8 ipv6addr_idx;
+
+	struct list_head pend_skbs;
+	spinlock_t pend_lock;
 };
 
 int brcmf_netdev_wait_pend8021x(struct brcmf_if *ifp);
@@ -219,7 +236,8 @@ struct brcmf_if *brcmf_add_if(struct brcmf_pub *drvr, s32 bsscfgidx, s32 ifidx,
 void brcmf_remove_interface(struct brcmf_if *ifp, bool rtnl_locked);
 void brcmf_txflowblock_if(struct brcmf_if *ifp,
 			  enum brcmf_netif_stop_reason reason, bool state);
-void brcmf_txfinalize(struct brcmf_if *ifp, struct sk_buff *txp, bool success);
+void __brcmf_txfinalize(const char *c0, struct brcmf_if *ifp, struct sk_buff *txp, bool success);
+#define brcmf_txfinalize(ifp, txp, success)	__brcmf_txfinalize(__func__, ifp, txp, success)
 void brcmf_netif_rx(struct brcmf_if *ifp, struct sk_buff *skb);
 void brcmf_net_setcarrier(struct brcmf_if *ifp, bool on);
 void brcmf_c_set_joinpref_default(struct brcmf_if *ifp);
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
index 7e269f9..56be839 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
@@ -108,7 +108,7 @@ u32 brcmf_flowring_lookup(struct brcmf_flowring *flow, u8 da[ETH_ALEN],
 }
 
 
-u32 brcmf_flowring_create(struct brcmf_flowring *flow, u8 da[ETH_ALEN],
+u32 __brcmf_flowring_create(const char *c0, struct brcmf_flowring *flow, u8 da[ETH_ALEN],
 			  u8 prio, u8 ifidx)
 {
 	struct brcmf_flowring_ring *ring;
@@ -120,6 +120,7 @@ u32 brcmf_flowring_create(struct brcmf_flowring *flow, u8 da[ETH_ALEN],
 	bool sta;
 	u8 *mac;
 
+	pr_info("[%s -> %s] da:%pM prio:%d ifidx:%d\n", c0, __func__, da, prio, ifidx);
 	fifo = brcmf_flowring_prio2fifo[prio];
 	sta = (flow->addr_mode[ifidx] == ADDR_INDIRECT);
 	mac = da;
@@ -167,6 +168,7 @@ u32 brcmf_flowring_create(struct brcmf_flowring *flow, u8 da[ETH_ALEN],
 		skb_queue_head_init(&ring->skblist);
 		flow->rings[i] = ring;
 
+		pr_info("[%s -> %s] flowid:%d\n", c0, __func__, i);
 		return i;
 	}
 	return BRCMF_FLOWRING_INVALID_ID;
@@ -232,12 +234,14 @@ static void brcmf_flowring_block(struct brcmf_flowring *flow, u16 flowid,
 }
 
 
-void brcmf_flowring_delete(struct brcmf_flowring *flow, u16 flowid)
+void __brcmf_flowring_delete(const char *c0, struct brcmf_flowring *flow, u16 flowid)
 {
 	struct brcmf_flowring_ring *ring;
 	u16 hash_idx;
 	struct sk_buff *skb;
+	int count = 0;
 
+	pr_info("[%s -> %s] flowid:%d ring:%p\n", c0, __func__, flowid, flow->rings[flowid]);
 	ring = flow->rings[flowid];
 	if (!ring)
 		return;
@@ -249,9 +253,13 @@ void brcmf_flowring_delete(struct brcmf_flowring *flow, u16 flowid)
 
 	skb = skb_dequeue(&ring->skblist);
 	while (skb) {
+		struct brcmf_if *ifp = NULL;
+
 		brcmu_pkt_buf_free_skb(skb);
 		skb = skb_dequeue(&ring->skblist);
+		count++;
 	}
+	pr_info("[%s -> %s] count:%d\n", c0, __func__, count);
 
 	kfree(ring);
 }
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h
index 068e68d..8d82a57 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h
@@ -59,9 +59,11 @@ struct brcmf_flowring {
 
 u32 brcmf_flowring_lookup(struct brcmf_flowring *flow, u8 da[ETH_ALEN],
 			  u8 prio, u8 ifidx);
-u32 brcmf_flowring_create(struct brcmf_flowring *flow, u8 da[ETH_ALEN],
+u32 __brcmf_flowring_create(const char *c0, struct brcmf_flowring *flow, u8 da[ETH_ALEN],
 			  u8 prio, u8 ifidx);
-void brcmf_flowring_delete(struct brcmf_flowring *flow, u16 flowid);
+#define brcmf_flowring_create(flow, da, prio, ifidx)	__brcmf_flowring_create(__func__, flow, da, prio, ifidx)
+void __brcmf_flowring_delete(const char *c0, struct brcmf_flowring *flow, u16 flowid);
+#define brcmf_flowring_delete(flow, flowid)	__brcmf_flowring_delete(__func__, flow, flowid)
 void brcmf_flowring_open(struct brcmf_flowring *flow, u16 flowid);
 u8 brcmf_flowring_tid(struct brcmf_flowring *flow, u16 flowid);
 u32 brcmf_flowring_enqueue(struct brcmf_flowring *flow, u16 flowid,
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c
index 9f9024a..5ab0615 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c
@@ -38,6 +38,8 @@
 #include "proto.h"
 #include "common.h"
 
+#include <linux/sched.h>
+
 /**
  * DOC: Firmware Signalling
  *
@@ -590,6 +592,8 @@ static void brcmf_fws_psq_flush(struct brcmf_fws_info *fws, struct pktq *q,
 	for (prec = 0; prec < q->num_prec; prec++) {
 		skb = brcmu_pktq_pdeq_match(q, prec, matchfn, &ifidx);
 		while (skb) {
+			struct brcmf_if *ifp = NULL;
+
 			brcmu_pkt_buf_free_skb(skb);
 			skb = brcmu_pktq_pdeq_match(q, prec, matchfn, &ifidx);
 		}
@@ -697,6 +701,8 @@ static void brcmf_fws_hanger_cleanup(struct brcmf_fws_info *fws,
 		    s == BRCMF_FWS_HANGER_ITEM_STATE_INUSE_SUPPRESSED) {
 			skb = h->items[i].pkt;
 			if (fn == NULL || fn(skb, &ifidx)) {
+				struct brcmf_if *ifp = NULL;
+
 				/* suppress packets freed from psq */
 				if (s == BRCMF_FWS_HANGER_ITEM_STATE_INUSE)
 					brcmu_pkt_buf_free_skb(skb);
@@ -845,6 +851,8 @@ static void brcmf_fws_bus_txq_cleanup(struct brcmf_fws_info *fws,
 	for (prec = 0; prec < txq->num_prec; prec++) {
 		skb = brcmu_pktq_pdeq_match(txq, prec, fn, &ifidx);
 		while (skb) {
+			struct brcmf_if *ifp = NULL;
+
 			hslot = brcmf_skb_htod_tag_get_field(skb, HSLOT);
 			hi = &fws->hanger.items[hslot];
 			WARN_ON(skb != hi->pkt);
@@ -971,8 +979,11 @@ static bool brcmf_fws_tim_update(struct brcmf_fws_info *fws,
 		brcmf_fws_unlock(fws);
 		err = brcmf_proto_txdata(fws->drvr, ifidx, data_offset, skb);
 		brcmf_fws_lock(fws);
-		if (err)
+		if (err) {
+			struct brcmf_if *ifp = NULL;
+
 			brcmu_pkt_buf_free_skb(skb);
+		}
 		return true;
 	}
 	return false;
@@ -2056,6 +2067,23 @@ static int brcmf_fws_commit_skb(struct brcmf_fws_info *fws, int fifo,
 		(void)brcmf_proto_hdrpull(fws->drvr, false, skb, NULL);
 		goto rollback;
 	}
+	{
+		struct brcmf_if *ifp = brcmf_get_ifp(fws->drvr, brcmf_skb_if_flags_get_field(skb, INDEX));
+
+		if (ifp) {
+			struct pend_skb *e;
+			unsigned long flags;
+
+			spin_lock_irqsave(&ifp->pend_lock, flags);
+			list_for_each_entry(e, &ifp->pend_skbs, list) {
+				if (e->skb == skb) {
+					e->commit_time = local_clock();
+					break;
+				}
+			}
+			spin_unlock_irqrestore(&ifp->pend_lock, flags);
+		}
+	}
 
 	fws->stats.pkt2bus++;
 	fws->stats.send_pkts[fifo]++;
@@ -2454,6 +2482,7 @@ bool brcmf_fws_fc_active(struct brcmf_fws_info *fws)
 
 void brcmf_fws_bustxfail(struct brcmf_fws_info *fws, struct sk_buff *skb)
 {
+	struct brcmf_if *ifp = NULL;
 	u32 hslot;
 
 	if (brcmf_skbcb(skb)->state == BRCMF_FWS_SKBSTATE_TIM) {
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
index 2b9a2bc..07ae721 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
@@ -34,6 +34,8 @@
 #include "bus.h"
 #include "tracepoint.h"
 
+#include <linux/sched.h>
+
 
 #define MSGBUF_IOCTL_RESP_TIMEOUT		msecs_to_jiffies(2000)
 
@@ -392,6 +394,8 @@ brcmf_msgbuf_release_array(struct device *dev,
 	count = 0;
 	do {
 		if (array[count].allocated.counter) {
+			struct brcmf_if *ifp = NULL;
+
 			pktid = &array[count];
 			dma_unmap_single(dev, pktid->physaddr,
 					 pktid->skb->len - pktid->data_offset,
@@ -483,6 +487,7 @@ static int brcmf_msgbuf_query_dcmd(struct brcmf_pub *drvr, int ifidx,
 {
 	struct brcmf_msgbuf *msgbuf = (struct brcmf_msgbuf *)drvr->proto->pd;
 	struct sk_buff *skb = NULL;
+	struct brcmf_if *ifp = NULL;
 	int timeout;
 	int err;
 
@@ -532,11 +537,12 @@ static void brcmf_msgbuf_rxreorder(struct brcmf_if *ifp, struct sk_buff *skb)
 }
 
 static void
-brcmf_msgbuf_remove_flowring(struct brcmf_msgbuf *msgbuf, u16 flowid)
+__brcmf_msgbuf_remove_flowring(const char *c0, struct brcmf_msgbuf *msgbuf, u16 flowid)
 {
 	u32 dma_sz;
 	void *dma_buf;
 
+	pr_info("[%s -> %s] flowid:%d\n", c0, __func__, flowid);
 	brcmf_dbg(MSGBUF, "Removing flowring %d\n", flowid);
 
 	dma_sz = BRCMF_H2D_TXFLOWRING_MAX_ITEM * BRCMF_H2D_TXFLOWRING_ITEMSIZE;
@@ -546,6 +552,7 @@ brcmf_msgbuf_remove_flowring(struct brcmf_msgbuf *msgbuf, u16 flowid)
 
 	brcmf_flowring_delete(msgbuf->flow, flowid);
 }
+#define brcmf_msgbuf_remove_flowring(msgbuf, flowid)	__brcmf_msgbuf_remove_flowring(__func__, msgbuf, flowid)
 
 
 static struct brcmf_msgbuf_work_item *
@@ -747,6 +754,23 @@ static void brcmf_msgbuf_txflow(struct brcmf_msgbuf *msgbuf, u16 flowid)
 			brcmf_commonring_write_complete(commonring);
 			count = 0;
 		}
+		{
+			struct brcmf_if *ifp = brcmf_get_ifp(msgbuf->drvr, tx_msghdr->msg.ifidx);
+
+			if (ifp) {
+				struct pend_skb *e;
+				unsigned long flags;
+
+				spin_lock_irqsave(&ifp->pend_lock, flags);
+				list_for_each_entry(e, &ifp->pend_skbs, list) {
+					if (e->skb == skb) {
+						e->commit_time = local_clock();
+						break;
+					}
+				}
+				spin_unlock_irqrestore(&ifp->pend_lock, flags);
+			}
+		}
 	}
 	if (count)
 		brcmf_commonring_write_complete(commonring);
@@ -1177,6 +1201,7 @@ brcmf_msgbuf_process_flow_ring_create_response(struct brcmf_msgbuf *msgbuf,
 	flowid -= BRCMF_NROF_H2D_COMMON_MSGRINGS;
 	status =  le16_to_cpu(flowring_create_resp->compl_hdr.status);
 
+	pr_info("[%s] flowid:%d status:0x%04x\n", __func__, flowid, status);
 	if (status) {
 		brcmf_err("Flowring creation failed, code %d\n", status);
 		brcmf_msgbuf_remove_flowring(msgbuf, flowid);
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
index 2f978a3..edbe353 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
@@ -498,6 +498,7 @@ static void brcmf_usb_rx_complete(struct urb *urb)
 {
 	struct brcmf_usbreq  *req = (struct brcmf_usbreq *)urb->context;
 	struct brcmf_usbdev_info *devinfo = req->devinfo;
+	struct brcmf_if *ifp = NULL;
 	struct sk_buff *skb;
 
 	brcmf_dbg(USB, "Enter, urb->status=%d\n", urb->status);
@@ -548,6 +549,8 @@ static void brcmf_usb_rx_refill(struct brcmf_usbdev_info *devinfo,
 
 	ret = usb_submit_urb(req->urb, GFP_ATOMIC);
 	if (ret) {
+		struct brcmf_if *ifp = NULL;
+
 		brcmf_usb_del_fromq(devinfo, req);
 		brcmu_pkt_buf_free_skb(req->skb);
 		req->skb = NULL;
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmutil/utils.c b/drivers/net/wireless/broadcom/brcm80211/brcmutil/utils.c
index 0543607..bf525b7 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmutil/utils.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmutil/utils.c
@@ -49,7 +49,7 @@ void brcmu_pkt_buf_free_skb(struct sk_buff *skb)
 	WARN_ON(skb->next);
 	dev_kfree_skb_any(skb);
 }
-EXPORT_SYMBOL(brcmu_pkt_buf_free_skb);
+//EXPORT_SYMBOL(brcmu_pkt_buf_free_skb);
 
 /*
  * osl multiple-precedence packet queue
diff --git a/drivers/net/wireless/broadcom/brcm80211/include/brcmu_utils.h b/drivers/net/wireless/broadcom/brcm80211/include/brcmu_utils.h
index 4196952..7bd705d 100644
--- a/drivers/net/wireless/broadcom/brcm80211/include/brcmu_utils.h
+++ b/drivers/net/wireless/broadcom/brcm80211/include/brcmu_utils.h
@@ -126,7 +126,7 @@ struct sk_buff *brcmu_pktq_pdeq_match(struct pktq *pq, int prec,
 
 /* packet primitives */
 struct sk_buff *brcmu_pkt_buf_get_skb(uint len);
-void brcmu_pkt_buf_free_skb(struct sk_buff *skb);
+//void brcmu_pkt_buf_free_skb(struct sk_buff *skb);
 
 /* Empty the queue at particular precedence level */
 /* callback function fn(pkt, arg) returns true if pkt belongs to if */
-- 
2.9.3

^ permalink raw reply related

* rtl8192ce:rtl92ce_get_hw_reg():<0-0> switch case not processed
From: Jean Delvare @ 2016-09-22  9:51 UTC (permalink / raw)
  To: Larry Finger, Chaoming Li; +Cc: linux-wireless

Hello,

I bought an Asus PCE-N10 PCIe Wi-Fi N card to install in my wife's
computer. This morning it stopped working suddenly. Investigating the
kernel logs, the following error message caught my eye:

rtl8192ce:rtl92ce_get_hw_reg():<0-0> switch case not processed

It was printed twice, 3.5 hours apart, the second time at the moment
the network stopped working. I guess this is not supposed to happen.
What additional information can I provide to help you debug the issue?
That's the device:

03:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. RTL8188CE 802.11b/g/n WiFi Adapter [10ec:8176] (rev 01)
	Subsystem: ASUSTeK Computer Inc. Device [1043:84b5]
	Flags: bus master, fast devsel, latency 0, IRQ 17
	I/O ports at e800 [size=256]
	Memory at febfc000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: <access denied>
	Kernel driver in use: rtl8192ce
	Kernel modules: rtl8192ce

Kernel version is 4.5.4-1-default x86_64 (openSUSE Tumbleweed.)

Reloading the rtl8192ce module and restarting the network service got
everything back up.

Thanks,
-- 
Jean Delvare
SUSE L3 Support

^ permalink raw reply

* Re: TCP data throughput for BCM43362
From: Arend Van Spriel @ 2016-09-22  8:09 UTC (permalink / raw)
  To: Jörg Krause, Franky Lin
  Cc: Brett Rudley, brcm80211-dev-list, Hante Meuleman, Franky Lin,
	linux-wireless, Arend van Spriel
In-Reply-To: <1474266984.7448.1.camel@embedded.rocks>

On 19-9-2016 8:36, Jörg Krause wrote:
> Hi Arend,
> 
> On Wed, 2016-09-14 at 20:13 +0200, Arend Van Spriel wrote:
>> On 14-9-2016 15:41, Jörg Krause wrote:
>>>
>>> Hi,
>>>
>>> On Mon, 2016-08-29 at 23:15 +0200, Jörg Krause wrote:
>>>>
>>>> On Mi, 2016-08-24 at 20:35 +0200, Arend Van Spriel wrote:
>>>>>
>>>>>
>>>>> On 22-8-2016 15:37, Jörg Krause wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>> Hi all,
>>>>>>
>>>>>> I am back from vacation and I'd like to do more
>>>>>> investigations
>>>>>> about
>>>>>> this issue. Please see my comments below...
>>>>>>
>>>>>> On Sun, 2016-08-07 at 13:41 +0200, Arend van Spriel wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 06-08-16 16:12, Jörg Krause wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Hi all,
>>>>>>>
>>>>>>> A bit weird email format making it a bit hard to determine
>>>>>>> where
>>>>>>> your
>>>>>>> last reply starts...
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Fr, 2016-08-05 at 17:56 -0700, Franky Lin wrote:
>>>>>>>>
>>>>>>>> On Fri, Aug 5, 2016 at 2:29 PM, Jörg Krause <joerg.krause
>>>>>>>> @emb
>>>>>>>> ed
>>>>>>>> ded.
>>>>>>>> ro
>>>>>>>> cks>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Am 5. August 2016 23:01:10 MESZ, schrieb Arend Van Spriel
>>>>>>>> <
>>>>>>>> arend.vanspriel@broadcom.com>:
>>>>>>>>
>>>>>>>>
>>>>>>>> Op 5 aug. 2016 22:46 schreef "Jörg Krause"
>>>>>>>> <joerg.krause@embedded.rocks>:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> I'm using a custom ARM board with an BCM43362 wifi chip
>>>>>>>> from
>>>>>>>>
>>>>>>>> Broadcom.
>>>>>>>>
>>>>>>>>
>>>>>>>> The wifi chip is attached via SDIO to the controller with
>>>>>>>> a
>>>>>>>> clock of
>>>>>>>> 48MHz. Linux kernel version is 4.7.
>>>>>>>>
>>>>>>>> When measuring the network bandwidth with iperf3 I get a
>>>>>>>> bandwith of
>>>>>>>> only around 5 Mbps. I found a similar thread at the
>>>>>>>> Broadcom
>>>>>>>>
>>>>>>>> community
>>>>>>>>
>>>>>>>>
>>>>>>>> [1] where the test was done with a M4 CPU + BCM43362 and
>>>>>>>> an
>>>>>>>> average
>>>>>>>> result of 3.3 Mbps.
>>>>>>>>
>>>>>>>> Interestingly, a BCM43362 Wi-Fi Dev Kit [2] notes a TCP
>>>>>>>> data
>>>>>>>>
>>>>>>>> throughput
>>>>>>>>
>>>>>>>>
>>>>>>>> greater than 20 Mbps.
>>>>>>>>
>>>>>>>> Why is the throughput I measured much lower? Note that I
>>>>>>>> measured
>>>>>>>> several times with almost no neighbor devices or
>>>>>>>> networks.
>>>>>>>>
>>>>>>>> This is a test sample measured with iperf3:
>>>>>>>>
>>>>>>>>     $ iperf3 -c 192.168.2.1 -i 1 -t 10
>>>>>>>>     Connecting to host 192.168.2.1, port 5201
>>>>>>>>     [  4] local 192.168.2.155 port 36442 connected to
>>>>>>>> 192.168.2.1
>>>>>>>>
>>>>>>>> port
>>>>>>>>
>>>>>>>>
>>>>>>>>     5201
>>>>>>>>     [ ID]
>>>>>>>> Interval           Transfer     Bandwidth       Retr  Cwn
>>>>>>>> d
>>>>>>>>     [  4]   0.00-1.00   sec   615 KBytes  5.04
>>>>>>>> Mbits/sec    0   56.6
>>>>>>>>     KBytes
>>>>>>>>     [  4]   1.00-2.00   sec   622 KBytes  5.10
>>>>>>>> Mbits/sec    0   84.8
>>>>>>>>     KBytes
>>>>>>>>     [  4]   2.00-3.00   sec   625 KBytes  5.12
>>>>>>>> Mbits/sec    0    113
>>>>>>>>     KBytes
>>>>>>>>     [  4]   3.00-4.00   sec   571 KBytes  4.68
>>>>>>>> Mbits/sec    0    140
>>>>>>>>     KBytes
>>>>>>>>     [  4]   4.00-5.00   sec   594 KBytes  4.87
>>>>>>>> Mbits/sec    0    167
>>>>>>>>     KBytes
>>>>>>>>     [  4]   5.00-6.00   sec   628 KBytes  5.14
>>>>>>>> Mbits/sec    0    195
>>>>>>>>     KBytes
>>>>>>>>     [  4]   6.00-7.00   sec   619 KBytes  5.07
>>>>>>>> Mbits/sec    0    202
>>>>>>>>     KBytes
>>>>>>>>     [  4]   7.00-8.00   sec   608 KBytes  4.98
>>>>>>>> Mbits/sec    0    202
>>>>>>>>     KBytes
>>>>>>>>     [  4]   8.00-9.00   sec   602 KBytes  4.93
>>>>>>>> Mbits/sec    0    202
>>>>>>>>     KBytes
>>>>>>>>     [  4]   9.00-10.00  sec   537 KBytes  4.40
>>>>>>>> Mbits/sec    0    202
>>>>>>>>     KBytes
>>>>>>>>     - - - - - - - - - - - - - - - - - - - - - - - - -
>>>>>>>>     [ ID]
>>>>>>>> Interval           Transfer     Bandwidth       Retr
>>>>>>>>     [  4]   0.00-10.00  sec  5.88 MBytes  4.93
>>>>>>>>     Mbits/sec    0             sender
>>>>>>>>     [  4]   0.00-10.00  sec  5.68 MBytes  4.76
>>>>>>>>     Mbits/sec                  receiver
>>>>>>>>
>>>>>>>>
>>>>>>>> Not overly familiar with iperf3. Do these lines mean you
>>>>>>>> are
>>>>>>>> doing
>>>>>>>> bidirectional test, ie. upstream and downstream at the
>>>>>>>> same
>>>>>>>> time.
>>>>>>>> Another
>>>>>>>> thing affecting tput could be power-save.
>>>>>>>>
>>>>>>>>
>>>>>>>> No, iperf3 does not support bidrectional test. Power-save 
>>>>>>>> is
>>>>>>>> turned
>>>>>>>> off.
>>>>>>>>
>>>>>>>> What does iw link say?
>>>>>>>>
>>>>>>>
>>>>>>> but I guess it starts here!
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> I compared the results with a Cubietruck I have:
>>>>>>>>
>>>>>>>> # iperf3 -s
>>>>>>>> -------------------------------------------------------
>>>>>>>> ----
>>>>>>>> Server listening on 5201
>>>>>>>> -------------------------------------------------------
>>>>>>>> ----
>>>>>>>> Accepted connection from 192.168.178.46, port 42906
>>>>>>>> [  5] local 192.168.178.38 port 5201 connected to
>>>>>>>> 192.168.178.46
>>>>>>>> port
>>>>>>>> 42908
>>>>>>>> [ ID] Interval           Transfer     Bandwidth
>>>>>>>> [  5]   0.00-1.00   sec  2.29 MBytes  19.2
>>>>>>>> Mbits/sec                  
>>>>>>>> [  5]   1.00-2.00   sec  2.21 MBytes  18.5
>>>>>>>> Mbits/sec                  
>>>>>>>> [  5]   2.00-3.00   sec  2.17 MBytes  18.2
>>>>>>>> Mbits/sec                  
>>>>>>>> [  5]   3.00-4.00   sec  2.09 MBytes  17.6
>>>>>>>> Mbits/sec                  
>>>>>>>> [  5]   4.00-5.00   sec  2.20 MBytes  18.5
>>>>>>>> Mbits/sec                  
>>>>>>>> [  5]   5.00-6.00   sec  2.64 MBytes  22.1
>>>>>>>> Mbits/sec                  
>>>>>>>> [  5]   6.00-7.00   sec  2.67 MBytes  22.4
>>>>>>>> Mbits/sec                  
>>>>>>>> [  5]   7.00-8.00   sec  2.62 MBytes  22.0
>>>>>>>> Mbits/sec                  
>>>>>>>> [  5]   8.00-9.00   sec  2.35 MBytes  19.8
>>>>>>>> Mbits/sec                  
>>>>>>>> [  5]   9.00-10.00  sec  2.30 MBytes  19.3
>>>>>>>> Mbits/sec                  
>>>>>>>> [  5]  10.00-10.03  sec  83.4 KBytes  23.5
>>>>>>>> Mbits/sec                  
>>>>>>>> - - - - - - - - - - - - - - - - - - - - - - - - -
>>>>>>>> [ ID]
>>>>>>>> Interval           Transfer     Bandwidth       Retr
>>>>>>>> [  5]   0.00-10.03  sec  23.9 MBytes  20.0
>>>>>>>> Mbits/sec    0             sender
>>>>>>>> [  5]   0.00-10.03  sec  23.6 MBytes  19.8
>>>>>>>> Mbits/sec                  receiver
>>>>>>>>
>>>>>>>> # iw dev wlan0 link
>>>>>>>> Connected to xx:xx:xx:xx:xx (on wlan0)
>>>>>>>> 	SSID: xxx
>>>>>>>> 	freq: 2437
>>>>>>>> 	tx bitrate: 65.0 MBit/s
>>>>>>>>
>>>>>>>> 	bss flags:	short-preamble short-slot-time
>>>>>>>> 	dtim period:	1
>>>>>>>> 	beacon int:	100
>>>>>>>
>>>>>>> Too bad RSSI is not in the output above. That may be due to
>>>>>>> a
>>>>>>> regression
>>>>>>> in our driver which has been fixed by commit 94abd778a7bb
>>>>>>> ("brcmfmac:
>>>>>>> add fallback for devices that do not report per-chain
>>>>>>> values").
>>>>>>> However,
>>>>>>> the tx bitrate seems within the same range as the other
>>>>>>> platform.
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> The Cubietruck works also with the brcmfmac driver.
>>>>>>>>
>>>>>>>> May it depend on the NVRAM file?
>>>>>>>
>>>>>>> Not sure. Can you tell me a bit more about the custom ARM
>>>>>>> board.
>>>>>>> Does
>>>>>>> it
>>>>>>> use the same wifi module as Cubietruck, ie. the AMPAK
>>>>>>> AP6210?
>>>>>>> If
>>>>>>> you
>>>>>>> can
>>>>>>> make a wireshark sniff we can check the actual bitrate and
>>>>>>> medium
>>>>>>> density in terms of packets. Another thing to look at is
>>>>>>> the
>>>>>>> SDIO
>>>>>>> host
>>>>>>> controller. In brcmf_sdiod_sgtable_alloc() some key values
>>>>>>> are
>>>>>>> used
>>>>>>> from
>>>>>>> the host controller. It only logs the number of entries of
>>>>>>> the
>>>>>>> scatter-gather table, but could you add the other values in
>>>>>>> this
>>>>>>> function that are used to determine the number of entries.
>>>>>>
>>>>>> My board uses the BCM43362 chip solely (no Bluetooth)
>>>>>> attached to
>>>>>> the
>>>>>> SDIO interface of a NXP i.MX28 processor.
>>>>>>
>>>>>> I added some additional printk() to
>>>>>> brcmf_sdiod_sgtable_alloc().
>>>>>> These
>>>>>> are the values printed after modprobe brcmfmac:
>>>>>>
>>>>>> [    8.926657] sg_support=1
>>>>>> [    8.929440] max_blocks=511
>>>>>> [    8.932213] max_request_size=261632
>>>>>> [    8.935741] max_segment_count=52
>>>>>> [    8.939005] max_segment_size=65280
>>>>>> [    8.946095] nents=35
>>>>>
>>>>> Thanks. That looks good.
>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Additionally I attached a xz compresses wireshark sniff while
>>>>>> running
>>>>>> iper3 between the BCM43362 running as in AP mode with iperf3
>>>>>> as a
>>>>>> server and a PC in station mode running iperf3 as a client.
>>>>>
>>>>> Looking at the sniff it seems you captured on the ethernet
>>>>> side.
>>>>> That
>>>>> does not give me any 802.11 specific info. Can you make a
>>>>> wireless
>>>>> capture preferably without encryption.
>>>>
>>>> You,re right! Sorry for this mistake. I did a re-capture on the
>>>> wireless side now.
>>>
>>> Anything new about this? Anything I can do to help?
>>
>> I missed your previous email. Was already wondering whether to ping
>> you.
>> Digging around in my email folders I found it so will take a look at
>> it.
> 
> Did you had some time to look at this?

Ehm. I still only see TCP stuff. To capture 802.11 management frames you
need preferably a dedicated device using monitor mode [1].

Regards,
Arend

[1]
https://wireless.wiki.kernel.org/en/users/documentation/modes#monitor_mode

^ permalink raw reply

* Re: Problem with 40Mhz on 2.5GHz with Intel 8260
From: Emmanuel Grumbach @ 2016-09-22  5:32 UTC (permalink / raw)
  To: Volker Mische; +Cc: linux-wireless
In-Reply-To: <968d1def-738f-36da-83bd-b10cc98c8093@gmail.com>

On Wed, Sep 21, 2016 at 11:19 PM, Volker Mische <volker.mische@gmail.com> wrote:
> Hi,
>
> On 09/21/2016 09:20 AM, Emmanuel Grumbach wrote:
>>>> can you try to unplug the power cord? I had reports that said that
>>>> this can help. Again, just a debug step to give us a hint of what you
>>>> can be experiencing.
>>>
>>> Unplug without any module parameters or combined with the
>>> cfg80211_disable_40mhz_24ghz or power_scheme one?
>>
>> Nope - default configuration.
>
> the issue also happens when the power cord is unplugged.

Ok - thanks for trying.

>
>>>> Besides this, we need to go for firmware debugging. But as I said,
>>>> don't expect this to be fast and easy. Please open a bug in
>>>> bugzilla.kernel.org. CC linuxwifi@intel.com and we will guide you
>>>> there on how to provide the information we need.
>
> I've filled bug 172431
>
> [1]: https://bugzilla.kernel.org/show_bug.cgi?id=172431

Saw that. Thanks.

>
> Cheers,
>   Volker

^ permalink raw reply

* Re: ath9k_htc kernel driver regression affecting throughput
From: bruce m beach @ 2016-09-22  4:53 UTC (permalink / raw)
  To: Ben Greear; +Cc: Oleksij Rempel, linux-wireless
In-Reply-To: <57E35BA9.7050207@candelatech.com>

memory will be very tight. There is 160k or known ram and bits and pieces
elsewhere. The rom is 24k (maximum). I currently am not to worried about
it. (although I am watching it)
bruce

On 9/21/16, Ben Greear <greearb@candelatech.com> wrote:
>
>
> On 09/21/2016 08:34 PM, bruce m beach wrote:
>
>>>> i.e a lable that the code jumps to and nothing else. At this point I
>>>> have
>>>> added VendorCommand(), and a debugger via ep0. ( ep0 is a good choice
>>>> since it is available a boot, no matter what) and over the next few
>>>> months I am going to move ->all<- the rom code into ram starting with
>>>> the USB subsystem.
>
> Have you investigated whether you have enough RAM to do this?
>
> I haven't looked at ath9k_htc, but in general, that type of architecture
> is tight on RAM in my experience.
>
> Thanks,
> Ben
>
> --
> Ben Greear <greearb@candelatech.com>
> Candela Technologies Inc  http://www.candelatech.com
>

^ permalink raw reply

* Re: ath9k_htc kernel driver regression affecting throughput
From: Ben Greear @ 2016-09-22  4:18 UTC (permalink / raw)
  To: bruce m beach, Oleksij Rempel; +Cc: linux-wireless
In-Reply-To: <CAArymCnJZgUbgCiLqA6-94RAtXYkYeeS9uF71MX9+ou-AbYszg@mail.gmail.com>



On 09/21/2016 08:34 PM, bruce m beach wrote:

>>> i.e a lable that the code jumps to and nothing else. At this point I have
>>> added VendorCommand(), and a debugger via ep0. ( ep0 is a good choice
>>> since it is available a boot, no matter what) and over the next few
>>> months I am going to move ->all<- the rom code into ram starting with
>>> the USB subsystem.

Have you investigated whether you have enough RAM to do this?

I haven't looked at ath9k_htc, but in general, that type of architecture
is tight on RAM in my experience.

Thanks,
Ben

-- 
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc  http://www.candelatech.com

^ permalink raw reply

* Re: ath9k_htc kernel driver regression affecting throughput
From: bruce m beach @ 2016-09-22  3:34 UTC (permalink / raw)
  To: Oleksij Rempel; +Cc: linux-wireless
In-Reply-To: <96b0636d-1171-5830-6481-edb991ca8e1a@rempel-privat.de>

> We recently updated FW to GCC 6.2 which can detect more problems. So it
> will be probably interesting for you to pick this patch out.

Yes I saw the message by Adrian Chadd and tried tried to git clone the link
he gave but that clearly wasn't what was to be done. Is there a patch that I
need to apply to the firmware? I do have a local copy.

On 9/20/16, Oleksij Rempel <linux@rempel-privat.de> wrote:
> Am 21.09.2016 um 05:43 schrieb bruce m beach:
>> Oleksij
>>
>> I looked at
>> https://unix.stackexchange.com/questions/122050/
>>       send-traffic-to-self-over-physical-network-on-ubuntu
>>
>> It appearred to too complicated but
>>
>> https://unix.stackexchange.com/questions/122050/
>>         send-traffic-to-self-over-physical-network-on-ubuntu
>> with:
>>     # Create a network namespace and move one of interfaces into it:
>>       ip netns add test2
>>       ip link set wlan0 netns test2
>>     # Start a shell in the new namespace:
>>        ip netns exec test2 bash
>>     # Then proceed as if you had two machines. When finished exit the
>> shell and
>>     # delete the namespace:
>>        ip netns del test2
>> Certainly looks interesting but after I got a
>>  RTNETLINK answers: Invalid argument
>> I lost interest. My heart isn't in it. I'm still working on the firmware.
>> I
>> have started a new tree (tree #3) that consists of a userland firmware
>> uploader
>> and until recently the following firmware:
>>
>> app_start( void ) {}
>>
>> i.e a lable that the code jumps to and nothing else. At this point I have
>> added VendorCommand(), and a debugger via ep0. ( ep0 is a good choice
>> since it is available a boot, no matter what) and over the next few
>> months I am going to move ->all<- the rom code into ram starting with
>> the USB subsystem.
>>
>> Bruce
>>
>
>
> Wow, this sounds interesting :)
> We recently updated FW to GCC 6.2 which can detect more problems. So it
> will be probably interesting for you to pick this patch out.
>
> --
> Regards,
> Oleksij
>
>

^ permalink raw reply

* Re: pull-request: wireless-drivers 2016-09-20
From: David Miller @ 2016-09-22  1:45 UTC (permalink / raw)
  To: kvalo; +Cc: linux-wireless, netdev, linux-kernel
In-Reply-To: <87vaxq3m9t.fsf@kamboji.qca.qualcomm.com>

From: Kalle Valo <kvalo@codeaurora.org>
Date: Tue, 20 Sep 2016 13:20:46 +0300

> last pull request for 4.8, unless something really drastic comes up. And
> a small one even, just a small fix to iwlwifi to avoid a firmware crash.
> 
> Please let me know if there are any problems.

Pulled, thanks.

^ permalink raw reply

* Re: Problem with 40Mhz on 2.5GHz with Intel 8260
From: Volker Mische @ 2016-09-21 20:19 UTC (permalink / raw)
  To: Emmanuel Grumbach; +Cc: linux-wireless
In-Reply-To: <CANUX_P1p=8Zxq+GZd8p5NjAaEY7G7p8kdxacr7orpfE8hKKWig@mail.gmail.com>

Hi,

On 09/21/2016 09:20 AM, Emmanuel Grumbach wrote:
>>> can you try to unplug the power cord? I had reports that said that
>>> this can help. Again, just a debug step to give us a hint of what you
>>> can be experiencing.
>>
>> Unplug without any module parameters or combined with the
>> cfg80211_disable_40mhz_24ghz or power_scheme one?
> 
> Nope - default configuration.

the issue also happens when the power cord is unplugged.

>>> Besides this, we need to go for firmware debugging. But as I said,
>>> don't expect this to be fast and easy. Please open a bug in
>>> bugzilla.kernel.org. CC linuxwifi@intel.com and we will guide you
>>> there on how to provide the information we need.

I've filled bug 172431

[1]: https://bugzilla.kernel.org/show_bug.cgi?id=172431

Cheers,
  Volker

^ permalink raw reply

* Re: RTL8192EU on rtl8xxxu driver breaks every few minutes
From: Franc[e]sco @ 2016-09-21 17:44 UTC (permalink / raw)
  Cc: linux-wireless
In-Reply-To: <wrfj4m5acouw.fsf@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 1187 bytes --]

Oops, forgot to forward the previous reply to the mailing list.

I have attached the output of iw link

the AP is an asus dsl-n55u router in 2.4 GHz mode, using WPA2-Personal
with AES encryption. It's also running a second 5GHz wireless network
which has a different SSID.

Also, this seems to be some kind of power saving kicking in, as the dongle keeps working as long as I keep doing things over ssh.


On 09/20/2016 10:12 PM, Jes Sorensen wrote:
> "Franc[e]sco" <lolisamurai@waifu.club> writes:
>> Hi, I happen to own a RTL8192EU WiFi dongle which is marked as untested
>> by the rtl8xxxu driver.
>>
>> I'm on a linux from scratch system using kernel 4.7.3 and wpa_supplicant
>> 2.5.
>>
>> The dongle appears to connect and work fine, but after around 10 minutes
>> it deauthenticates and enters and endless loop of authentication
>> timeout. This continues even if I bring the interface down and back up
>> again. The only way to restore the connection is to physically remove
>> and re-plug the usb dongle.
>>
>> I have attached a dmesg log of connecting and entering the auth loop.
> Please provide details about the AP you are trying to connect to and iw
> link output.
>
> Jes


[-- Attachment #2: rtl8192eu-iw-link.txt --]
[-- Type: text/plain, Size: 214 bytes --]

$ ./iw enx001988001e33 link
Connected to e0:3f:49:97:0c:68 (on enx001988001e33)
	SSID: memes
	freq: 2472
	RX: 4328394 bytes (26075 packets)
	TX: 380760 bytes (2785 packets)
	signal: -60 dBm
	tx bitrate: 1.0 MBit/s

^ permalink raw reply

* [PATCH v2] carl9170: fix debugfs crashes
From: Christian Lamparter @ 2016-09-21 16:49 UTC (permalink / raw)
  To: gregkh, Kalle Valo
  Cc: Christian Lamparter, linux-kernel, linux-wireless, Nicolai Stange,
	Ben Greear
In-Reply-To: <1927662.l0xhZ6GL0u@debian64>

Ben Greear reported:
> I see lots of instability as soon as I load up the carl9710 NIC.
> My application is going to be poking at it's debugfs files...
>
> BUG: KASAN: slab-out-of-bounds in carl9170_debugfs_read+0xd5/0x2a0
> [carl9170] at addr 0xffff8801bc1208b0
> Read of size 8 by task btserver/5888
> =======================================================================
> BUG kmalloc-256 (Tainted: G        W      ): kasan: bad access detected
> -----------------------------------------------------------------------
>
> INFO: Allocated in seq_open+0x50/0x100 age=2690 cpu=2 pid=772
>...

This breakage was caused by the introduction of intermediate
fops in debugfs by commit 9fd4dcece43a
("debugfs: prevent access to possibly dead file_operations at file open")

Thankfully, the original/real fops are still available in d_fsdata.

Reported-by: Ben Greear <greearb@candelatech.com>
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
Cc: stable <stable@vger.kernel.org> # 4.7+
---
 drivers/net/wireless/ath/carl9170/debug.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/ath/carl9170/debug.c b/drivers/net/wireless/ath/carl9170/debug.c
index 6808db4..ec3a64e 100644
--- a/drivers/net/wireless/ath/carl9170/debug.c
+++ b/drivers/net/wireless/ath/carl9170/debug.c
@@ -75,7 +75,8 @@ static ssize_t carl9170_debugfs_read(struct file *file, char __user *userbuf,
 
 	if (!ar)
 		return -ENODEV;
-	dfops = container_of(file->f_op, struct carl9170_debugfs_fops, fops);
+	dfops = container_of(debugfs_real_fops(file),
+			     struct carl9170_debugfs_fops, fops);
 
 	if (!dfops->read)
 		return -ENOSYS;
@@ -127,7 +128,8 @@ static ssize_t carl9170_debugfs_write(struct file *file,
 
 	if (!ar)
 		return -ENODEV;
-	dfops = container_of(file->f_op, struct carl9170_debugfs_fops, fops);
+	dfops = container_of(debugfs_real_fops(file),
+			     struct carl9170_debugfs_fops, fops);
 
 	if (!dfops->write)
 		return -ENOSYS;
-- 
2.9.3

^ permalink raw reply related

* Re: [PATCH 2/4] carl9170: fix debugfs crashes
From: Christian Lamparter @ 2016-09-21 16:29 UTC (permalink / raw)
  To: Greg KH
  Cc: Christian Lamparter, Kalle Valo, linux-kernel, linux-wireless,
	b43-dev, Nicolai Stange, Ben Greear, Larry Finger
In-Reply-To: <20160921101325.GA22263@kroah.com>

On Wednesday, September 21, 2016 12:13:25 PM CEST Greg KH wrote:
> On Sat, Sep 17, 2016 at 09:43:02PM +0200, Christian Lamparter wrote:
> > Ben Greear reported:
> > > I see lots of instability as soon as I load up the carl9710 NIC.
> > > My application is going to be poking at it's debugfs files...
> > >
> > > BUG: KASAN: slab-out-of-bounds in carl9170_debugfs_read+0xd5/0x2a0
> > > [carl9170] at addr ffff8801bc1208b0
> > > Read of size 8 by task btserver/5888
> > > =======================================================================
> > > BUG kmalloc-256 (Tainted: G        W      ): kasan: bad access detected
> > > -----------------------------------------------------------------------
> > >
> > > INFO: Allocated in seq_open+0x50/0x100 age=2690 cpu=2 pid=772
> > >...
> > 
> > This breakage was caused by the introduction of intermediate
> > fops in debugfs by commit 9fd4dcece43a
> > ("debugfs: prevent access to possibly dead file_operations at file open")
> > 
> > Thankfully, the original/real fops are still available in d_fsdata.
> > 
> > Reported-by: Ben Greear <greearb@candelatech.com>
> > Reviewed-by: Nicolai Stange <nicstange@gmail.com>
> > Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
> > Acked-by: Kalle Valo <kvalo@codeaurora.org>
> > Cc: stable <stable@vger.kernel.org> # 4.7+
> > ---
> >  drivers/net/wireless/ath/carl9170/debug.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/net/wireless/ath/carl9170/debug.c b/drivers/net/wireless/ath/carl9170/debug.c
> > index 01a0919..ad7ffd5 100644
> > --- a/drivers/net/wireless/ath/carl9170/debug.c
> > +++ b/drivers/net/wireless/ath/carl9170/debug.c
> > @@ -75,7 +75,7 @@ static ssize_t carl9170_debugfs_read(struct file *file, char __user *userbuf,
> >  
> >  	if (!ar)
> >  		return -ENODEV;
> > -	dfops = container_of(file->f_path.dentry->d_fsdata,
> > +	dfops = container_of(debugfs_real_fops(file),
> >  			     struct carl9170_debugfs_fops, fops);
> >  
> >  	if (!dfops->read)
> > @@ -128,7 +128,7 @@ static ssize_t carl9170_debugfs_write(struct file *file,
> >  
> >  	if (!ar)
> >  		return -ENODEV;
> > -	dfops = container_of(file->f_path.dentry->d_fsdata,
> > +	dfops = container_of(debugfs_real_fops(file),
> >  			     struct carl9170_debugfs_fops, fops);
> >  	if (!dfops->write)
> >  		return -ENOSYS;
> 
> What tree is this against?  I can't apply it to 4.8-rc5, or 4.8-rc7, are
> you sure it is still needed?
---
Yes, the patch is needed. That said I screwed this patch up and as a result
it is faulty. I'll send out v2 shortly

Thanks,
Christian

^ permalink raw reply

* Re: ath10k mesh mode issue
From: Matteo Grandi @ 2016-09-21 16:27 UTC (permalink / raw)
  To: Michal Kazior; +Cc: Matteo Grandi, LinuxWireless Mailing List
In-Reply-To: <CAHdg3xa4Z0=WVMDtHv2KLtzAgB8fyiuefEodKZwUb=jjmNyppg@mail.gmail.com>

Hi Michal,
thanks for the reply:
I've already loaded the ath10k_core with the rowmode parameters, this
is the modinfo result:
root@Tam:~# modinfo ath10k_core
filename:
/lib/modules/3.14.48-g408ccb9/kernel/drivers/net/wireless/ath/ath10k/ath10k=
_core.ko
license:        Dual BSD/GPL
description:    Core module for QCA988X PCIe devices.
author:         Qualcomm Atheros
srcversion:     407804E6D5A63597F137E9B
depends:        mac80211,cfg80211,compat,ath
vermagic:       3.14.48-g408ccb9 SMP mod_unload modversions ARMv7 p2v8
parm:           debug_mask:Debugging mask (uint)
parm:           uart_print:Uart target debugging (bool)
parm:           skip_otp:Skip otp failure for calibration in testmode (bool=
)
parm:           cryptmode:Crypto mode: 0-hardware, 1-software (uint)
parm:           rawmode:Use raw 802.11 frame datapath (bool)

root@Tam:~# modinfo ath10k_pci
filename:
/lib/modules/3.14.48-g408ccb9/kernel/drivers/net/wireless/ath/ath10k/ath10k=
_pci.ko
firmware:       ath10k/QCA9377/hw1.0/board.bin
firmware:       ath10k/QCA9377/hw1.0/firmware-5.bin
firmware:       ath10k/QCA6174/hw3.0/board-2.bin
firmware:       ath10k/QCA6174/hw3.0/board.bin
firmware:       ath10k/QCA6174/hw3.0/firmware-5.bin
firmware:       ath10k/QCA6174/hw3.0/firmware-4.bin
firmware:       ath10k/QCA6174/hw2.1/board-2.bin
firmware:       ath10k/QCA6174/hw2.1/board.bin
firmware:       ath10k/QCA6174/hw2.1/firmware-5.bin
firmware:       ath10k/QCA6174/hw2.1/firmware-4.bin
firmware:       ath10k/QCA988X/hw2.0/board-2.bin
firmware:       ath10k/QCA988X/hw2.0/board.bin
firmware:       ath10k/QCA988X/hw2.0/firmware-5.bin
firmware:       ath10k/QCA988X/hw2.0/firmware-4.bin
firmware:       ath10k/QCA988X/hw2.0/firmware-3.bin
firmware:       ath10k/QCA988X/hw2.0/firmware-2.bin
firmware:       ath10k/QCA988X/hw2.0/firmware.bin
license:        Dual BSD/GPL
description:    Driver support for Atheros QCA988X PCIe devices
author:         Qualcomm Atheros
version:        backported from Linux (v4.4.2-0-g1cb8570) using
backports v4.4.2-1-0-gbec4037
srcversion:     EBB3D4E36DE49B7EC8057D0
alias:          pci:v0000168Cd00000042sv*sd*bc*sc*i*
alias:          pci:v0000168Cd00000040sv*sd*bc*sc*i*
alias:          pci:v0000168Cd0000003Esv*sd*bc*sc*i*
alias:          pci:v0000168Cd00000041sv*sd*bc*sc*i*
alias:          pci:v0000168Cd0000003Csv*sd*bc*sc*i*
depends:        ath10k_core,compat
vermagic:       3.14.48-g408ccb9 SMP mod_unload modversions ARMv7 p2v8
parm:           irq_mode:0: auto, 1: legacy, 2: msi (default: 0) (uint)
parm:           reset_mode:0: auto, 1: warm only (default: 0) (uint)


I've loaded adding the line ath10k_core rawmode=3D1 to the file etc/modules

The problem persists... maybe it's a firmware issue or even a fault of
the wifi card?

Really many thanks

Matteo


>
> 2016-09-19 13:22 GMT+02:00 Michal Kazior <michal.kazior@tieto.com>:
>>
>> On 16 September 2016 at 12:56, Matteo Grandi <grn.matteo@gmail.com> wrot=
e:
>> > Hello all,
>> [...]
>> > [    8.589474] ath10k_pci 0000:07:00.0: qca988x hw2.0 (0x4100016c,
>> > 0x043222ff sub 0000:0000) fw 10.2.4.70.54 fwapi 5 bdapi 1 htt-ver 2.1
>> > wmi-op 5 htt-op 2 cal otp max-sta 128 raw 0 hwcrypto 1 features
>> > no-p2p,raw-mode
>>
>> The "raw-mode" here only hints the firmware is capable of raw mode
>> operation which needs to be explicitly enabled.
>>
>>
>> > [    8.589491] ath10k_pci 0000:07:00.0: debug 1 debugfs 1 tracing 0
>> > dfs 0 testmode 1
>> > [    8.691670] ath: EEPROM regdomain: 0x0
>> > [    8.691680] ath: EEPROM indicates default country code should be us=
ed
>> > [    8.691686] ath: doing EEPROM country->regdmn map search
>> > [    8.691695] ath: country maps to regdmn code: 0x3a
>> > [    8.691702] ath: Country alpha2 being used: US
>> > [    8.691706] ath: Regpair used: 0x3a
>> > [  176.983250] ath10k_pci 0000:07:00.0: must load driver with
>> > rawmode=3D1 to add mesh interfaces
>> [...]
>> > - I've also tried to load the ath10k modules adding the parameter
>> > rowmode=3D1 but I had an error "rawmode unknown parameter"
>>
>> Only ath10k_core needs to be loaded with rawmode=3D1.
>>
>> You can check available module parameters with:
>>   modinfo ath10k_core
>>   modinfo ath10k_pci
>>
>>
>> Micha=C5=82
>
>

^ permalink raw reply

* Re: TCP data throughput for BCM43362
From: Arend van Spriel @ 2016-09-21 14:15 UTC (permalink / raw)
  To: Jörg Krause, Franky Lin
  Cc: Brett Rudley, brcm80211-dev-list, Hante Meuleman, Franky Lin,
	linux-wireless, Arend van Spriel
In-Reply-To: <1474266984.7448.1.camel@embedded.rocks>

On 19-09-16 08:36, Jörg Krause wrote:
> Hi Arend,
> 
> On Wed, 2016-09-14 at 20:13 +0200, Arend Van Spriel wrote:
>> On 14-9-2016 15:41, Jörg Krause wrote:
>>>
>>> Hi,
>>>
>>> On Mon, 2016-08-29 at 23:15 +0200, Jörg Krause wrote:
>>>>
>>>> On Mi, 2016-08-24 at 20:35 +0200, Arend Van Spriel wrote:
>>>>>
>>>>>
>>>>> On 22-8-2016 15:37, Jörg Krause wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>> Hi all,
>>>>>>
>>>>>> I am back from vacation and I'd like to do more
>>>>>> investigations
>>>>>> about
>>>>>> this issue. Please see my comments below...
>>>>>>
>>>>>> On Sun, 2016-08-07 at 13:41 +0200, Arend van Spriel wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 06-08-16 16:12, Jörg Krause wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Hi all,
>>>>>>>
>>>>>>> A bit weird email format making it a bit hard to determine
>>>>>>> where
>>>>>>> your
>>>>>>> last reply starts...
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Fr, 2016-08-05 at 17:56 -0700, Franky Lin wrote:
>>>>>>>>
>>>>>>>> On Fri, Aug 5, 2016 at 2:29 PM, Jörg Krause <joerg.krause
>>>>>>>> @emb
>>>>>>>> ed
>>>>>>>> ded.
>>>>>>>> ro
>>>>>>>> cks>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Am 5. August 2016 23:01:10 MESZ, schrieb Arend Van Spriel
>>>>>>>> <
>>>>>>>> arend.vanspriel@broadcom.com>:
>>>>>>>>
>>>>>>>>
>>>>>>>> Op 5 aug. 2016 22:46 schreef "Jörg Krause"
>>>>>>>> <joerg.krause@embedded.rocks>:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> I'm using a custom ARM board with an BCM43362 wifi chip
>>>>>>>> from
>>>>>>>>
>>>>>>>> Broadcom.
>>>>>>>>
>>>>>>>>
>>>>>>>> The wifi chip is attached via SDIO to the controller with
>>>>>>>> a
>>>>>>>> clock of
>>>>>>>> 48MHz. Linux kernel version is 4.7.
>>>>>>>>
>>>>>>>> When measuring the network bandwidth with iperf3 I get a
>>>>>>>> bandwith of
>>>>>>>> only around 5 Mbps. I found a similar thread at the
>>>>>>>> Broadcom
>>>>>>>>
>>>>>>>> community
>>>>>>>>
>>>>>>>>
>>>>>>>> [1] where the test was done with a M4 CPU + BCM43362 and
>>>>>>>> an
>>>>>>>> average
>>>>>>>> result of 3.3 Mbps.
>>>>>>>>
>>>>>>>> Interestingly, a BCM43362 Wi-Fi Dev Kit [2] notes a TCP
>>>>>>>> data
>>>>>>>>
>>>>>>>> throughput
>>>>>>>>
>>>>>>>>
>>>>>>>> greater than 20 Mbps.
>>>>>>>>
>>>>>>>> Why is the throughput I measured much lower? Note that I
>>>>>>>> measured
>>>>>>>> several times with almost no neighbor devices or
>>>>>>>> networks.
>>>>>>>>
>>>>>>>> This is a test sample measured with iperf3:
>>>>>>>>
>>>>>>>>     $ iperf3 -c 192.168.2.1 -i 1 -t 10
>>>>>>>>     Connecting to host 192.168.2.1, port 5201
>>>>>>>>     [  4] local 192.168.2.155 port 36442 connected to
>>>>>>>> 192.168.2.1
>>>>>>>>
>>>>>>>> port
>>>>>>>>
>>>>>>>>
>>>>>>>>     5201
>>>>>>>>     [ ID]
>>>>>>>> Interval           Transfer     Bandwidth       Retr  Cwn
>>>>>>>> d
>>>>>>>>     [  4]   0.00-1.00   sec   615 KBytes  5.04
>>>>>>>> Mbits/sec    0   56.6
>>>>>>>>     KBytes
>>>>>>>>     [  4]   1.00-2.00   sec   622 KBytes  5.10
>>>>>>>> Mbits/sec    0   84.8
>>>>>>>>     KBytes
>>>>>>>>     [  4]   2.00-3.00   sec   625 KBytes  5.12
>>>>>>>> Mbits/sec    0    113
>>>>>>>>     KBytes
>>>>>>>>     [  4]   3.00-4.00   sec   571 KBytes  4.68
>>>>>>>> Mbits/sec    0    140
>>>>>>>>     KBytes
>>>>>>>>     [  4]   4.00-5.00   sec   594 KBytes  4.87
>>>>>>>> Mbits/sec    0    167
>>>>>>>>     KBytes
>>>>>>>>     [  4]   5.00-6.00   sec   628 KBytes  5.14
>>>>>>>> Mbits/sec    0    195
>>>>>>>>     KBytes
>>>>>>>>     [  4]   6.00-7.00   sec   619 KBytes  5.07
>>>>>>>> Mbits/sec    0    202
>>>>>>>>     KBytes
>>>>>>>>     [  4]   7.00-8.00   sec   608 KBytes  4.98
>>>>>>>> Mbits/sec    0    202
>>>>>>>>     KBytes
>>>>>>>>     [  4]   8.00-9.00   sec   602 KBytes  4.93
>>>>>>>> Mbits/sec    0    202
>>>>>>>>     KBytes
>>>>>>>>     [  4]   9.00-10.00  sec   537 KBytes  4.40
>>>>>>>> Mbits/sec    0    202
>>>>>>>>     KBytes
>>>>>>>>     - - - - - - - - - - - - - - - - - - - - - - - - -
>>>>>>>>     [ ID]
>>>>>>>> Interval           Transfer     Bandwidth       Retr
>>>>>>>>     [  4]   0.00-10.00  sec  5.88 MBytes  4.93
>>>>>>>>     Mbits/sec    0             sender
>>>>>>>>     [  4]   0.00-10.00  sec  5.68 MBytes  4.76
>>>>>>>>     Mbits/sec                  receiver
>>>>>>>>
>>>>>>>>
>>>>>>>> Not overly familiar with iperf3. Do these lines mean you
>>>>>>>> are
>>>>>>>> doing
>>>>>>>> bidirectional test, ie. upstream and downstream at the
>>>>>>>> same
>>>>>>>> time.
>>>>>>>> Another
>>>>>>>> thing affecting tput could be power-save.
>>>>>>>>
>>>>>>>>
>>>>>>>> No, iperf3 does not support bidrectional test. Power-save 
>>>>>>>> is
>>>>>>>> turned
>>>>>>>> off.
>>>>>>>>
>>>>>>>> What does iw link say?
>>>>>>>>
>>>>>>>
>>>>>>> but I guess it starts here!
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> I compared the results with a Cubietruck I have:
>>>>>>>>
>>>>>>>> # iperf3 -s
>>>>>>>> -------------------------------------------------------
>>>>>>>> ----
>>>>>>>> Server listening on 5201
>>>>>>>> -------------------------------------------------------
>>>>>>>> ----
>>>>>>>> Accepted connection from 192.168.178.46, port 42906
>>>>>>>> [  5] local 192.168.178.38 port 5201 connected to
>>>>>>>> 192.168.178.46
>>>>>>>> port
>>>>>>>> 42908
>>>>>>>> [ ID] Interval           Transfer     Bandwidth
>>>>>>>> [  5]   0.00-1.00   sec  2.29 MBytes  19.2
>>>>>>>> Mbits/sec                  
>>>>>>>> [  5]   1.00-2.00   sec  2.21 MBytes  18.5
>>>>>>>> Mbits/sec                  
>>>>>>>> [  5]   2.00-3.00   sec  2.17 MBytes  18.2
>>>>>>>> Mbits/sec                  
>>>>>>>> [  5]   3.00-4.00   sec  2.09 MBytes  17.6
>>>>>>>> Mbits/sec                  
>>>>>>>> [  5]   4.00-5.00   sec  2.20 MBytes  18.5
>>>>>>>> Mbits/sec                  
>>>>>>>> [  5]   5.00-6.00   sec  2.64 MBytes  22.1
>>>>>>>> Mbits/sec                  
>>>>>>>> [  5]   6.00-7.00   sec  2.67 MBytes  22.4
>>>>>>>> Mbits/sec                  
>>>>>>>> [  5]   7.00-8.00   sec  2.62 MBytes  22.0
>>>>>>>> Mbits/sec                  
>>>>>>>> [  5]   8.00-9.00   sec  2.35 MBytes  19.8
>>>>>>>> Mbits/sec                  
>>>>>>>> [  5]   9.00-10.00  sec  2.30 MBytes  19.3
>>>>>>>> Mbits/sec                  
>>>>>>>> [  5]  10.00-10.03  sec  83.4 KBytes  23.5
>>>>>>>> Mbits/sec                  
>>>>>>>> - - - - - - - - - - - - - - - - - - - - - - - - -
>>>>>>>> [ ID]
>>>>>>>> Interval           Transfer     Bandwidth       Retr
>>>>>>>> [  5]   0.00-10.03  sec  23.9 MBytes  20.0
>>>>>>>> Mbits/sec    0             sender
>>>>>>>> [  5]   0.00-10.03  sec  23.6 MBytes  19.8
>>>>>>>> Mbits/sec                  receiver
>>>>>>>>
>>>>>>>> # iw dev wlan0 link
>>>>>>>> Connected to xx:xx:xx:xx:xx (on wlan0)
>>>>>>>> 	SSID: xxx
>>>>>>>> 	freq: 2437
>>>>>>>> 	tx bitrate: 65.0 MBit/s
>>>>>>>>
>>>>>>>> 	bss flags:	short-preamble short-slot-time
>>>>>>>> 	dtim period:	1
>>>>>>>> 	beacon int:	100
>>>>>>>
>>>>>>> Too bad RSSI is not in the output above. That may be due to
>>>>>>> a
>>>>>>> regression
>>>>>>> in our driver which has been fixed by commit 94abd778a7bb
>>>>>>> ("brcmfmac:
>>>>>>> add fallback for devices that do not report per-chain
>>>>>>> values").
>>>>>>> However,
>>>>>>> the tx bitrate seems within the same range as the other
>>>>>>> platform.
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> The Cubietruck works also with the brcmfmac driver.
>>>>>>>>
>>>>>>>> May it depend on the NVRAM file?
>>>>>>>
>>>>>>> Not sure. Can you tell me a bit more about the custom ARM
>>>>>>> board.
>>>>>>> Does
>>>>>>> it
>>>>>>> use the same wifi module as Cubietruck, ie. the AMPAK
>>>>>>> AP6210?
>>>>>>> If
>>>>>>> you
>>>>>>> can
>>>>>>> make a wireshark sniff we can check the actual bitrate and
>>>>>>> medium
>>>>>>> density in terms of packets. Another thing to look at is
>>>>>>> the
>>>>>>> SDIO
>>>>>>> host
>>>>>>> controller. In brcmf_sdiod_sgtable_alloc() some key values
>>>>>>> are
>>>>>>> used
>>>>>>> from
>>>>>>> the host controller. It only logs the number of entries of
>>>>>>> the
>>>>>>> scatter-gather table, but could you add the other values in
>>>>>>> this
>>>>>>> function that are used to determine the number of entries.
>>>>>>
>>>>>> My board uses the BCM43362 chip solely (no Bluetooth)
>>>>>> attached to
>>>>>> the
>>>>>> SDIO interface of a NXP i.MX28 processor.
>>>>>>
>>>>>> I added some additional printk() to
>>>>>> brcmf_sdiod_sgtable_alloc().
>>>>>> These
>>>>>> are the values printed after modprobe brcmfmac:
>>>>>>
>>>>>> [    8.926657] sg_support=1
>>>>>> [    8.929440] max_blocks=511
>>>>>> [    8.932213] max_request_size=261632
>>>>>> [    8.935741] max_segment_count=52
>>>>>> [    8.939005] max_segment_size=65280
>>>>>> [    8.946095] nents=35
>>>>>
>>>>> Thanks. That looks good.
>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Additionally I attached a xz compresses wireshark sniff while
>>>>>> running
>>>>>> iper3 between the BCM43362 running as in AP mode with iperf3
>>>>>> as a
>>>>>> server and a PC in station mode running iperf3 as a client.
>>>>>
>>>>> Looking at the sniff it seems you captured on the ethernet
>>>>> side.
>>>>> That
>>>>> does not give me any 802.11 specific info. Can you make a
>>>>> wireless
>>>>> capture preferably without encryption.
>>>>
>>>> You,re right! Sorry for this mistake. I did a re-capture on the
>>>> wireless side now.
>>>
>>> Anything new about this? Anything I can do to help?
>>
>> I missed your previous email. Was already wondering whether to ping
>> you.
>> Digging around in my email folders I found it so will take a look at
>> it.
> 
> Did you had some time to look at this?

Sorry for the delay, but I am kinda swamped. Will try spent some time on
it later this week.

Regards,
Arend

^ permalink raw reply

* RE: [PATCH v3 0/9] Add support for Neighbor Awareness Networking
From: Otcheretianski, Andrei @ 2016-09-21 11:36 UTC (permalink / raw)
  To: Arend Van Spriel, Luca Coelho, johannes@sipsolutions.net
  Cc: linux-wireless@vger.kernel.org, Beker, Ayala, Coelho, Luciano
In-Reply-To: <1fea85b0-02f0-964d-ca3d-99453f6de421@broadcom.com>

> -----Original Message-----
> From: Arend Van Spriel [mailto:arend.vanspriel@broadcom.com]
> Sent: Wednesday, September 21, 2016 12:40
> To: Luca Coelho <luca@coelho.fi>; johannes@sipsolutions.net
> Cc: linux-wireless@vger.kernel.org; Beker, Ayala <ayala.beker@intel.com>;
> Otcheretianski, Andrei <andrei.otcheretianski@intel.com>; Coelho, Luciano
> <luciano.coelho@intel.com>
> Subject: Re: [PATCH v3 0/9] Add support for Neighbor Awareness
> Networking
> 
> 
> 
> On 20-9-2016 16:31, Luca Coelho wrote:
> > From: Luca Coelho <luciano.coelho@intel.com>
> >
> > Hi,
> >
> > Now v3 of the NAN patchset.  Ayala has taken care of the kbuild bot
> > compilation errors and of all Arend's comments, except for the one
> > about adding a helper function instead checking for P2P_DEVICE and NAN
> > for non-netdev interfaces.
> >
> > Comments are welcome, as always.
> 
> This series exports three functions to be used by drivers:
> 
> void cfg80211_free_nan_func(struct cfg80211_nan_func *f); void
> cfg80211_nan_match(struct wireless_dev *wdev,
> 			struct cfg80211_nan_match_params *match, gfp_t
> gfp); void cfg80211_nan_func_terminated(struct wireless_dev *wdev,
> 				  u8 inst_id,
> 				  enum nl80211_nan_func_term_reason
> reason,
> 				  u64 cookie, gfp_t gfp);
> 
> Some more descriptive text about the use of these functions would be
> appropriate I think. For example looking at the patch series it seems the
> responsibility to call cfg80211_free_nan_func() is in the driver although
> allocation is done by cfg80211.

Regarding the cfg80211_free_nan_func() it is documented in patch "[PATCH v3 3/9] cfg80211: add add_nan_func / del_nan_func"
Here:
 * @add_nan_func: Add a NAN function. Returns negative value on failure.
 *     On success @nan_func ownership is transferred to the driver and
 *     it may access it outside of the scope of this function. The driver
 *     should free the @nan_func when no longer needed by calling
 *     cfg80211_free_nan_func().
 *     On success the driver should assign an instance_id in the
 *     provided @nan_func.

All the others are pretty much straight forward. Match and termination events are defined in NAN spec - so it should be easy to know when to call these functions.

>  Actually, I do not see mac80211 calling it so are
> we leaking there? I would expect it being called in
> .del_nan_func() callback and/or .stop_nan().

It is. Look at "[PATCH v3 8/9] mac80211: Implement add_nan_func and rm_nan_func".
It is called in stop_nan() and nan_func_terminated() callback.
The nan function can't be freed directly in del_nan_func() - otherwise it would be racy with match/termination notifications.

> Rather than exporting
> cfg80211_free_nan_func() I would prefer calling
> cfg80211_nan_func_terminated() and have cfg80211 take care of freeing
> nan_func resources.

As I already answered, there are some situations when the wdev isn't available and mac80211 can't call cfg80211_nan_func_terminated() - for example nan interface is being stopped (at least it's true for mac80211).
Also I think that the driver should be able to free the nan function without being forced to send notification to the user space and the other way around.

> 
> Regards,
> Arend
> 
> > Cheers,
> > Luca.
> >
> >
> > Ayala Beker (9):
> >   cfg80211: add start / stop NAN commands
> >   mac80211: add boilerplate code for start / stop NAN
> >   cfg80211: add add_nan_func / del_nan_func
> >   cfg80211: allow the user space to change current NAN configuration
> >   cfg80211: provide a function to report a match for NAN
> >   cfg80211: Provide an API to report NAN function termination
> >   mac80211: implement nan_change_conf
> >   mac80211: Implement add_nan_func and rm_nan_func
> >   mac80211: Add API to report NAN function match
> >
> >  include/net/cfg80211.h       | 184 ++++++++++++-
> >  include/net/mac80211.h       |  65 +++++
> >  include/uapi/linux/nl80211.h | 253 +++++++++++++++++
> >  net/mac80211/cfg.c           | 208 ++++++++++++++
> >  net/mac80211/chan.c          |   6 +
> >  net/mac80211/driver-ops.h    |  80 ++++++
> >  net/mac80211/ieee80211_i.h   |  17 ++
> >  net/mac80211/iface.c         |  28 +-
> >  net/mac80211/main.c          |   8 +
> >  net/mac80211/offchannel.c    |   4 +-
> >  net/mac80211/rx.c            |   3 +
> >  net/mac80211/trace.h         | 133 +++++++++
> >  net/mac80211/util.c          |  50 +++-
> >  net/wireless/chan.c          |   2 +
> >  net/wireless/core.c          |  35 +++
> >  net/wireless/core.h          |   3 +
> >  net/wireless/mlme.c          |   1 +
> >  net/wireless/nl80211.c       | 642
> ++++++++++++++++++++++++++++++++++++++++++-
> >  net/wireless/rdev-ops.h      |  58 ++++
> >  net/wireless/trace.h         |  90 ++++++
> >  net/wireless/util.c          |  28 +-
> >  21 files changed, 1888 insertions(+), 10 deletions(-)
> >

^ permalink raw reply

* [PATCH] ath10k: fix copy engine 5 destination ring stuck
From: Rajkumar Manoharan @ 2016-09-21 10:58 UTC (permalink / raw)
  To: ath10k; +Cc: linux-wireless, rmanohar, Rajkumar Manoharan, stable

Firmware is running watchdog timer for tracking copy engine ring index
and write index. Whenever both indices are stuck at same location for
given duration, watchdog will be trigger to assert target. While
updating copy engine destination ring write index, driver ensures that
write index will not be same as read index by finding delta between these
two indices (CE_RING_DELTA).

HTT target to host copy engine (CE5) is special case where ring buffers
will be reused and delta check is not applied while updating write index.
In rare scenario, whenever CE5 ring is full, both indices will be referring
same location and this is causing CE ring stuck issue as explained
above. This issue is originally reported on IPQ4019 during long hour stress
testing and during veriwave max clients testsuites. The same issue is
also observed in other chips as well. Fix this by ensuring that write
index is one less than read index which means that full ring is
available for receiving data.

Cc: stable@vger.kernel.org
Tested-by: Tamizh chelvam <c_traja@qti.qualcomm.com>
Signed-off-by: Rajkumar Manoharan <rmanohar@qti.qualcomm.com>
---
 drivers/net/wireless/ath/ath10k/ce.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/net/wireless/ath/ath10k/ce.c b/drivers/net/wireless/ath/ath10k/ce.c
index 65d8d714e917..00d3f93058db 100644
--- a/drivers/net/wireless/ath/ath10k/ce.c
+++ b/drivers/net/wireless/ath/ath10k/ce.c
@@ -433,6 +433,13 @@ void ath10k_ce_rx_update_write_idx(struct ath10k_ce_pipe *pipe, u32 nentries)
 	unsigned int nentries_mask = dest_ring->nentries_mask;
 	unsigned int write_index = dest_ring->write_index;
 	u32 ctrl_addr = pipe->ctrl_addr;
+	u32 cur_write_idx = ath10k_ce_dest_ring_write_index_get(ar, ctrl_addr);
+
+	/* Prevent CE ring stuck issue that will occur when ring is full.
+	 * Make sure that write index is 1 less than read index.
+	 */
+	if ((cur_write_idx + nentries)  == dest_ring->sw_index)
+		nentries -= 1;
 
 	write_index = CE_RING_IDX_ADD(nentries_mask, write_index, nentries);
 	ath10k_ce_dest_ring_write_index_set(ar, ctrl_addr, write_index);
-- 
2.10.0

^ permalink raw reply related

* Re: [PATCH 2/4] carl9170: fix debugfs crashes
From: Greg KH @ 2016-09-21 10:13 UTC (permalink / raw)
  To: Christian Lamparter
  Cc: Kalle Valo, Christian Lamparter, linux-kernel, linux-wireless,
	b43-dev, Nicolai Stange, Ben Greear, Larry Finger
In-Reply-To: <ccf228acb7af8ee3bbd82f72f28ebc068f37cb8e.1474140477.git.chunkeey@gmail.com>

On Sat, Sep 17, 2016 at 09:43:02PM +0200, Christian Lamparter wrote:
> Ben Greear reported:
> > I see lots of instability as soon as I load up the carl9710 NIC.
> > My application is going to be poking at it's debugfs files...
> >
> > BUG: KASAN: slab-out-of-bounds in carl9170_debugfs_read+0xd5/0x2a0
> > [carl9170] at addr ffff8801bc1208b0
> > Read of size 8 by task btserver/5888
> > =======================================================================
> > BUG kmalloc-256 (Tainted: G        W      ): kasan: bad access detected
> > -----------------------------------------------------------------------
> >
> > INFO: Allocated in seq_open+0x50/0x100 age=2690 cpu=2 pid=772
> >...
> 
> This breakage was caused by the introduction of intermediate
> fops in debugfs by commit 9fd4dcece43a
> ("debugfs: prevent access to possibly dead file_operations at file open")
> 
> Thankfully, the original/real fops are still available in d_fsdata.
> 
> Reported-by: Ben Greear <greearb@candelatech.com>
> Reviewed-by: Nicolai Stange <nicstange@gmail.com>
> Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
> Acked-by: Kalle Valo <kvalo@codeaurora.org>
> Cc: stable <stable@vger.kernel.org> # 4.7+
> ---
>  drivers/net/wireless/ath/carl9170/debug.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/wireless/ath/carl9170/debug.c b/drivers/net/wireless/ath/carl9170/debug.c
> index 01a0919..ad7ffd5 100644
> --- a/drivers/net/wireless/ath/carl9170/debug.c
> +++ b/drivers/net/wireless/ath/carl9170/debug.c
> @@ -75,7 +75,7 @@ static ssize_t carl9170_debugfs_read(struct file *file, char __user *userbuf,
>  
>  	if (!ar)
>  		return -ENODEV;
> -	dfops = container_of(file->f_path.dentry->d_fsdata,
> +	dfops = container_of(debugfs_real_fops(file),
>  			     struct carl9170_debugfs_fops, fops);
>  
>  	if (!dfops->read)
> @@ -128,7 +128,7 @@ static ssize_t carl9170_debugfs_write(struct file *file,
>  
>  	if (!ar)
>  		return -ENODEV;
> -	dfops = container_of(file->f_path.dentry->d_fsdata,
> +	dfops = container_of(debugfs_real_fops(file),
>  			     struct carl9170_debugfs_fops, fops);
>  	if (!dfops->write)
>  		return -ENOSYS;

What tree is this against?  I can't apply it to 4.8-rc5, or 4.8-rc7, are
you sure it is still needed?

thanks,

greg k-h

^ permalink raw reply

* Re: [PATCH v3 0/9] Add support for Neighbor Awareness Networking
From: Arend Van Spriel @ 2016-09-21  9:40 UTC (permalink / raw)
  To: Luca Coelho, johannes
  Cc: linux-wireless, ayala.beker, andrei.otcheretianski, Luca Coelho
In-Reply-To: <20160920143121.28247-1-luca@coelho.fi>



On 20-9-2016 16:31, Luca Coelho wrote:
> From: Luca Coelho <luciano.coelho@intel.com>
> 
> Hi,
> 
> Now v3 of the NAN patchset.  Ayala has taken care of the kbuild bot
> compilation errors and of all Arend's comments, except for the one
> about adding a helper function instead checking for P2P_DEVICE and NAN
> for non-netdev interfaces.
> 
> Comments are welcome, as always.

This series exports three functions to be used by drivers:

void cfg80211_free_nan_func(struct cfg80211_nan_func *f);
void cfg80211_nan_match(struct wireless_dev *wdev,
			struct cfg80211_nan_match_params *match, gfp_t gfp);
void cfg80211_nan_func_terminated(struct wireless_dev *wdev,
				  u8 inst_id,
				  enum nl80211_nan_func_term_reason reason,
				  u64 cookie, gfp_t gfp);

Some more descriptive text about the use of these functions would be
appropriate I think. For example looking at the patch series it seems
the responsibility to call cfg80211_free_nan_func() is in the driver
although allocation is done by cfg80211. Actually, I do not see mac80211
calling it so are we leaking there? I would expect it being called in
.del_nan_func() callback and/or .stop_nan(). Rather than exporting
cfg80211_free_nan_func() I would prefer calling
cfg80211_nan_func_terminated() and have cfg80211 take care of freeing
nan_func resources.

Regards,
Arend

> Cheers,
> Luca.
> 
> 
> Ayala Beker (9):
>   cfg80211: add start / stop NAN commands
>   mac80211: add boilerplate code for start / stop NAN
>   cfg80211: add add_nan_func / del_nan_func
>   cfg80211: allow the user space to change current NAN configuration
>   cfg80211: provide a function to report a match for NAN
>   cfg80211: Provide an API to report NAN function termination
>   mac80211: implement nan_change_conf
>   mac80211: Implement add_nan_func and rm_nan_func
>   mac80211: Add API to report NAN function match
> 
>  include/net/cfg80211.h       | 184 ++++++++++++-
>  include/net/mac80211.h       |  65 +++++
>  include/uapi/linux/nl80211.h | 253 +++++++++++++++++
>  net/mac80211/cfg.c           | 208 ++++++++++++++
>  net/mac80211/chan.c          |   6 +
>  net/mac80211/driver-ops.h    |  80 ++++++
>  net/mac80211/ieee80211_i.h   |  17 ++
>  net/mac80211/iface.c         |  28 +-
>  net/mac80211/main.c          |   8 +
>  net/mac80211/offchannel.c    |   4 +-
>  net/mac80211/rx.c            |   3 +
>  net/mac80211/trace.h         | 133 +++++++++
>  net/mac80211/util.c          |  50 +++-
>  net/wireless/chan.c          |   2 +
>  net/wireless/core.c          |  35 +++
>  net/wireless/core.h          |   3 +
>  net/wireless/mlme.c          |   1 +
>  net/wireless/nl80211.c       | 642 ++++++++++++++++++++++++++++++++++++++++++-
>  net/wireless/rdev-ops.h      |  58 ++++
>  net/wireless/trace.h         |  90 ++++++
>  net/wireless/util.c          |  28 +-
>  21 files changed, 1888 insertions(+), 10 deletions(-)
> 

^ permalink raw reply

* [PATCH] rsi: fix memory leak in module unload
From: Prameela Rani Garnepudi @ 2016-09-21  8:39 UTC (permalink / raw)
  To: linux-wireless
  Cc: kvalo, johannes.berg, hofrat, xypron.glpk, prameela.garnepudi,
	Prameela Rani Garnepudi

debugfs entry removal statement moved inside CONFIG_RSI_DEBUGSFS flag
added freeing of below structures
 * channel list for each supported band
 * rsi debugfs info

Signed-off-by: Prameela Rani Garnepudi <prameela.j04cs@gmail.com>
---
 drivers/net/wireless/rsi/rsi_91x_mac80211.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/drivers/net/wireless/rsi/rsi_91x_mac80211.c b/drivers/net/wireless/rsi/rsi_91x_mac80211.c
index dbb2389..f4bbf15 100644
--- a/drivers/net/wireless/rsi/rsi_91x_mac80211.c
+++ b/drivers/net/wireless/rsi/rsi_91x_mac80211.c
@@ -194,6 +194,7 @@ static void rsi_register_rates_channels(struct rsi_hw *adapter, int band)
 void rsi_mac80211_detach(struct rsi_hw *adapter)
 {
 	struct ieee80211_hw *hw = adapter->hw;
+	enum nl80211_band band;
 
 	if (hw) {
 		ieee80211_stop_queues(hw);
@@ -201,7 +202,17 @@ void rsi_mac80211_detach(struct rsi_hw *adapter)
 		ieee80211_free_hw(hw);
 	}
 
+	for (band = 0; band < 2; band++) {
+		struct ieee80211_supported_band *sband =
+					&adapter->sbands[band];
+
+		kfree(sband->channels);
+	}
+
+#ifdef CONFIG_RSI_DEBUGFS
 	rsi_remove_dbgfs(adapter);
+	kfree(adapter->dfsentry);
+#endif
 }
 EXPORT_SYMBOL_GPL(rsi_mac80211_detach);
 
-- 
2.4.11

^ permalink raw reply related

* wifi test automation?
From: Oleksij Rempel @ 2016-09-21  8:41 UTC (permalink / raw)
  To: linux-wireless

Hallo all,

What kind of WiFi testomation are you using?

Right now i found some links, do some of this used by WiFi devs?
http://avocado-framework.github.io/
https://autotest.github.io/
https://github.com/Wi-FiTestSuite
https://wireless.wiki.kernel.org/en/developers/testing/wifi-test

^ permalink raw reply

* Re: [PATCH v2 2/9] mac80211: add boilerplate code for start / stop NAN
From: Arend Van Spriel @ 2016-09-21  8:00 UTC (permalink / raw)
  To: Luca Coelho, Beker, Ayala, Otcheretianski, Andrei,
	johannes@sipsolutions.net
  Cc: linux-wireless@vger.kernel.org, Grumbach, Emmanuel
In-Reply-To: <1474382205.5664.196.camel@coelho.fi>



On 20-9-2016 16:36, Luca Coelho wrote:
> Hi Arend,
> 
> On Tue, 2016-09-20 at 14:29 +0200, Arend Van Spriel wrote:
>> On 20-9-2016 13:45, Beker, Ayala wrote:
>>> I don't think there is something in common to those interface types
>>> that can fit such a function semantically, so I decided not to
>>> change it.
>>> Do you have any idea?
>>
>> What is common is that these are both non-netdev interface types.
> 
> I tend to agree with you.  I also thought about an
> ieee80211_has_netdev() function for this, but I didn't check whether
> this was exactly what we need...

Maybe it does not fit all instances, but quite a few checks are there to
skip netdev related stuff.

> In any case, do you mind if we address this in a separate patch?

Fine by me.

Regards,
Arend

> --
> Cheers,
> Luca.
> 

^ permalink raw reply

* Re: Problem with 40Mhz on 2.5GHz with Intel 8260
From: Emmanuel Grumbach @ 2016-09-21  7:20 UTC (permalink / raw)
  To: Volker Mische; +Cc: linux-wireless
In-Reply-To: <d0faec3a-b915-f4f6-5cd4-a4cff7f1dd7b@gmail.com>

>>>
>>> I've set the iwlmvm power_scheme to 1 (and allowed the 40Mhz
>>> connection). First I thought it's good, but after a while the queue
>>> still got stuck. Especially after waking up from a suspend (not sure if
>>> that matters).
>>
>> Ok - good to know.
>>
>>>
>>> What are the next steps?
>>
>> can you try to unplug the power cord? I had reports that said that
>> this can help. Again, just a debug step to give us a hint of what you
>> can be experiencing.
>
> Unplug without any module parameters or combined with the
> cfg80211_disable_40mhz_24ghz or power_scheme one?

Nope - default configuration.

>
>
>> Besides this, we need to go for firmware debugging. But as I said,
>> don't expect this to be fast and easy. Please open a bug in
>> bugzilla.kernel.org. CC linuxwifi@intel.com and we will guide you
>> there on how to provide the information we need.
>
> OK, will do once I did try with unplugging. I've seen previous reports
> on the issue. As I'm already running a Kernel compiled from source I
> hope that at least I can move fast :)

Oh - the firmware debugging doesn't involve any source modification.

>
> Cheers,
>   Volker
>

^ permalink raw reply

* Re: Problem with 40Mhz on 2.5GHz with Intel 8260
From: Volker Mische @ 2016-09-21  7:01 UTC (permalink / raw)
  To: Emmanuel Grumbach; +Cc: linux-wireless
In-Reply-To: <CANUX_P1n3aVC=95q1=dJFU=7WYof=adm=P1anyhG0nnr9vKGKA@mail.gmail.com>

Hi,

On 09/21/2016 08:54 AM, Emmanuel Grumbach wrote:
>> On 09/20/2016 08:22 AM, Volker Mische wrote:
>>> On 09/20/2016 07:39 AM, Emmanuel Grumbach wrote:
>>>> On Mon, Sep 19, 2016 at 5:00 PM, Volker Mische <volker.mische@gmail.com> wrote:
>>>>> I'm having connectivity issues with an Intel 8260 on a 2.5GHz network
>>>>> when using 40Mhz. I'm getting errors like
>>>>>
>>>>>     Queue 2 stuck for 10000 ms.
>>>>>
>>>>> I've upgrade my system to the firmware version 21 (21.373438.0) and
>>>>> Kernel 4.8.0-rc6 in hope that it fixes the issue and to be able to debug
>>>>> the problem.
>>>>>
>>>>> I then found the page about platform noise [1]. I don't have any issue
>>>>> for several hours now (normally I was hitting the issue every few
>>>>> minutes) as I've set the cfg80211_disable_40mhz_24ghz parameter.
>>
>>>> We tried a few times to debug those, but they take a very long time to debug
>>>> since typically we need lots of reproductions and the firmware team
>>>> doesn't always
>>>> the time to look at the data immediately so in the end, the people who
>>>> reported this
>>>> originally went away.
>>>> Note that 40MHz on 2.4GHz is not an optimal configuration in crowded
>>>> environment,
>>>> but if you live in a place where you are pretty much the only one using those
>>>> frequencies, then, it can be beneficial.
>>>
>>> It's at home. I normally see only one other wifi (I need to check which
>>> frequency that one is using).
>>>
>>>
>>>> What you can try is to disable low power states (by using power_scheme
>>>> in iwlmvm) and see if it helps.
>>>
>>> I will try that.
>>
>> I've set the iwlmvm power_scheme to 1 (and allowed the 40Mhz
>> connection). First I thought it's good, but after a while the queue
>> still got stuck. Especially after waking up from a suspend (not sure if
>> that matters).
> 
> Ok - good to know.
> 
>>
>> What are the next steps?
> 
> can you try to unplug the power cord? I had reports that said that
> this can help. Again, just a debug step to give us a hint of what you
> can be experiencing.

Unplug without any module parameters or combined with the
cfg80211_disable_40mhz_24ghz or power_scheme one?


> Besides this, we need to go for firmware debugging. But as I said,
> don't expect this to be fast and easy. Please open a bug in
> bugzilla.kernel.org. CC linuxwifi@intel.com and we will guide you
> there on how to provide the information we need.

OK, will do once I did try with unplugging. I've seen previous reports
on the issue. As I'm already running a Kernel compiled from source I
hope that at least I can move fast :)

Cheers,
  Volker

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox