2 * Wireless utility functions
4 * Copyright 2007 Johannes Berg <johannes@sipsolutions.net>
6 #include <net/wireless.h>
7 #include <asm/bitops.h>
10 int ieee80211_channel_to_frequency(int chan
)
13 return 2407 + chan
* 5;
18 /* FIXME: 802.11j 17.3.8.3.2 */
19 return (chan
+ 1000) * 5;
21 EXPORT_SYMBOL(ieee80211_channel_to_frequency
);
23 int ieee80211_frequency_to_channel(int freq
)
29 return (freq
- 2407) / 5;
31 /* FIXME: 802.11j 17.3.8.3.2 */
34 EXPORT_SYMBOL(ieee80211_frequency_to_channel
);
36 static void set_mandatory_flags_band(struct ieee80211_supported_band
*sband
,
37 enum ieee80211_band band
)
42 case IEEE80211_BAND_5GHZ
:
44 for (i
= 0; i
< sband
->n_bitrates
; i
++) {
45 if (sband
->bitrates
[i
].bitrate
== 60 ||
46 sband
->bitrates
[i
].bitrate
== 120 ||
47 sband
->bitrates
[i
].bitrate
== 240) {
48 sband
->bitrates
[i
].flags
|=
49 IEEE80211_RATE_MANDATORY_A
;
55 case IEEE80211_BAND_2GHZ
:
57 for (i
= 0; i
< sband
->n_bitrates
; i
++) {
58 if (sband
->bitrates
[i
].bitrate
== 10) {
59 sband
->bitrates
[i
].flags
|=
60 IEEE80211_RATE_MANDATORY_B
|
61 IEEE80211_RATE_MANDATORY_G
;
65 if (sband
->bitrates
[i
].bitrate
== 20 ||
66 sband
->bitrates
[i
].bitrate
== 55 ||
67 sband
->bitrates
[i
].bitrate
== 110 ||
68 sband
->bitrates
[i
].bitrate
== 60 ||
69 sband
->bitrates
[i
].bitrate
== 120 ||
70 sband
->bitrates
[i
].bitrate
== 240) {
71 sband
->bitrates
[i
].flags
|=
72 IEEE80211_RATE_MANDATORY_G
;
76 if (sband
->bitrates
[i
].bitrate
!= 10 &&
77 sband
->bitrates
[i
].bitrate
!= 20 &&
78 sband
->bitrates
[i
].bitrate
!= 55 &&
79 sband
->bitrates
[i
].bitrate
!= 110)
80 sband
->bitrates
[i
].flags
|=
83 WARN_ON(want
!= 0 && want
!= 3 && want
!= 6);
85 case IEEE80211_NUM_BANDS
:
91 void ieee80211_set_bitrate_flags(struct wiphy
*wiphy
)
93 enum ieee80211_band band
;
95 for (band
= 0; band
< IEEE80211_NUM_BANDS
; band
++)
96 if (wiphy
->bands
[band
])
97 set_mandatory_flags_band(wiphy
->bands
[band
], band
);