| From 0cd75b19899fd86b51a6480fb8c00dcd85a54591 Mon Sep 17 00:00:00 2001 |
| From: Arend van Spriel <arend@broadcom.com> |
| Date: Tue, 11 Nov 2014 13:58:44 +0100 |
| Subject: brcmfmac: fix conversion of channel width 20MHZ_NOHT |
| |
| From: Arend van Spriel <arend@broadcom.com> |
| |
| commit 0cd75b19899fd86b51a6480fb8c00dcd85a54591 upstream. |
| |
| The function chandef_to_chanspec() failed when converting a |
| chandef with bandwidth set to NL80211_CHAN_WIDTH_20_NOHT. This |
| was reported by user running the device in AP mode. |
| |
| ------------[ cut here ]------------ |
| WARNING: CPU: 0 PID: 304 at |
| drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c:381 |
| chandef_to_chanspec.isra.11+0x158/0x184() |
| |
| Modules linked in: |
| |
| CPU: 0 PID: 304 Comm: hostapd Not tainted 3.16.0-rc7-abb+g64aa90f #8 |
| |
| [<c0014bb4>] (unwind_backtrace) from [<c0012314>] (show_stack+0x10/0x14) |
| [<c0012314>] (show_stack) from [<c001d3f8>] (warn_slowpath_common+0x6c/0x8c) |
| [<c001d3f8>] (warn_slowpath_common) from [<c001d4b4>] (warn_slowpath_null+0x1c/0x24) |
| [<c001d4b4>] (warn_slowpath_null) from [<c03449a4>] (chandef_to_chanspec.isra.11+0x158/0x184) |
| [<c03449a4>] (chandef_to_chanspec.isra.11) from [<c0348e00>] (brcmf_cfg80211_start_ap+0x1e4/0x614) |
| [<c0348e00>] (brcmf_cfg80211_start_ap) from [<c04d1468>] (nl80211_start_ap+0x288/0x414) |
| [<c04d1468>] (nl80211_start_ap) from [<c043d144>] (genl_rcv_msg+0x21c/0x38c) |
| [<c043d144>] (genl_rcv_msg) from [<c043c740>] (netlink_rcv_skb+0xac/0xc0) |
| [<c043c740>] (netlink_rcv_skb) from [<c043cf14>] (genl_rcv+0x20/0x34) |
| [<c043cf14>] (genl_rcv) from [<c043c0a0>] (netlink_unicast+0x150/0x20c) |
| [<c043c0a0>] (netlink_unicast) from [<c043c4b8>] (netlink_sendmsg+0x2b8/0x398) |
| [<c043c4b8>] (netlink_sendmsg) from [<c04066a4>] (sock_sendmsg+0x84/0xa8) |
| [<c04066a4>] (sock_sendmsg) from [<c0407c5c>] (___sys_sendmsg.part.29+0x268/0x278) |
| [<c0407c5c>] (___sys_sendmsg.part.29) from [<c0408bdc>] (__sys_sendmsg+0x4c/0x7c) |
| [<c0408bdc>] (__sys_sendmsg) from [<c000ec60>] (ret_fast_syscall+0x0/0x44) |
| ---[ end trace 965ee2158c9905a2 ]--- |
| |
| Reported-by: Pontus Fuchs <pontusf@broadcom.com> |
| Reviewed-by: Hante Meuleman <meuleman@broadcom.com> |
| Reviewed-by: Daniel (Deognyoun) Kim <dekim@broadcom.com> |
| Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com> |
| Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com> |
| Signed-off-by: Arend van Spriel <arend@broadcom.com> |
| Signed-off-by: John W. Linville <linville@tuxdriver.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | 6 ++++++ |
| 1 file changed, 6 insertions(+) |
| |
| --- a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c |
| +++ b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c |
| @@ -298,6 +298,7 @@ static u16 chandef_to_chanspec(struct br |
| primary_offset = ch->center_freq1 - ch->chan->center_freq; |
| switch (ch->width) { |
| case NL80211_CHAN_WIDTH_20: |
| + case NL80211_CHAN_WIDTH_20_NOHT: |
| ch_inf.bw = BRCMU_CHAN_BW_20; |
| WARN_ON(primary_offset != 0); |
| break; |
| @@ -322,6 +323,10 @@ static u16 chandef_to_chanspec(struct br |
| ch_inf.sb = BRCMU_CHAN_SB_LU; |
| } |
| break; |
| + case NL80211_CHAN_WIDTH_80P80: |
| + case NL80211_CHAN_WIDTH_160: |
| + case NL80211_CHAN_WIDTH_5: |
| + case NL80211_CHAN_WIDTH_10: |
| default: |
| WARN_ON_ONCE(1); |
| } |
| @@ -332,6 +337,7 @@ static u16 chandef_to_chanspec(struct br |
| case IEEE80211_BAND_5GHZ: |
| ch_inf.band = BRCMU_CHAN_BAND_5G; |
| break; |
| + case IEEE80211_BAND_60GHZ: |
| default: |
| WARN_ON_ONCE(1); |
| } |