* [PATCH v3 1/2] b43: fix the wrong assignment of status.freq in b43_rx()
@ 2014-01-17 15:19 ZHAO Gang
2014-01-17 15:19 ` [PATCH v3 2/2] b43: use kernel api to replace b43 specific helper function ZHAO Gang
2014-01-17 15:29 ` [PATCH v3 1/2] b43: fix the wrong assignment of status.freq in b43_rx() Johannes Berg
0 siblings, 2 replies; 3+ messages in thread
From: ZHAO Gang @ 2014-01-17 15:19 UTC (permalink / raw)
To: Stefano Brivio
Cc: Jonas Gorski, Luca Coelho, Rafał Miłecki,
John W. Linville, b43-dev, linux-wireless, Stable
Use the right function to update status.freq. The wrong frequency
value can cause problem that bss info can't be updated when it
should be.
This bug is introduced by commit 8318d78a44d49ac1edf2bdec7299de3617c4232e
"cfg80211 API for channels/bitrates, mac80211 and driver conversion".
Cc: Stable <stable@vger.kernel.org>
Signed-off-by: ZHAO Gang <gamerh2o@gmail.com>
---
v3: change commit log
suggested by Luca Coelho, Rafa? Mi?ecki and Jonas Gorski
I'm not very familiar with wireless subsystem yet. If commit message needs
more changes, feel free to point it out.
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] 3+ messages in thread* [PATCH v3 2/2] b43: use kernel api to replace b43 specific helper function
2014-01-17 15:19 [PATCH v3 1/2] b43: fix the wrong assignment of status.freq in b43_rx() ZHAO Gang
@ 2014-01-17 15:19 ` ZHAO Gang
2014-01-17 15:29 ` [PATCH v3 1/2] b43: fix the wrong assignment of status.freq in b43_rx() Johannes Berg
1 sibling, 0 replies; 3+ messages in thread
From: ZHAO Gang @ 2014-01-17 15:19 UTC (permalink / raw)
To: Stefano Brivio
Cc: 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>
---
v3: let this fix be two patches again.
first patch is fix, second patch is improvement.
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] 3+ messages in thread* [PATCH v3 1/2] b43: fix the wrong assignment of status.freq in b43_rx()
2014-01-17 15:19 [PATCH v3 1/2] b43: fix the wrong assignment of status.freq in b43_rx() ZHAO Gang
2014-01-17 15:19 ` [PATCH v3 2/2] b43: use kernel api to replace b43 specific helper function ZHAO Gang
@ 2014-01-17 15:29 ` Johannes Berg
1 sibling, 0 replies; 3+ messages in thread
From: Johannes Berg @ 2014-01-17 15:29 UTC (permalink / raw)
To: ZHAO Gang
Cc: Stefano Brivio, Jonas Gorski, Luca Coelho,
Rafał Miłecki, John W. Linville, b43-dev,
linux-wireless, Stable
On Fri, 2014-01-17 at 23:19 +0800, ZHAO Gang wrote:
> Use the right function to update status.freq. The wrong frequency
> value can cause problem that bss info can't be updated when it
> should be.
>
> This bug is introduced by commit 8318d78a44d49ac1edf2bdec7299de3617c4232e
> "cfg80211 API for channels/bitrates, mac80211 and driver conversion".
>
> Cc: Stable <stable@vger.kernel.org>
> Signed-off-by: ZHAO Gang <gamerh2o@gmail.com>
> ---
> v3: change commit log
> suggested by Luca Coelho, Rafa? Mi?ecki and Jonas Gorski
>
> I'm not very familiar with wireless subsystem yet. If commit message needs
> more changes, feel free to point it out.
In general, you should also put a Fixes: pseudo-header (with 12-digit
commit ID and commit subject) into such commits, so this would be:
Cc: stable at vger.kernel.org
Fixes: 8318d78a44d4 ("cfg80211 API for channels/bitrates, mac80211 and driver conversion")
Signed-off-by: ...
Thanks for fixing this!
johannes
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-01-17 15:29 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-17 15:19 [PATCH v3 1/2] b43: fix the wrong assignment of status.freq in b43_rx() ZHAO Gang
2014-01-17 15:19 ` [PATCH v3 2/2] b43: use kernel api to replace b43 specific helper function ZHAO Gang
2014-01-17 15:29 ` [PATCH v3 1/2] b43: fix the wrong assignment of status.freq in b43_rx() Johannes Berg
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).