From: Eliad Peller <eliad@wizery.com>
To: Luciano Coelho <luca@coelho.fi>
Cc: <linux-wireless@vger.kernel.org>
Subject: [PATCH v2 08/11] wlcore: clarify and fix regulatory domain bit translation
Date: Tue, 17 Sep 2013 18:41:27 +0300 [thread overview]
Message-ID: <1379432490-22157-8-git-send-email-eliad@wizery.com> (raw)
In-Reply-To: <1379432490-22157-1-git-send-email-eliad@wizery.com>
Channels 52-64 were mapped incorrectly.
Refactor and document wlcore_get_reg_conf_ch_idx() in
order to make it clear what's going on there.
While on it, fix the return value check to consider
0 as a valid return value as well (indicates channel 1).
Reported-by: Yaniv Machani <yanivma@ti.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Ido Reis <idor@ti.com>
Signed-off-by: Victor Goldenshtein <victorg@ti.com>
---
drivers/net/wireless/ti/wlcore/cmd.c | 52 +++++++++++++++++++++---------------
1 file changed, 31 insertions(+), 21 deletions(-)
diff --git a/drivers/net/wireless/ti/wlcore/cmd.c b/drivers/net/wireless/ti/wlcore/cmd.c
index e3ae425..9e5416f8 100644
--- a/drivers/net/wireless/ti/wlcore/cmd.c
+++ b/drivers/net/wireless/ti/wlcore/cmd.c
@@ -1607,33 +1607,43 @@ out:
static int wlcore_get_reg_conf_ch_idx(enum ieee80211_band band, u16 ch)
{
- int idx = -1;
-
+ /*
+ * map the given band/channel to the respective predefined
+ * bit expected by the fw
+ */
switch (band) {
- case IEEE80211_BAND_5GHZ:
- if (ch >= 8 && ch <= 16)
- idx = ((ch-8)/4 + 18);
- else if (ch >= 34 && ch <= 64)
- idx = ((ch-34)/2 + 3 + 18);
- else if (ch >= 100 && ch <= 140)
- idx = ((ch-100)/4 + 15 + 18);
- else if (ch >= 149 && ch <= 165)
- idx = ((ch-149)/4 + 26 + 18);
- else
- idx = -1;
- break;
case IEEE80211_BAND_2GHZ:
+ /* channels 1..14 are mapped to 0..13 */
if (ch >= 1 && ch <= 14)
- idx = ch - 1;
- else
- idx = -1;
+ return ch - 1;
+ break;
+ case IEEE80211_BAND_5GHZ:
+ switch (ch) {
+ case 8 ... 16:
+ /* channels 8,12,16 are mapped to 18,19,20 */
+ return 18 + (ch-8)/4;
+ case 34 ... 48:
+ /* channels 34,36..48 are mapped to 21..28 */
+ return 21 + (ch-34)/2;
+ case 52 ... 64:
+ /* channels 52,56..64 are mapped to 29..32 */
+ return 29 + (ch-52)/4;
+ case 100 ... 140:
+ /* channels 100,104..140 are mapped to 33..43 */
+ return 33 + (ch-100)/4;
+ case 149 ... 165:
+ /* channels 149,153..165 are mapped to 44..48 */
+ return 44 + (ch-149)/4;
+ default:
+ break;
+ }
break;
default:
- wl1271_error("get reg conf ch idx - unknown band: %d",
- (int)band);
+ break;
}
- return idx;
+ wl1271_error("%s: unknown band/channel: %d/%d", __func__, band, ch);
+ return -1;
}
void wlcore_set_pending_regdomain_ch(struct wl1271 *wl, u16 channel,
@@ -1646,7 +1656,7 @@ void wlcore_set_pending_regdomain_ch(struct wl1271 *wl, u16 channel,
ch_bit_idx = wlcore_get_reg_conf_ch_idx(band, channel);
- if (ch_bit_idx > 0 && ch_bit_idx <= WL1271_MAX_CHANNELS)
+ if (ch_bit_idx >= 0 && ch_bit_idx <= WL1271_MAX_CHANNELS)
set_bit(ch_bit_idx, (long *)wl->reg_ch_conf_pending);
}
--
1.8.3.rc1.35.g9b79519
next prev parent reply other threads:[~2013-09-17 15:41 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-17 15:41 [PATCH v2 01/11] wlcore: ROC on AP channel before auth reply Eliad Peller
2013-09-17 15:41 ` [PATCH v2 02/11] wlcore: add new plt power-mode: CHIP_AWAKE Eliad Peller
2013-09-17 15:41 ` [PATCH v2 03/11] wlcore: disable elp sleep while in plt mode Eliad Peller
2013-09-17 15:41 ` [PATCH v2 04/11] wlcore: re-enable idle handling Eliad Peller
2013-09-17 15:41 ` [PATCH v2 05/11] wlcore: cleanup scan debug prints Eliad Peller
2013-09-17 15:41 ` [PATCH v2 06/11] wlcore: fix unsafe dereference of the wlvif Eliad Peller
2013-09-17 15:41 ` [PATCH v2 07/11] wlcore: remove unsupported channels Eliad Peller
2013-09-17 15:41 ` Eliad Peller [this message]
2013-09-17 15:41 ` [PATCH v2 09/11] wl18xx: fix boot process in high temperature environment Eliad Peller
2013-09-17 15:41 ` [PATCH v2 10/11] wl18xx: print new RDL versions during boot Eliad Peller
2013-09-30 16:57 ` Luca Coelho
2013-09-17 15:41 ` [PATCH v2 11/11] wlcore: always register dummy hardirq Eliad Peller
2013-10-04 5:10 ` [PATCH v2 01/11] wlcore: ROC on AP channel before auth reply Luca Coelho
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1379432490-22157-8-git-send-email-eliad@wizery.com \
--to=eliad@wizery.com \
--cc=linux-wireless@vger.kernel.org \
--cc=luca@coelho.fi \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).