* [PATCH v4 1/2] b43: fix the wrong assignment of status.freq in b43_rx()
@ 2014-01-17 16:17 ZHAO Gang
2014-01-17 16:17 ` [PATCH v4 2/2] b43: use kernel api to replace b43 specific helper function ZHAO Gang
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: ZHAO Gang @ 2014-01-17 16:17 UTC (permalink / raw)
To: Stefano Brivio
Cc: Johannes Berg, Jonas Gorski, Luca Coelho, Rafał Miłecki,
John W. Linville, b43-dev, linux-wireless, stable
Use the right function to update frequency value.
If rx skb is probe response or beacon, the wrong frequency value can
cause problem that bss info can't be updated when it should be.
Cc: <stable@vger.kernel.org>
Fixes: 8318d78a44d4 ("cfg80211 API for channels/bitrates, mac80211
and driver conversion")
Signed-off-by: ZHAO Gang <gamerh2o@gmail.com>
---
v4: change commit message
suggested by Johannes Berg
drivers/net/wireless/b43/xmit.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/wireless/b43/xmit.c b/drivers/net/wireless/b43/xmit.c
index 4ae63f4..50e5ddb 100644
--- a/drivers/net/wireless/b43/xmit.c
+++ b/drivers/net/wireless/b43/xmit.c
@@ -821,10 +821,10 @@ void b43_rx(struct b43_wldev *dev, struct sk_buff *skb, const void *_rxhdr)
* channel number in b43. */
if (chanstat & B43_RX_CHAN_5GHZ) {
status.band = IEEE80211_BAND_5GHZ;
- status.freq = b43_freq_to_channel_5ghz(chanid);
+ status.freq = b43_channel_to_freq_5ghz(chanid);
} else {
status.band = IEEE80211_BAND_2GHZ;
- status.freq = b43_freq_to_channel_2ghz(chanid);
+ status.freq = b43_channel_to_freq_2ghz(chanid);
}
break;
default:
--
1.8.4.2
^ permalink raw reply related [flat|nested] 4+ messages in thread* [PATCH v4 2/2] b43: use kernel api to replace b43 specific helper function
2014-01-17 16:17 [PATCH v4 1/2] b43: fix the wrong assignment of status.freq in b43_rx() ZHAO Gang
@ 2014-01-17 16:17 ` ZHAO Gang
2014-01-17 22:18 ` [PATCH v4 1/2] b43: fix the wrong assignment of status.freq in b43_rx() Larry Finger
2014-01-26 14:35 ` Rafał Miłecki
2 siblings, 0 replies; 4+ messages in thread
From: ZHAO Gang @ 2014-01-17 16:17 UTC (permalink / raw)
To: Stefano Brivio
Cc: Johannes Berg, Jonas Gorski, Luca Coelho, Rafał Miłecki,
John W. Linville, b43-dev, linux-wireless
Use ieee80211_channel_to_frequency() to replace b43_channel_to_freq_{2,5}ghz(),
and remove unused b43_freq_to_channel_{2,5}ghz().
Signed-off-by: ZHAO Gang <gamerh2o@gmail.com>
---
v4: bump version to consistent with first patch.
drivers/net/wireless/b43/main.h | 35 -----------------------------------
drivers/net/wireless/b43/xmit.c | 12 ++++++------
2 files changed, 6 insertions(+), 41 deletions(-)
diff --git a/drivers/net/wireless/b43/main.h b/drivers/net/wireless/b43/main.h
index abac25e..f476fc3 100644
--- a/drivers/net/wireless/b43/main.h
+++ b/drivers/net/wireless/b43/main.h
@@ -58,41 +58,6 @@ enum b43_verbosity {
#endif
};
-
-/* Lightweight function to convert a frequency (in Mhz) to a channel number. */
-static inline u8 b43_freq_to_channel_5ghz(int freq)
-{
- return ((freq - 5000) / 5);
-}
-static inline u8 b43_freq_to_channel_2ghz(int freq)
-{
- u8 channel;
-
- if (freq == 2484)
- channel = 14;
- else
- channel = (freq - 2407) / 5;
-
- return channel;
-}
-
-/* Lightweight function to convert a channel number to a frequency (in Mhz). */
-static inline int b43_channel_to_freq_5ghz(u8 channel)
-{
- return (5000 + (5 * channel));
-}
-static inline int b43_channel_to_freq_2ghz(u8 channel)
-{
- int freq;
-
- if (channel == 14)
- freq = 2484;
- else
- freq = 2407 + (5 * channel);
-
- return freq;
-}
-
static inline int b43_is_cck_rate(int rate)
{
return (rate == B43_CCK_RATE_1MB ||
diff --git a/drivers/net/wireless/b43/xmit.c b/drivers/net/wireless/b43/xmit.c
index 50e5ddb..218a0f3 100644
--- a/drivers/net/wireless/b43/xmit.c
+++ b/drivers/net/wireless/b43/xmit.c
@@ -806,7 +806,8 @@ void b43_rx(struct b43_wldev *dev, struct sk_buff *skb, const void *_rxhdr)
B43_WARN_ON(1);
/* FIXME: We don't really know which value the "chanid" contains.
* So the following assignment might be wrong. */
- status.freq = b43_channel_to_freq_5ghz(chanid);
+ status.freq =
+ ieee80211_channel_to_frequency(chanid, status.band);
break;
case B43_PHYTYPE_G:
status.band = IEEE80211_BAND_2GHZ;
@@ -819,13 +820,12 @@ void b43_rx(struct b43_wldev *dev, struct sk_buff *skb, const void *_rxhdr)
case B43_PHYTYPE_HT:
/* chanid is the SHM channel cookie. Which is the plain
* channel number in b43. */
- if (chanstat & B43_RX_CHAN_5GHZ) {
+ if (chanstat & B43_RX_CHAN_5GHZ)
status.band = IEEE80211_BAND_5GHZ;
- status.freq = b43_channel_to_freq_5ghz(chanid);
- } else {
+ else
status.band = IEEE80211_BAND_2GHZ;
- status.freq = b43_channel_to_freq_2ghz(chanid);
- }
+ status.freq =
+ ieee80211_channel_to_frequency(chanid, status.band);
break;
default:
B43_WARN_ON(1);
--
1.8.4.2
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH v4 1/2] b43: fix the wrong assignment of status.freq in b43_rx()
2014-01-17 16:17 [PATCH v4 1/2] b43: fix the wrong assignment of status.freq in b43_rx() ZHAO Gang
2014-01-17 16:17 ` [PATCH v4 2/2] b43: use kernel api to replace b43 specific helper function ZHAO Gang
@ 2014-01-17 22:18 ` Larry Finger
2014-01-26 14:35 ` Rafał Miłecki
2 siblings, 0 replies; 4+ messages in thread
From: Larry Finger @ 2014-01-17 22:18 UTC (permalink / raw)
To: ZHAO Gang, Stefano Brivio
Cc: Johannes Berg, Jonas Gorski, Luca Coelho, Rafał Miłecki,
John W. Linville, b43-dev, linux-wireless, stable
On 01/17/2014 10:17 AM, ZHAO Gang wrote:
> Use the right function to update frequency value.
>
> If rx skb is probe response or beacon, the wrong frequency value can
> cause problem that bss info can't be updated when it should be.
>
> Cc: <stable@vger.kernel.org>
> Fixes: 8318d78a44d4 ("cfg80211 API for channels/bitrates, mac80211
> and driver conversion")
> Signed-off-by: ZHAO Gang <gamerh2o@gmail.com>
> ---
This patch seems to fix a problem that caused scanning under NetworkManager to
fail. The symptom was that no available networks were seen in the NM applet
after a connection was made. Now the available AP list remains populated.
Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
Larry
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH v4 1/2] b43: fix the wrong assignment of status.freq in b43_rx()
2014-01-17 16:17 [PATCH v4 1/2] b43: fix the wrong assignment of status.freq in b43_rx() ZHAO Gang
2014-01-17 16:17 ` [PATCH v4 2/2] b43: use kernel api to replace b43 specific helper function ZHAO Gang
2014-01-17 22:18 ` [PATCH v4 1/2] b43: fix the wrong assignment of status.freq in b43_rx() Larry Finger
@ 2014-01-26 14:35 ` Rafał Miłecki
2 siblings, 0 replies; 4+ messages in thread
From: Rafał Miłecki @ 2014-01-26 14:35 UTC (permalink / raw)
To: ZHAO Gang
Cc: Stefano Brivio, Johannes Berg, Jonas Gorski, Luca Coelho,
John W. Linville, b43-dev, linux-wireless@vger.kernel.org, Stable
2014/1/17 ZHAO Gang <gamerh2o@gmail.com>:
> Use the right function to update frequency value.
>
> If rx skb is probe response or beacon, the wrong frequency value can
> cause problem that bss info can't be updated when it should be.
Zhao: this fix is great. My development machine was running some
ancient distro with kernel 2.6.22, so I couldn't test it earlier.
For a long time I got problem with finding AP on channel 13. I reported it in:
cfg80211: use DS or HT operation IEs to determine BSS channel"
I did 10 tests *without* your patch. wpa_supplicant had to scan 43,
33, 7, 2, 46, 12, 7, 32, 6, 6 times to find my AP on channel 13.
With your patch wpa_supplicant finds it in scanning results after the first try!
Thanks a lot for finding and fixing it!
[0] http://lists.infradead.org/pipermail/b43-dev/2013-March/003003.html
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-01-26 14:35 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-17 16:17 [PATCH v4 1/2] b43: fix the wrong assignment of status.freq in b43_rx() ZHAO Gang
2014-01-17 16:17 ` [PATCH v4 2/2] b43: use kernel api to replace b43 specific helper function ZHAO Gang
2014-01-17 22:18 ` [PATCH v4 1/2] b43: fix the wrong assignment of status.freq in b43_rx() Larry Finger
2014-01-26 14:35 ` Rafał Miłecki
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).