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 struct ieee80211_channel
*__ieee80211_get_channel(struct wiphy
*wiphy
,
39 enum ieee80211_band band
;
40 struct ieee80211_supported_band
*sband
;
43 for (band
= 0; band
< IEEE80211_NUM_BANDS
; band
++) {
44 sband
= wiphy
->bands
[band
];
49 for (i
= 0; i
< sband
->n_channels
; i
++) {
50 if (sband
->channels
[i
].center_freq
== freq
)
51 return &sband
->channels
[i
];
57 EXPORT_SYMBOL(__ieee80211_get_channel
);
59 static void set_mandatory_flags_band(struct ieee80211_supported_band
*sband
,
60 enum ieee80211_band band
)
65 case IEEE80211_BAND_5GHZ
:
67 for (i
= 0; i
< sband
->n_bitrates
; i
++) {
68 if (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_A
;
78 case IEEE80211_BAND_2GHZ
:
80 for (i
= 0; i
< sband
->n_bitrates
; i
++) {
81 if (sband
->bitrates
[i
].bitrate
== 10) {
82 sband
->bitrates
[i
].flags
|=
83 IEEE80211_RATE_MANDATORY_B
|
84 IEEE80211_RATE_MANDATORY_G
;
88 if (sband
->bitrates
[i
].bitrate
== 20 ||
89 sband
->bitrates
[i
].bitrate
== 55 ||
90 sband
->bitrates
[i
].bitrate
== 110 ||
91 sband
->bitrates
[i
].bitrate
== 60 ||
92 sband
->bitrates
[i
].bitrate
== 120 ||
93 sband
->bitrates
[i
].bitrate
== 240) {
94 sband
->bitrates
[i
].flags
|=
95 IEEE80211_RATE_MANDATORY_G
;
99 if (sband
->bitrates
[i
].bitrate
!= 10 &&
100 sband
->bitrates
[i
].bitrate
!= 20 &&
101 sband
->bitrates
[i
].bitrate
!= 55 &&
102 sband
->bitrates
[i
].bitrate
!= 110)
103 sband
->bitrates
[i
].flags
|=
104 IEEE80211_RATE_ERP_G
;
106 WARN_ON(want
!= 0 && want
!= 3 && want
!= 6);
108 case IEEE80211_NUM_BANDS
:
114 void ieee80211_set_bitrate_flags(struct wiphy
*wiphy
)
116 enum ieee80211_band band
;
118 for (band
= 0; band
< IEEE80211_NUM_BANDS
; band
++)
119 if (wiphy
->bands
[band
])
120 set_mandatory_flags_band(wiphy
->bands
[band
], band
);