diff mbox

[V2,3/7] brcmfmac: Increase nr of supported flowrings.

Message ID 1439708139-7527-4-git-send-email-arend@broadcom.com (mailing list archive)
State Changes Requested
Delegated to: Kalle Valo
Headers show

Commit Message

Arend van Spriel Aug. 16, 2015, 6:55 a.m. UTC
From: Hante Meuleman <meuleman@broadcom.com>

Next generation devices will have firmware which will have more
than 256 flowrings. This patch increases the maximum number of
supported flowrings to 512.

Reviewed-by: Arend Van Spriel <arend@broadcom.com>
Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
---
 drivers/net/wireless/brcm80211/brcmfmac/flowring.c | 38 ++++++++++++----------
 drivers/net/wireless/brcm80211/brcmfmac/flowring.h | 20 ++++++------
 drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c   | 11 +++++--
 drivers/net/wireless/brcm80211/brcmfmac/msgbuf.h   |  2 +-
 4 files changed, 41 insertions(+), 30 deletions(-)

Comments

Rafał Miłecki Aug. 19, 2015, 9:56 p.m. UTC | #1
On 16 August 2015 at 08:55, Arend van Spriel <arend@broadcom.com> wrote:
> From: Hante Meuleman <meuleman@broadcom.com>
>
> Next generation devices will have firmware which will have more
> than 256 flowrings. This patch increases the maximum number of
> supported flowrings to 512.
>
> Reviewed-by: Arend Van Spriel <arend@broadcom.com>
> Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com>
> Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
> Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
> Signed-off-by: Arend van Spriel <arend@broadcom.com>

This is a patch that for my device triggers:
Unable to handle kernel NULL pointer dereference at virtual address 00000014

It seems to happen even when using only 1 AP interface.
[   87.010649] ------------[ cut here ]------------
[   87.015303] WARNING: CPU: 1 PID: 1026 at /home/zajec/openwrt/openwrt-arm.git/build_dir/target-arm_cortex-a9_musl-1.1.10_eabi/linux-bcm53xx/compat-wireless-2015-07-21/drivers/net/wireless/brcm80211/brcmfmac/core.c:1144 brcmf_netdev_wait_pend8021x+0xf0/0x100 [brcmfmac])
[   87.039039] Modules linked in: pppoe ppp_async iptable_nat brcmfmac b43 pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 mac80211 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntn
[   87.105219] CPU: 1 PID: 1026 Comm: hostapd Not tainted 3.18.20 #16
[   87.111382] Backtrace: 
[   87.113853] [<c0015490>] (dump_backtrace) from [<c001569c>] (show_stack+0x18/0x1c)
[   87.121395]  r6:bf285f6d r5:00000009 r4:00000000 r3:dc8cb014
[   87.127072] [<c0015684>] (show_stack) from [<c01638d0>] (dump_stack+0x7c/0x98)
[   87.134289] [<c0163854>] (dump_stack) from [<c001fe3c>] (warn_slowpath_common+0x70/0x94)
[   87.142357]  r4:00000000 r3:dc8cb014
[   87.145942] [<c001fdcc>] (warn_slowpath_common) from [<c001ff04>] (warn_slowpath_null+0x24/0x2c)
[   87.154690]  r8:00000000 r7:c68c0000 r6:c721dd24 r5:c721dc80 r4:00000001
[   87.161437] [<c001fee0>] (warn_slowpath_null) from [<bf279958>] (brcmf_netdev_wait_pend8021x+0xf0/0x100 [brcmfmac])
[   87.171858] [<bf279868>] (brcmf_netdev_wait_pend8021x [brcmfmac]) from [<bf26a210>] (brcmf_cfg80211_get_key+0x1dc/0x3e0 [brcmfmac])
[   87.183634]  r6:c6493b88 r5:c03a7008 r4:c721dc80
[   87.188278] [<bf26a170>] (brcmf_cfg80211_get_key [brcmfmac]) from [<bf26a47c>] (brcmf_cfg80211_del_key+0x68/0x98 [brcmfmac])
[   87.199445]  r6:c721dc80 r5:c03a7008 r4:00000000
[   87.204127] [<bf26a414>] (brcmf_cfg80211_del_key [brcmfmac]) from [<bf168360>] (nl80211_del_key+0xe4/0x144 [cfg80211])
[   87.214782]  r6:00000000 r5:c6ab9920 r4:c721d800
[   87.219435] [<bf16827c>] (nl80211_del_key [cfg80211]) from [<c024e550>] (genl_rcv_msg+0x25c/0x2f4)
[   87.228355]  r7:c6af1040 r6:c6ab9914 r5:bf17d134 r4:bf185c78
[   87.234041] [<c024e2f4>] (genl_rcv_msg) from [<c024da20>] (netlink_rcv_skb+0x60/0xb4)
[   87.241841]  r10:c6493dd0 r9:00000000 r8:c6493d0c r7:00000030 r6:c024e2f4 r5:c6af1040
[   87.249669]  r4:c6ab9900
[   87.252209] [<c024d9c0>] (netlink_rcv_skb) from [<c024e2e0>] (genl_rcv+0x28/0x3c)
[   87.259656]  r6:c6921000 r5:c6af1040 r4:c03baf78 r3:00000001
[   87.265333] [<c024e2b8>] (genl_rcv) from [<c024d394>] (netlink_unicast+0x138/0x22c)
[   87.272966]  r5:c6af1040 r4:c79fbc00
[   87.276548] [<c024d25c>] (netlink_unicast) from [<c024d85c>] (netlink_sendmsg+0x32c/0x394)
[   87.284787]  r9:00000030 r8:c6493f5c r7:c6921000 r6:00000000 r5:00000000 r4:c6af1040
[   87.292562] [<c024d530>] (netlink_sendmsg) from [<c0215234>] (sock_sendmsg+0x78/0x8c)
[   87.300352]  r10:c6493e3c r9:c74de340 r8:00000000 r7:c78fd0c0 r6:c6493f5c r5:00000030
[   87.308196]  r4:c74de340
[   87.310739] [<c02151bc>] (sock_sendmsg) from [<c0216a6c>] (___sys_sendmsg.part.30+0x198/0x238)
[   87.319308]  r7:c6493e7c r6:00000000 r5:00000030 r4:c6493f5c
[   87.324986] [<c02168d4>] (___sys_sendmsg.part.30) from [<c0217ba4>] (__sys_sendmsg+0x54/0x78)
[   87.333477]  r10:00000000 r9:c6492000 r8:c0008aa4 r7:00000128 r6:be9a2b90 r5:00000000
[   87.341312]  r4:c74de340
[   87.343846] [<c0217b50>] (__sys_sendmsg) from [<c0217bd8>] (SyS_sendmsg+0x10/0x14)
[   87.351387]  r6:b6fded70 r5:00000000 r4:00000000
[   87.356013] [<c0217bc8>] (SyS_sendmsg) from [<c0008900>] (ret_fast_syscall+0x0/0x38)
[   87.363727] ---[ end trace 1cbe7afa5aa428d1 ]---
[   87.420645] ------------[ cut here ]------------
[   87.425294] WARNING: CPU: 1 PID: 1026 at /home/zajec/openwrt/openwrt-arm.git/build_dir/target-arm_cortex-a9_musl-1.1.10_eabi/linux-bcm53xx/compat-wireless-2015-07-21/drivers/net/wireless/brcm80211/brcmfmac/core.c:1144 brcmf_netdev_wait_pend8021x+0xf0/0x100 [brcmfmac])
[   87.449004] Modules linked in: pppoe ppp_async iptable_nat brcmfmac b43 pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 mac80211 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntn
[   87.515056] CPU: 1 PID: 1026 Comm: hostapd Tainted: G        W      3.18.20 #16
[   87.522342] Backtrace: 
[   87.524809] [<c0015490>] (dump_backtrace) from [<c001569c>] (show_stack+0x18/0x1c)
[   87.532356]  r6:bf285f6d r5:00000009 r4:00000000 r3:dc8cb014
[   87.538033] [<c0015684>] (show_stack) from [<c01638d0>] (dump_stack+0x7c/0x98)
[   87.545247] [<c0163854>] (dump_stack) from [<c001fe3c>] (warn_slowpath_common+0x70/0x94)
[   87.553311]  r4:00000000 r3:dc8cb014
[   87.556895] [<c001fdcc>] (warn_slowpath_common) from [<c001ff04>] (warn_slowpath_null+0x24/0x2c)
[   87.565643]  r8:00000000 r7:c68c0000 r6:c721dd24 r5:c721dc80 r4:00000001
[   87.572391] [<c001fee0>] (warn_slowpath_null) from [<bf279958>] (brcmf_netdev_wait_pend8021x+0xf0/0x100 [brcmfmac])
[   87.582810] [<bf279868>] (brcmf_netdev_wait_pend8021x [brcmfmac]) from [<bf26a210>] (brcmf_cfg80211_get_key+0x1dc/0x3e0 [brcmfmac])
[   87.594587]  r6:c6493b88 r5:c03a7008 r4:c721dc80
[   87.599230] [<bf26a170>] (brcmf_cfg80211_get_key [brcmfmac]) from [<bf26a47c>] (brcmf_cfg80211_del_key+0x68/0x98 [brcmfmac])
[   87.610399]  r6:c721dc80 r5:c03a7008 r4:00000000
[   87.615078] [<bf26a414>] (brcmf_cfg80211_del_key [brcmfmac]) from [<bf168360>] (nl80211_del_key+0xe4/0x144 [cfg80211])
[   87.625728]  r6:00000000 r5:c72c6520 r4:c721d800
[   87.630377] [<bf16827c>] (nl80211_del_key [cfg80211]) from [<c024e550>] (genl_rcv_msg+0x25c/0x2f4)
[   87.639300]  r7:c6af1040 r6:c72c6514 r5:bf17d134 r4:bf185c78
[   87.644984] [<c024e2f4>] (genl_rcv_msg) from [<c024da20>] (netlink_rcv_skb+0x60/0xb4)
[   87.652785]  r10:c6493dd0 r9:00000000 r8:c6493d0c r7:00000030 r6:c024e2f4 r5:c6af1040
[   87.660613]  r4:c72c6500
[   87.663154] [<c024d9c0>] (netlink_rcv_skb) from [<c024e2e0>] (genl_rcv+0x28/0x3c)
[   87.670601]  r6:c6921000 r5:c6af1040 r4:c03baf78 r3:00000001
[   87.676279] [<c024e2b8>] (genl_rcv) from [<c024d394>] (netlink_unicast+0x138/0x22c)
[   87.683911]  r5:c6af1040 r4:c79fbc00
[   87.687502] [<c024d25c>] (netlink_unicast) from [<c024d85c>] (netlink_sendmsg+0x32c/0x394)
[   87.695734]  r9:00000030 r8:c6493f5c r7:c6921000 r6:00000000 r5:00000000 r4:c6af1040
[   87.703502] [<c024d530>] (netlink_sendmsg) from [<c0215234>] (sock_sendmsg+0x78/0x8c)
[   87.711306]  r10:c6493e3c r9:c74de340 r8:00000000 r7:c78fd0c0 r6:c6493f5c r5:00000030
[   87.719140]  r4:c74de340
[   87.721684] [<c02151bc>] (sock_sendmsg) from [<c0216a6c>] (___sys_sendmsg.part.30+0x198/0x238)
[   87.730252]  r7:c6493e7c r6:00000000 r5:00000030 r4:c6493f5c
[   87.735930] [<c02168d4>] (___sys_sendmsg.part.30) from [<c0217ba4>] (__sys_sendmsg+0x54/0x78)
[   87.744422]  r10:00000000 r9:c6492000 r8:c0008aa4 r7:00000128 r6:be9a2bc0 r5:00000000
[   87.752266]  r4:c74de340
[   87.754797] [<c0217b50>] (__sys_sendmsg) from [<c0217bd8>] (SyS_sendmsg+0x10/0x14)
[   87.762341]  r6:b6fded70 r5:00000000 r4:00000000
[   87.766965] [<c0217bc8>] (SyS_sendmsg) from [<c0008900>] (ret_fast_syscall+0x0/0x38)
[   87.774681] ---[ end trace 1cbe7afa5aa428d2 ]---
[   87.830647] ------------[ cut here ]------------
[   87.835295] WARNING: CPU: 1 PID: 1026 at /home/zajec/openwrt/openwrt-arm.git/build_dir/target-arm_cortex-a9_musl-1.1.10_eabi/linux-bcm53xx/compat-wireless-2015-07-21/drivers/net/wireless/brcm80211/brcmfmac/core.c:1144 brcmf_netdev_wait_pend8021x+0xf0/0x100 [brcmfmac])
[   87.859006] Modules linked in: pppoe ppp_async iptable_nat brcmfmac b43 pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 mac80211 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntn
[   87.925067] CPU: 1 PID: 1026 Comm: hostapd Tainted: G        W      3.18.20 #16
[   87.932352] Backtrace: 
[   87.934821] [<c0015490>] (dump_backtrace) from [<c001569c>] (show_stack+0x18/0x1c)
[   87.942366]  r6:bf285f6d r5:00000009 r4:00000000 r3:dc8cb014
[   87.948046] [<c0015684>] (show_stack) from [<c01638d0>] (dump_stack+0x7c/0x98)
[   87.955259] [<c0163854>] (dump_stack) from [<c001fe3c>] (warn_slowpath_common+0x70/0x94)
[   87.963321]  r4:00000000 r3:dc8cb014
[   87.966905] [<c001fdcc>] (warn_slowpath_common) from [<c001ff04>] (warn_slowpath_null+0x24/0x2c)
[   87.975654]  r8:00000000 r7:c68c0000 r6:c721dd24 r5:c721dc80 r4:00000001
[   87.982396] [<c001fee0>] (warn_slowpath_null) from [<bf279958>] (brcmf_netdev_wait_pend8021x+0xf0/0x100 [brcmfmac])
[   87.992815] [<bf279868>] (brcmf_netdev_wait_pend8021x [brcmfmac]) from [<bf26a210>] (brcmf_cfg80211_get_key+0x1dc/0x3e0 [brcmfmac])
[   88.004590]  r6:c6493b88 r5:c03a7008 r4:c721dc80
[   88.009232] [<bf26a170>] (brcmf_cfg80211_get_key [brcmfmac]) from [<bf26a47c>] (brcmf_cfg80211_del_key+0x68/0x98 [brcmfmac])
[   88.020408]  r6:c721dc80 r5:c03a7008 r4:00000000
[   88.025078] [<bf26a414>] (brcmf_cfg80211_del_key [brcmfmac]) from [<bf168360>] (nl80211_del_key+0xe4/0x144 [cfg80211])
[   88.035748]  r6:00000000 r5:c72c6520 r4:c721d800
[   88.040400] [<bf16827c>] (nl80211_del_key [cfg80211]) from [<c024e550>] (genl_rcv_msg+0x25c/0x2f4)
[   88.049322]  r7:c7028dc0 r6:c72c6514 r5:bf17d134 r4:bf185c78
[   88.055004] [<c024e2f4>] (genl_rcv_msg) from [<c024da20>] (netlink_rcv_skb+0x60/0xb4)
[   88.062810]  r10:c6493dd0 r9:00000000 r8:c6493d0c r7:00000030 r6:c024e2f4 r5:c7028dc0
[   88.070659]  r4:c72c6500
[   88.073192] [<c024d9c0>] (netlink_rcv_skb) from [<c024e2e0>] (genl_rcv+0x28/0x3c)
[   88.080646]  r6:c6921000 r5:c7028dc0 r4:c03baf78 r3:00000001
[   88.086315] [<c024e2b8>] (genl_rcv) from [<c024d394>] (netlink_unicast+0x138/0x22c)
[   88.093948]  r5:c7028dc0 r4:c79fbc00
[   88.097531] [<c024d25c>] (netlink_unicast) from [<c024d85c>] (netlink_sendmsg+0x32c/0x394)
[   88.105764]  r9:00000030 r8:c6493f5c r7:c6921000 r6:00000000 r5:00000000 r4:c7028dc0
[   88.113542] [<c024d530>] (netlink_sendmsg) from [<c0215234>] (sock_sendmsg+0x78/0x8c)
[   88.121342]  r10:c6493e3c r9:c74de340 r8:00000000 r7:c78fd0c0 r6:c6493f5c r5:00000030
[   88.129177]  r4:c74de340
[   88.131721] [<c02151bc>] (sock_sendmsg) from [<c0216a6c>] (___sys_sendmsg.part.30+0x198/0x238)
[   88.140289]  r7:c6493e7c r6:00000000 r5:00000030 r4:c6493f5c
[   88.145966] [<c02168d4>] (___sys_sendmsg.part.30) from [<c0217ba4>] (__sys_sendmsg+0x54/0x78)
[   88.154458]  r10:00000000 r9:c6492000 r8:c0008aa4 r7:00000128 r6:be9a1f08 r5:00000000
[   88.162323]  r4:c74de340
[   88.164864] [<c0217b50>] (__sys_sendmsg) from [<c0217bd8>] (SyS_sendmsg+0x10/0x14)
[   88.172410]  r6:b6fdedc0 r5:00000000 r4:00000000
[   88.177047] [<c0217bc8>] (SyS_sendmsg) from [<c0008900>] (ret_fast_syscall+0x0/0x38)
[   88.184765] ---[ end trace 1cbe7afa5aa428d3 ]---
[   88.240646] ------------[ cut here ]------------
[   88.245290] WARNING: CPU: 1 PID: 1026 at /home/zajec/openwrt/openwrt-arm.git/build_dir/target-arm_cortex-a9_musl-1.1.10_eabi/linux-bcm53xx/compat-wireless-2015-07-21/drivers/net/wireless/brcm80211/brcmfmac/core.c:1144 brcmf_netdev_wait_pend8021x+0xf0/0x100 [brcmfmac])
[   88.268999] Modules linked in: pppoe ppp_async iptable_nat brcmfmac b43 pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 mac80211 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntn
[   88.335062] CPU: 1 PID: 1026 Comm: hostapd Tainted: G        W      3.18.20 #16
[   88.342347] Backtrace: 
[   88.344816] [<c0015490>] (dump_backtrace) from [<c001569c>] (show_stack+0x18/0x1c)
[   88.352361]  r6:bf285f6d r5:00000009 r4:00000000 r3:dc8cb014
[   88.358039] [<c0015684>] (show_stack) from [<c01638d0>] (dump_stack+0x7c/0x98)
[   88.365254] [<c0163854>] (dump_stack) from [<c001fe3c>] (warn_slowpath_common+0x70/0x94)
[   88.373316]  r4:00000000 r3:dc8cb014
[   88.376900] [<c001fdcc>] (warn_slowpath_common) from [<c001ff04>] (warn_slowpath_null+0x24/0x2c)
[   88.385648]  r8:00000000 r7:c68c0000 r6:c721dd24 r5:c721dc80 r4:00000001
[   88.392398] [<c001fee0>] (warn_slowpath_null) from [<bf279958>] (brcmf_netdev_wait_pend8021x+0xf0/0x100 [brcmfmac])
[   88.402816] [<bf279868>] (brcmf_netdev_wait_pend8021x [brcmfmac]) from [<bf26a210>] (brcmf_cfg80211_get_key+0x1dc/0x3e0 [brcmfmac])
[   88.414592]  r6:c6493b88 r5:c03a7008 r4:c721dc80
[   88.419227] [<bf26a170>] (brcmf_cfg80211_get_key [brcmfmac]) from [<bf26a47c>] (brcmf_cfg80211_del_key+0x68/0x98 [brcmfmac])
[   88.430395]  r6:c721dc80 r5:c03a7008 r4:00000000
[   88.435076] [<bf26a414>] (brcmf_cfg80211_del_key [brcmfmac]) from [<bf168360>] (nl80211_del_key+0xe4/0x144 [cfg80211])
[   88.445733]  r6:00000000 r5:c6ab9920 r4:c721d800
[   88.450381] [<bf16827c>] (nl80211_del_key [cfg80211]) from [<c024e550>] (genl_rcv_msg+0x25c/0x2f4)
[   88.459308]  r7:c7028dc0 r6:c6ab9914 r5:bf17d134 r4:bf185c78
[   88.464991] [<c024e2f4>] (genl_rcv_msg) from [<c024da20>] (netlink_rcv_skb+0x60/0xb4)
[   88.472790]  r10:c6493dd0 r9:00000000 r8:c6493d0c r7:00000030 r6:c024e2f4 r5:c7028dc0
[   88.480618]  r4:c6ab9900
[   88.483159] [<c024d9c0>] (netlink_rcv_skb) from [<c024e2e0>] (genl_rcv+0x28/0x3c)
[   88.490606]  r6:c6921000 r5:c7028dc0 r4:c03baf78 r3:00000001
[   88.496283] [<c024e2b8>] (genl_rcv) from [<c024d394>] (netlink_unicast+0x138/0x22c)
[   88.503915]  r5:c7028dc0 r4:c79fbc00
[   88.507498] [<c024d25c>] (netlink_unicast) from [<c024d85c>] (netlink_sendmsg+0x32c/0x394)
[   88.515732]  r9:00000030 r8:c6493f5c r7:c6921000 r6:00000000 r5:00000000 r4:c7028dc0
[   88.523500] [<c024d530>] (netlink_sendmsg) from [<c0215234>] (sock_sendmsg+0x78/0x8c)
[   88.531301]  r10:c6493e3c r9:c74de340 r8:00000000 r7:c78fd0c0 r6:c6493f5c r5:00000030
[   88.539128]  r4:c74de340
[   88.541673] [<c02151bc>] (sock_sendmsg) from [<c0216a6c>] (___sys_sendmsg.part.30+0x198/0x238)
[   88.550240]  r7:c6493e7c r6:00000000 r5:00000030 r4:c6493f5c
[   88.555919] [<c02168d4>] (___sys_sendmsg.part.30) from [<c0217ba4>] (__sys_sendmsg+0x54/0x78)
[   88.564410]  r10:00000000 r9:c6492000 r8:c0008aa4 r7:00000128 r6:be9a1ea0 r5:00000000
[   88.572254]  r4:c74de340
[   88.574785] [<c0217b50>] (__sys_sendmsg) from [<c0217bd8>] (SyS_sendmsg+0x10/0x14)
[   88.582320]  r6:b6fdedc0 r5:00000000 r4:00000000
[   88.586944] [<c0217bc8>] (SyS_sendmsg) from [<c0008900>] (ret_fast_syscall+0x0/0x38)
[   88.594661] ---[ end trace 1cbe7afa5aa428d4 ]---
[   91.090649] ------------[ cut here ]------------
[   91.095300] WARNING: CPU: 1 PID: 1026 at /home/zajec/openwrt/openwrt-arm.git/build_dir/target-arm_cortex-a9_musl-1.1.10_eabi/linux-bcm53xx/compat-wireless-2015-07-21/drivers/net/wireless/brcm80211/brcmfmac/core.c:1144 brcmf_netdev_wait_pend8021x+0xf0/0x100 [brcmfmac])
[   91.119011] Modules linked in: pppoe ppp_async iptable_nat brcmfmac b43 pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 mac80211 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntn
[   91.185069] CPU: 1 PID: 1026 Comm: hostapd Tainted: G        W      3.18.20 #16
[   91.192353] Backtrace: 
[   91.194824] [<c0015490>] (dump_backtrace) from [<c001569c>] (show_stack+0x18/0x1c)
[   91.202367]  r6:bf285f6d r5:00000009 r4:00000000 r3:dc8cb014
[   91.208046] [<c0015684>] (show_stack) from [<c01638d0>] (dump_stack+0x7c/0x98)
[   91.215260] [<c0163854>] (dump_stack) from [<c001fe3c>] (warn_slowpath_common+0x70/0x94)
[   91.223324]  r4:00000000 r3:dc8cb014
[   91.226908] [<c001fdcc>] (warn_slowpath_common) from [<c001ff04>] (warn_slowpath_null+0x24/0x2c)
[   91.235656]  r8:00000000 r7:c68c0000 r6:c721dd24 r5:c721dc80 r4:00000001
[   91.242405] [<c001fee0>] (warn_slowpath_null) from [<bf279958>] (brcmf_netdev_wait_pend8021x+0xf0/0x100 [brcmfmac])
[   91.252823] [<bf279868>] (brcmf_netdev_wait_pend8021x [brcmfmac]) from [<bf26a210>] (brcmf_cfg80211_get_key+0x1dc/0x3e0 [brcmfmac])
[   91.264599]  r6:c6493b88 r5:c03a7008 r4:c721dc80
[   91.269244] [<bf26a170>] (brcmf_cfg80211_get_key [brcmfmac]) from [<bf26a47c>] (brcmf_cfg80211_del_key+0x68/0x98 [brcmfmac])
[   91.280412]  r6:c721dc80 r5:c03a7008 r4:00000000
[   91.285092] [<bf26a414>] (brcmf_cfg80211_del_key [brcmfmac]) from [<bf168360>] (nl80211_del_key+0xe4/0x144 [cfg80211])
[   91.295749]  r6:00000000 r5:c6ab9920 r4:c721d800
[   91.300400] [<bf16827c>] (nl80211_del_key [cfg80211]) from [<c024e550>] (genl_rcv_msg+0x25c/0x2f4)
[   91.309321]  r7:c6af1700 r6:c6ab9914 r5:bf17d134 r4:bf185c78
[   91.315006] [<c024e2f4>] (genl_rcv_msg) from [<c024da20>] (netlink_rcv_skb+0x60/0xb4)
[   91.322814]  r10:c6493dd0 r9:00000000 r8:c6493d0c r7:00000030 r6:c024e2f4 r5:c6af1700
[   91.330661]  r4:c6ab9900
[   91.333194] [<c024d9c0>] (netlink_rcv_skb) from [<c024e2e0>] (genl_rcv+0x28/0x3c)
[   91.340649]  r6:c6921000 r5:c6af1700 r4:c03baf78 r3:00000001
[   91.346326] [<c024e2b8>] (genl_rcv) from [<c024d394>] (netlink_unicast+0x138/0x22c)
[   91.353959]  r5:c6af1700 r4:c79fbc00
[   91.357540] [<c024d25c>] (netlink_unicast) from [<c024d85c>] (netlink_sendmsg+0x32c/0x394)
[   91.365774]  r9:00000030 r8:c6493f5c r7:c6921000 r6:00000000 r5:00000000 r4:c6af1700
[   91.373543] [<c024d530>] (netlink_sendmsg) from [<c0215234>] (sock_sendmsg+0x78/0x8c)
[   91.381344]  r10:c6493e3c r9:c74de340 r8:00000000 r7:c78fd0c0 r6:c6493f5c r5:00000030
[   91.389178]  r4:c74de340
[   91.391723] [<c02151bc>] (sock_sendmsg) from [<c0216a6c>] (___sys_sendmsg.part.30+0x198/0x238)
[   91.400291]  r7:c6493e7c r6:00000000 r5:00000030 r4:c6493f5c
[   91.405971] [<c02168d4>] (___sys_sendmsg.part.30) from [<c0217ba4>] (__sys_sendmsg+0x54/0x78)
[   91.414460]  r10:00000000 r9:c6492000 r8:c0008aa4 r7:00000128 r6:be9a1e48 r5:00000000
[   91.422297]  r4:c74de340
[   91.424827] [<c0217b50>] (__sys_sendmsg) from [<c0217bd8>] (SyS_sendmsg+0x10/0x14)
[   91.432371]  r6:b6fdedc0 r5:00000000 r4:00000000
[   91.436996] [<c0217bc8>] (SyS_sendmsg) from [<c0008900>] (ret_fast_syscall+0x0/0x38)
[   91.444712] ---[ end trace 1cbe7afa5aa428d5 ]---
[   91.500647] ------------[ cut here ]------------
[   91.505289] WARNING: CPU: 1 PID: 1026 at /home/zajec/openwrt/openwrt-arm.git/build_dir/target-arm_cortex-a9_musl-1.1.10_eabi/linux-bcm53xx/compat-wireless-2015-07-21/drivers/net/wireless/brcm80211/brcmfmac/core.c:1144 brcmf_netdev_wait_pend8021x+0xf0/0x100 [brcmfmac])
[   91.529009] Modules linked in: pppoe ppp_async iptable_nat brcmfmac b43 pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 mac80211 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntn
[   91.595072] CPU: 1 PID: 1026 Comm: hostapd Tainted: G        W      3.18.20 #16
[   91.602357] Backtrace: 
[   91.604828] [<c0015490>] (dump_backtrace) from [<c001569c>] (show_stack+0x18/0x1c)
[   91.612373]  r6:bf285f6d r5:00000009 r4:00000000 r3:dc8cb014
[   91.618048] [<c0015684>] (show_stack) from [<c01638d0>] (dump_stack+0x7c/0x98)
[   91.625262] [<c0163854>] (dump_stack) from [<c001fe3c>] (warn_slowpath_common+0x70/0x94)
[   91.633325]  r4:00000000 r3:dc8cb014
[   91.636911] [<c001fdcc>] (warn_slowpath_common) from [<c001ff04>] (warn_slowpath_null+0x24/0x2c)
[   91.645657]  r8:00000000 r7:c68c0000 r6:c721dd24 r5:c721dc80 r4:00000001
[   91.652403] [<c001fee0>] (warn_slowpath_null) from [<bf279958>] (brcmf_netdev_wait_pend8021x+0xf0/0x100 [brcmfmac])
[   91.662816] [<bf279868>] (brcmf_netdev_wait_pend8021x [brcmfmac]) from [<bf26a210>] (brcmf_cfg80211_get_key+0x1dc/0x3e0 [brcmfmac])
[   91.674593]  r6:c6493b88 r5:c03a7008 r4:c721dc80
[   91.679228] [<bf26a170>] (brcmf_cfg80211_get_key [brcmfmac]) from [<bf26a47c>] (brcmf_cfg80211_del_key+0x68/0x98 [brcmfmac])
[   91.690396]  r6:c721dc80 r5:c03a7008 r4:00000000
[   91.695079] [<bf26a414>] (brcmf_cfg80211_del_key [brcmfmac]) from [<bf168360>] (nl80211_del_key+0xe4/0x144 [cfg80211])
[   91.705733]  r6:00000000 r5:c72c6520 r4:c721d800
[   91.710384] [<bf16827c>] (nl80211_del_key [cfg80211]) from [<c024e550>] (genl_rcv_msg+0x25c/0x2f4)
[   91.719307]  r7:c6af1700 r6:c72c6514 r5:bf17d134 r4:bf185c78
[   91.724992] [<c024e2f4>] (genl_rcv_msg) from [<c024da20>] (netlink_rcv_skb+0x60/0xb4)
[   91.732791]  r10:c6493dd0 r9:00000000 r8:c6493d0c r7:00000030 r6:c024e2f4 r5:c6af1700
[   91.740619]  r4:c72c6500
[   91.743161] [<c024d9c0>] (netlink_rcv_skb) from [<c024e2e0>] (genl_rcv+0x28/0x3c)
[   91.750608]  r6:c6921000 r5:c6af1700 r4:c03baf78 r3:00000001
[   91.756285] [<c024e2b8>] (genl_rcv) from [<c024d394>] (netlink_unicast+0x138/0x22c)
[   91.763917]  r5:c6af1700 r4:c79fbc00
[   91.767500] [<c024d25c>] (netlink_unicast) from [<c024d85c>] (netlink_sendmsg+0x32c/0x394)
[   91.775733]  r9:00000030 r8:c6493f5c r7:c6921000 r6:00000000 r5:00000000 r4:c6af1700
[   91.783501] [<c024d530>] (netlink_sendmsg) from [<c0215234>] (sock_sendmsg+0x78/0x8c)
[   91.791302]  r10:c6493e3c r9:c74de340 r8:00000000 r7:c78fd0c0 r6:c6493f5c r5:00000030
[   91.799130]  r4:c74de340
[   91.801674] [<c02151bc>] (sock_sendmsg) from [<c0216a6c>] (___sys_sendmsg.part.30+0x198/0x238)
[   91.810241]  r7:c6493e7c r6:00000000 r5:00000030 r4:c6493f5c
[   91.815920] [<c02168d4>] (___sys_sendmsg.part.30) from [<c0217ba4>] (__sys_sendmsg+0x54/0x78)
[   91.824410]  r10:00000000 r9:c6492000 r8:c0008aa4 r7:00000128 r6:be9a1db0 r5:00000000
[   91.832247]  r4:c74de340
[   91.834778] [<c0217b50>] (__sys_sendmsg) from [<c0217bd8>] (SyS_sendmsg+0x10/0x14)
[   91.842320]  r6:b6fdedc0 r5:00000000 r4:00000000
[   91.846945] [<c0217bc8>] (SyS_sendmsg) from [<c0008900>] (ret_fast_syscall+0x0/0x38)
[   91.854661] ---[ end trace 1cbe7afa5aa428d6 ]---
[   91.860425] Unable to handle kernel NULL pointer dereference at virtual address 00000014
[   91.868485] pgd = c68e8000
[   91.871179] [00000014] *pgd=0651f831, *pte=00000000, *ppte=00000000
[   91.877440] Internal error: Oops: 17 [#1] SMP ARM
[   91.882117] Modules linked in: pppoe ppp_async iptable_nat brcmfmac b43 pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 mac80211 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntn
[   91.948099] CPU: 1 PID: 1026 Comm: hostapd Tainted: G        W      3.18.20 #16
[   91.955371] task: c78fd0c0 ti: c6492000 task.ti: c6492000
[   91.960754] PC is at _raw_spin_lock_irqsave+0x1c/0x58
[   91.965791] LR is at skb_queue_tail+0x20/0x50
[   91.970129] pc : [<c0011228>]    lr : [<c021dbe8>]    psr: 00000093
[   91.970129] sp : c6493bf8  ip : c6493c08  fp : c6493c04
[   91.981547] r10: 00000000  r9 : c72c2000  r8 : 00000000
[   91.986749] r7 : c6af1400  r6 : 00000014  r5 : c6af1400  r4 : 00000008
[   91.993247] r3 : 00000014  r2 : c6af1400  r1 : c6af1400  r0 : 00000013
[   91.999746] Flags: nzcv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment user
[   92.006933] Control: 10c5387d  Table: 068e804a  DAC: 00000015
[   92.012652] Process hostapd (pid: 1026, stack limit = 0xc64921b8)
[   92.018718] Stack: (0xc6493bf8 to 0xc6494000)
[   92.023057] 3be0:                                                       c6493c24 c6493c08
[   92.031199] 3c00: c021dbe8 c0011218 c734c400 00000000 00000006 c72c2000 c6493c44 c6493c28
[   92.039338] 3c20: bf27bf0c c021dbd4 c6af1400 c7211a00 00000006 c6af1400 c6493c7c c6493c48
[   92.047476] 3c40: bf27cefc bf27beec c6493c6c 00000000 c024d21c c6af1400 c7370000 c7380000
[   92.055615] 3c60: c721dc80 00000000 c6b0b402 c721d800 c6493ca4 c6493c80 bf2751e8 bf27cdf8
[   92.063755] 3c80: c721d800 c7380000 c6af1400 c6af1400 c6b0b402 c71a2c00 c6493ccc c6493ca8
[   92.071893] 3ca0: bf278af8 bf275178 bf278988 00000001 c6af1400 c72c7200 c71a2c00 00000000
[   92.080032] 3cc0: c6493d1c c6493cd0 c022cf54 bf278994 000004d0 c6493d24 00000000 00000000
[   92.088170] 3ce0: 00000000 00000000 c6af1400 c721d800 c6493d1c 00000001 c6af1400 c72c7200
[   92.096310] 3d00: c71a2c00 c6af1400 c721d800 c72c7268 c6493d54 c6493d20 c0244f14 c022cd10
[   92.104449] 3d20: c6492000 00000010 00000063 c72c7200 c6af1400 c721d800 c71a2c00 00000000
[   92.112587] 3d40: 00000000 c72c7268 c6493d94 c6493d58 c022d250 c0244e6c c72c7268 00000001
[   92.120726] 3d60: 00000000 fffffff4 00000001 c7111c00 c6af1400 c721d800 00000063 00000000
[   92.128866] 3d80: c6b0b540 00000002 c6493da4 c6493d98 c022d508 c022cff8 c6493e2c c6493da8
[   92.137004] 3da0: c02a55b8 c022d500 00000000 00000000 c6493dcc 0000000e 00000013 c6493f00
[   92.145142] 3dc0: c7518940 00000000 00008e88 00000010 00000000 00000000 00000400 00000000
[   92.153281] 3de0: 00000000 00000000 c01b0000 00000000 00000000 00000000 00000000 00000000
[   92.161421] 3e00: 00000000 c7518940 00000063 c6493ed8 c78fd0c0 c03a7008 00000000 c6493ef4
[   92.169559] 3e20: c6493ec4 c6493e30 c0215234 c02a49f4 00000000 00000000 00000000 c6493e68
[   92.177697] 3e40: c78fd0c0 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[   92.185837] 3e60: 00000000 00000000 c01b1a50 c01693e4 00003e84 00000063 c7518940 00000001
[   92.193976] 3e80: 00000000 c6493ed8 000ce598 00000000 c6493eac 00000063 00000014 be9a1d70
[   92.202115] 3ea0: c03a7008 c6493ef4 c7518940 00000063 00000014 be9a1d70 c6493fa4 c6493ec8
[   92.210253] 3ec0: c0217808 c02151c8 00000000 00000000 000ce500 00000063 c6493ef4 00000014
[   92.218393] 3ee0: c6493ed0 00000001 00000000 00000000 00000000 8e880011 00000005 06000000
[   92.226532] 3f00: 9bf0d678 0000bcba c6493f24 c6493f18 c00c3e8c c00c3cb0 c6493f5c c6493f28
[   92.234671] 3f20: c00a99e8 c00c3e6c 00000020 00000000 c6493f54 c78fd0c0 00000000 c03be4e4
[   92.242809] 3f40: 00000006 c0008aa4 c6492000 00000000 c6493f6c c6493f60 c00a9a60 c00a9854
[   92.250949] 3f60: c6493f8c c6493f70 c0034b24 c000e3ec c6926e80 dc8cb014 c6493fb0 be9a1d70
[   92.259087] 3f80: 00000014 00000000 00000122 c0008aa4 c6492000 00000000 00000000 c6493fa8
[   92.267226] 3fa0: c0008900 c0217744 be9a1d70 00000014 00000008 000ce500 00000063 00000000
[   92.275365] 3fc0: be9a1d70 00000014 00000000 00000122 00000063 00000000 000ce44c 00094ea0
[   92.283504] 3fe0: be9a1d10 be9a1cfc b6fb7e10 b6fbad88 60000010 00000008 ffffffff ffffffff
[   92.291635] Backtrace: 
[   92.294088] [<c001120c>] (_raw_spin_lock_irqsave) from [<c021dbe8>] (skb_queue_tail+0x20/0x50)
[   92.302686] [<c021dbc8>] (skb_queue_tail) from [<bf27bf0c>] (brcmf_flowring_enqueue+0x2c/0x78 [brcmfmac])
[   92.312208]  r6:c72c2000 r5:00000006 r4:00000000 r3:c734c400
[   92.317892] [<bf27bee0>] (brcmf_flowring_enqueue [brcmfmac]) from [<bf27cefc>] (brcmf_msgbuf_txdata+0x110/0x1c0 [brcmfmac])
[   92.328970]  r7:c6af1400 r6:00000006 r5:c7211a00 r4:c6af1400
[   92.334653] [<bf27cdec>] (brcmf_msgbuf_txdata [brcmfmac]) from [<bf2751e8>] (brcmf_fws_process_skb+0x7c/0x2dc [brcmfmac])
[   92.345549]  r10:c721d800 r9:c6b0b402 r8:00000000 r7:c721dc80 r6:c7380000 r5:c7370000
[   92.353376]  r4:c6af1400
[   92.355924] [<bf27516c>] (brcmf_fws_process_skb [brcmfmac]) from [<bf278af8>] (brcmf_netdev_start_xmit+0x170/0x1d8 [brcmfmac])
[   92.367253]  r9:c71a2c00 r8:c6b0b402 r7:c6af1400 r6:c6af1400 r5:c7380000 r4:c721d800
[   92.375023] [<bf278988>] (brcmf_netdev_start_xmit [brcmfmac]) from [<c022cf54>] (dev_hard_start_xmit+0x250/0x2e8)
[   92.385232]  r8:00000000 r7:c71a2c00 r6:c72c7200 r5:c6af1400 r4:00000001 r3:bf278988
[   92.392994] [<c022cd04>] (dev_hard_start_xmit) from [<c0244f14>] (sch_direct_xmit+0xb4/0x1ec)
[   92.401476]  r10:c72c7268 r9:c721d800 r8:c6af1400 r7:c71a2c00 r6:c72c7200 r5:c6af1400
[   92.409304]  r4:00000001
[   92.411838] [<c0244e60>] (sch_direct_xmit) from [<c022d250>] (__dev_queue_xmit+0x264/0x508)
[   92.420146]  r10:c72c7268 r9:00000000 r8:00000000 r7:c71a2c00 r6:c721d800 r5:c6af1400
[   92.427975]  r4:c72c7200
[   92.430508] [<c022cfec>] (__dev_queue_xmit) from [<c022d508>] (dev_queue_xmit+0x14/0x18)
[   92.438559]  r10:00000002 r9:c6b0b540 r8:00000000 r7:00000063 r6:c721d800 r5:c6af1400
[   92.446386]  r4:c7111c00
[   92.448930] [<c022d4f4>] (dev_queue_xmit) from [<c02a55b8>] (packet_sendmsg+0xbd0/0xcac)
[   92.456996] [<c02a49e8>] (packet_sendmsg) from [<c0215234>] (sock_sendmsg+0x78/0x8c)
[   92.464695]  r10:c6493ef4 r9:00000000 r8:c03a7008 r7:c78fd0c0 r6:c6493ed8 r5:00000063
[   92.472522]  r4:c7518940
[   92.475057] [<c02151bc>] (sock_sendmsg) from [<c0217808>] (SyS_sendto+0xd0/0x10c)
[   92.482502]  r7:be9a1d70 r6:00000014 r5:00000063 r4:c7518940
[   92.488171] [<c0217738>] (SyS_sendto) from [<c0008900>] (ret_fast_syscall+0x0/0x38)
[   92.495790]  r10:00000000 r9:c6492000 r8:c0008aa4 r7:00000122 r6:00000000 r5:00000014
[   92.503618]  r4:be9a1d70
[   92.506147] Code: e1a03000 e10f0000 f10c0080 f593f000 (e1931f9f) 
[   92.512212] ---[ end trace 1cbe7afa5aa428d7 ]---
[   92.516806] Kernel panic - not syncing: Fatal exception in interrupt
[   92.523136] CPU0: stopping
[   92.525841] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G      D W      3.18.20 #16
[   92.533030] Backtrace: 
[   92.535488] [<c0015490>] (dump_backtrace) from [<c001569c>] (show_stack+0x18/0x1c)
[   92.543018]  r6:c03a2894 r5:00000000 r4:00000000 r3:dc8cb014
[   92.548688] [<c0015684>] (show_stack) from [<c01638d0>] (dump_stack+0x7c/0x98)
[   92.555881] [<c0163854>] (dump_stack) from [<c00172e0>] (handle_IPI+0xcc/0x168)
[   92.563156]  r4:00000000 r3:00000000
[   92.566732] [<c0017214>] (handle_IPI) from [<c000869c>] (gic_handle_irq+0x5c/0x64)
[   92.574258]  r6:c03a7480 r5:c03a5f38 r4:c8802100 r3:00000405
[   92.579926] [<c0008640>] (gic_handle_irq) from [<c0009220>] (__irq_svc+0x40/0x54)
[   92.587368] Exception stack(0xc03a5f38 to 0xc03a5f80)
[   92.592397] 5f20:                                                       c6dd41f8 00000000
[   92.600541] 5f40: 00ef1874 c0009d40 c03a4010 c03a4000 c03a4000 c03bd794 c039b9c8 c7ffc700
[   92.608680] 5f60: c03bd790 c03a5f8c c03a5f90 c03a5f80 c00131ac c00131b0 60000013 ffffffff
[   92.616811]  r6:ffffffff r5:60000013 r4:c00131b0 r3:c00131ac
[   92.622481] [<c001317c>] (arch_cpu_idle) from [<c004860c>] (cpu_startup_entry+0xf0/0x14c)
[   92.630632] [<c004851c>] (cpu_startup_entry) from [<c000ca90>] (rest_init+0x68/0x80)
[   92.638350] [<c000ca28>] (rest_init) from [<c0379cc8>] (start_kernel+0x388/0x408)
[   92.645818] [<c0379940>] (start_kernel) from [<00008074>] (0x8074)
[   92.651972] Rebooting in 3 seconds..
Rafał Miłecki Aug. 20, 2015, 4:16 p.m. UTC | #2
On 16 August 2015 at 08:55, Arend van Spriel <arend@broadcom.com> wrote:
> diff --git a/drivers/net/wireless/brcm80211/brcmfmac/flowring.h b/drivers/net/wireless/brcm80211/brcmfmac/flowring.h
> index 5551861..3a7d9c2 100644
> --- a/drivers/net/wireless/brcm80211/brcmfmac/flowring.h
> +++ b/drivers/net/wireless/brcm80211/brcmfmac/flowring.h
> @@ -16,7 +16,7 @@
>  #define BRCMFMAC_FLOWRING_H
>
>
> -#define BRCMF_FLOWRING_HASHSIZE                256
> +#define BRCMF_FLOWRING_HASHSIZE                512             /* has to be 2^x */
>  #define BRCMF_FLOWRING_INVALID_ID      0xFFFFFFFF

Applying patch *and* switching back to 256 let brcmfmac work again
with my BCM43602. Not sure if it helps to understand the problem much.
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Arend van Spriel Aug. 20, 2015, 4:39 p.m. UTC | #3
On 08/20/2015 06:16 PM, Rafa? Mi?ecki wrote:
> On 16 August 2015 at 08:55, Arend van Spriel <arend@broadcom.com> wrote:
>> diff --git a/drivers/net/wireless/brcm80211/brcmfmac/flowring.h b/drivers/net/wireless/brcm80211/brcmfmac/flowring.h
>> index 5551861..3a7d9c2 100644
>> --- a/drivers/net/wireless/brcm80211/brcmfmac/flowring.h
>> +++ b/drivers/net/wireless/brcm80211/brcmfmac/flowring.h
>> @@ -16,7 +16,7 @@
>>   #define BRCMFMAC_FLOWRING_H
>>
>>
>> -#define BRCMF_FLOWRING_HASHSIZE                256
>> +#define BRCMF_FLOWRING_HASHSIZE                512             /* has to be 2^x */
>>   #define BRCMF_FLOWRING_INVALID_ID      0xFFFFFFFF
>
> Applying patch *and* switching back to 256 let brcmfmac work again
> with my BCM43602. Not sure if it helps to understand the problem much.

Not to me. Maybe Hante gets some ideas, but he is ooo till monday.

Regards,
Arend

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/net/wireless/brcm80211/brcmfmac/flowring.c b/drivers/net/wireless/brcm80211/brcmfmac/flowring.c
index 5944063..e30f8fa 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/flowring.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/flowring.c
@@ -32,7 +32,7 @@ 
 #define BRCMF_FLOWRING_LOW		(BRCMF_FLOWRING_HIGH - 256)
 #define BRCMF_FLOWRING_INVALID_IFIDX	0xff
 
-#define BRCMF_FLOWRING_HASH_AP(da, fifo, ifidx) (da[5] + fifo + ifidx * 16)
+#define BRCMF_FLOWRING_HASH_AP(da, fifo, ifidx) (da[5] * 2 + fifo + ifidx * 16)
 #define BRCMF_FLOWRING_HASH_STA(fifo, ifidx) (fifo + ifidx * 16)
 
 static const u8 brcmf_flowring_prio2fifo[] = {
@@ -68,7 +68,7 @@  u32 brcmf_flowring_lookup(struct brcmf_flowring *flow, u8 da[ETH_ALEN],
 			  u8 prio, u8 ifidx)
 {
 	struct brcmf_flowring_hash *hash;
-	u8 hash_idx;
+	u16 hash_idx;
 	u32 i;
 	bool found;
 	bool sta;
@@ -88,6 +88,7 @@  u32 brcmf_flowring_lookup(struct brcmf_flowring *flow, u8 da[ETH_ALEN],
 	}
 	hash_idx =  sta ? BRCMF_FLOWRING_HASH_STA(fifo, ifidx) :
 			  BRCMF_FLOWRING_HASH_AP(mac, fifo, ifidx);
+	hash_idx &= (BRCMF_FLOWRING_HASHSIZE - 1);
 	found = false;
 	hash = flow->hash;
 	for (i = 0; i < BRCMF_FLOWRING_HASHSIZE; i++) {
@@ -98,6 +99,7 @@  u32 brcmf_flowring_lookup(struct brcmf_flowring *flow, u8 da[ETH_ALEN],
 			break;
 		}
 		hash_idx++;
+		hash_idx &= (BRCMF_FLOWRING_HASHSIZE - 1);
 	}
 	if (found)
 		return hash[hash_idx].flowid;
@@ -111,7 +113,7 @@  u32 brcmf_flowring_create(struct brcmf_flowring *flow, u8 da[ETH_ALEN],
 {
 	struct brcmf_flowring_ring *ring;
 	struct brcmf_flowring_hash *hash;
-	u8 hash_idx;
+	u16 hash_idx;
 	u32 i;
 	bool found;
 	u8 fifo;
@@ -131,6 +133,7 @@  u32 brcmf_flowring_create(struct brcmf_flowring *flow, u8 da[ETH_ALEN],
 	}
 	hash_idx =  sta ? BRCMF_FLOWRING_HASH_STA(fifo, ifidx) :
 			  BRCMF_FLOWRING_HASH_AP(mac, fifo, ifidx);
+	hash_idx &= (BRCMF_FLOWRING_HASHSIZE - 1);
 	found = false;
 	hash = flow->hash;
 	for (i = 0; i < BRCMF_FLOWRING_HASHSIZE; i++) {
@@ -140,6 +143,7 @@  u32 brcmf_flowring_create(struct brcmf_flowring *flow, u8 da[ETH_ALEN],
 			break;
 		}
 		hash_idx++;
+		hash_idx &= (BRCMF_FLOWRING_HASHSIZE - 1);
 	}
 	if (found) {
 		for (i = 0; i < flow->nrofrings; i++) {
@@ -169,7 +173,7 @@  u32 brcmf_flowring_create(struct brcmf_flowring *flow, u8 da[ETH_ALEN],
 }
 
 
-u8 brcmf_flowring_tid(struct brcmf_flowring *flow, u8 flowid)
+u8 brcmf_flowring_tid(struct brcmf_flowring *flow, u16 flowid)
 {
 	struct brcmf_flowring_ring *ring;
 
@@ -179,7 +183,7 @@  u8 brcmf_flowring_tid(struct brcmf_flowring *flow, u8 flowid)
 }
 
 
-static void brcmf_flowring_block(struct brcmf_flowring *flow, u8 flowid,
+static void brcmf_flowring_block(struct brcmf_flowring *flow, u16 flowid,
 				 bool blocked)
 {
 	struct brcmf_flowring_ring *ring;
@@ -224,10 +228,10 @@  static void brcmf_flowring_block(struct brcmf_flowring *flow, u8 flowid,
 }
 
 
-void brcmf_flowring_delete(struct brcmf_flowring *flow, u8 flowid)
+void brcmf_flowring_delete(struct brcmf_flowring *flow, u16 flowid)
 {
 	struct brcmf_flowring_ring *ring;
-	u8 hash_idx;
+	u16 hash_idx;
 	struct sk_buff *skb;
 
 	ring = flow->rings[flowid];
@@ -249,7 +253,7 @@  void brcmf_flowring_delete(struct brcmf_flowring *flow, u8 flowid)
 }
 
 
-u32 brcmf_flowring_enqueue(struct brcmf_flowring *flow, u8 flowid,
+u32 brcmf_flowring_enqueue(struct brcmf_flowring *flow, u16 flowid,
 			   struct sk_buff *skb)
 {
 	struct brcmf_flowring_ring *ring;
@@ -275,7 +279,7 @@  u32 brcmf_flowring_enqueue(struct brcmf_flowring *flow, u8 flowid,
 }
 
 
-struct sk_buff *brcmf_flowring_dequeue(struct brcmf_flowring *flow, u8 flowid)
+struct sk_buff *brcmf_flowring_dequeue(struct brcmf_flowring *flow, u16 flowid)
 {
 	struct brcmf_flowring_ring *ring;
 	struct sk_buff *skb;
@@ -296,7 +300,7 @@  struct sk_buff *brcmf_flowring_dequeue(struct brcmf_flowring *flow, u8 flowid)
 }
 
 
-void brcmf_flowring_reinsert(struct brcmf_flowring *flow, u8 flowid,
+void brcmf_flowring_reinsert(struct brcmf_flowring *flow, u16 flowid,
 			     struct sk_buff *skb)
 {
 	struct brcmf_flowring_ring *ring;
@@ -307,7 +311,7 @@  void brcmf_flowring_reinsert(struct brcmf_flowring *flow, u8 flowid,
 }
 
 
-u32 brcmf_flowring_qlen(struct brcmf_flowring *flow, u8 flowid)
+u32 brcmf_flowring_qlen(struct brcmf_flowring *flow, u16 flowid)
 {
 	struct brcmf_flowring_ring *ring;
 
@@ -322,7 +326,7 @@  u32 brcmf_flowring_qlen(struct brcmf_flowring *flow, u8 flowid)
 }
 
 
-void brcmf_flowring_open(struct brcmf_flowring *flow, u8 flowid)
+void brcmf_flowring_open(struct brcmf_flowring *flow, u16 flowid)
 {
 	struct brcmf_flowring_ring *ring;
 
@@ -336,10 +340,10 @@  void brcmf_flowring_open(struct brcmf_flowring *flow, u8 flowid)
 }
 
 
-u8 brcmf_flowring_ifidx_get(struct brcmf_flowring *flow, u8 flowid)
+u8 brcmf_flowring_ifidx_get(struct brcmf_flowring *flow, u16 flowid)
 {
 	struct brcmf_flowring_ring *ring;
-	u8 hash_idx;
+	u16 hash_idx;
 
 	ring = flow->rings[flowid];
 	hash_idx = ring->hash_id;
@@ -380,7 +384,7 @@  void brcmf_flowring_detach(struct brcmf_flowring *flow)
 	struct brcmf_pub *drvr = bus_if->drvr;
 	struct brcmf_flowring_tdls_entry *search;
 	struct brcmf_flowring_tdls_entry *remove;
-	u8 flowid;
+	u16 flowid;
 
 	for (flowid = 0; flowid < flow->nrofrings; flowid++) {
 		if (flow->rings[flowid])
@@ -404,7 +408,7 @@  void brcmf_flowring_configure_addr_mode(struct brcmf_flowring *flow, int ifidx,
 	struct brcmf_bus *bus_if = dev_get_drvdata(flow->dev);
 	struct brcmf_pub *drvr = bus_if->drvr;
 	u32 i;
-	u8 flowid;
+	u16 flowid;
 
 	if (flow->addr_mode[ifidx] != addr_mode) {
 		for (i = 0; i < ARRAY_SIZE(flow->hash); i++) {
@@ -430,7 +434,7 @@  void brcmf_flowring_delete_peer(struct brcmf_flowring *flow, int ifidx,
 	struct brcmf_flowring_tdls_entry *prev;
 	struct brcmf_flowring_tdls_entry *search;
 	u32 i;
-	u8 flowid;
+	u16 flowid;
 	bool sta;
 
 	sta = (flow->addr_mode[ifidx] == ADDR_INDIRECT);
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/flowring.h b/drivers/net/wireless/brcm80211/brcmfmac/flowring.h
index 5551861..3a7d9c2 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/flowring.h
+++ b/drivers/net/wireless/brcm80211/brcmfmac/flowring.h
@@ -16,7 +16,7 @@ 
 #define BRCMFMAC_FLOWRING_H
 
 
-#define BRCMF_FLOWRING_HASHSIZE		256
+#define BRCMF_FLOWRING_HASHSIZE		512		/* has to be 2^x */
 #define BRCMF_FLOWRING_INVALID_ID	0xFFFFFFFF
 
 
@@ -24,7 +24,7 @@  struct brcmf_flowring_hash {
 	u8 mac[ETH_ALEN];
 	u8 fifo;
 	u8 ifidx;
-	u8 flowid;
+	u16 flowid;
 };
 
 enum ring_status {
@@ -61,16 +61,16 @@  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],
 			  u8 prio, u8 ifidx);
-void brcmf_flowring_delete(struct brcmf_flowring *flow, u8 flowid);
-void brcmf_flowring_open(struct brcmf_flowring *flow, u8 flowid);
-u8 brcmf_flowring_tid(struct brcmf_flowring *flow, u8 flowid);
-u32 brcmf_flowring_enqueue(struct brcmf_flowring *flow, u8 flowid,
+void brcmf_flowring_delete(struct brcmf_flowring *flow, u16 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,
 			   struct sk_buff *skb);
-struct sk_buff *brcmf_flowring_dequeue(struct brcmf_flowring *flow, u8 flowid);
-void brcmf_flowring_reinsert(struct brcmf_flowring *flow, u8 flowid,
+struct sk_buff *brcmf_flowring_dequeue(struct brcmf_flowring *flow, u16 flowid);
+void brcmf_flowring_reinsert(struct brcmf_flowring *flow, u16 flowid,
 			     struct sk_buff *skb);
-u32 brcmf_flowring_qlen(struct brcmf_flowring *flow, u8 flowid);
-u8 brcmf_flowring_ifidx_get(struct brcmf_flowring *flow, u8 flowid);
+u32 brcmf_flowring_qlen(struct brcmf_flowring *flow, u16 flowid);
+u8 brcmf_flowring_ifidx_get(struct brcmf_flowring *flow, u16 flowid);
 struct brcmf_flowring *brcmf_flowring_attach(struct device *dev, u16 nrofrings);
 void brcmf_flowring_detach(struct brcmf_flowring *flow);
 void brcmf_flowring_configure_addr_mode(struct brcmf_flowring *flow, int ifidx,
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c b/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c
index 898c380..363a31e 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c
@@ -678,7 +678,7 @@  static u32 brcmf_msgbuf_flowring_create(struct brcmf_msgbuf *msgbuf, int ifidx,
 }
 
 
-static void brcmf_msgbuf_txflow(struct brcmf_msgbuf *msgbuf, u8 flowid)
+static void brcmf_msgbuf_txflow(struct brcmf_msgbuf *msgbuf, u16 flowid)
 {
 	struct brcmf_flowring *flow = msgbuf->flow;
 	struct brcmf_commonring *commonring;
@@ -1318,7 +1318,7 @@  int brcmf_proto_msgbuf_rx_trigger(struct device *dev)
 }
 
 
-void brcmf_msgbuf_delete_flowring(struct brcmf_pub *drvr, u8 flowid)
+void brcmf_msgbuf_delete_flowring(struct brcmf_pub *drvr, u16 flowid)
 {
 	struct brcmf_msgbuf *msgbuf = (struct brcmf_msgbuf *)drvr->proto->pd;
 	struct msgbuf_tx_flowring_delete_req *delete;
@@ -1369,6 +1369,13 @@  int brcmf_proto_msgbuf_attach(struct brcmf_pub *drvr)
 	u32 count;
 
 	if_msgbuf = drvr->bus_if->msgbuf;
+
+	if (if_msgbuf->nrof_flowrings >= BRCMF_FLOWRING_HASHSIZE) {
+		brcmf_err("driver not configured for this many flowrings %d\n",
+			  if_msgbuf->nrof_flowrings);
+		if_msgbuf->nrof_flowrings = BRCMF_FLOWRING_HASHSIZE - 1;
+	}
+
 	msgbuf = kzalloc(sizeof(*msgbuf), GFP_KERNEL);
 	if (!msgbuf)
 		goto fail;
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.h b/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.h
index 3d513e4..ee6906a 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.h
+++ b/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.h
@@ -33,7 +33,7 @@ 
 
 
 int brcmf_proto_msgbuf_rx_trigger(struct device *dev);
-void brcmf_msgbuf_delete_flowring(struct brcmf_pub *drvr, u8 flowid);
+void brcmf_msgbuf_delete_flowring(struct brcmf_pub *drvr, u16 flowid);
 int brcmf_proto_msgbuf_attach(struct brcmf_pub *drvr);
 void brcmf_proto_msgbuf_detach(struct brcmf_pub *drvr);
 #else