On Sat December 25 2010 01:46:00 Dave Kilroy wrote: > On Fri, Dec 24, 2010 at 7:44 AM, Bruno Randolf <br1@xxxxxxxxxxx> wrote: > > Extend channel to frequency mapping for 802.11j Japan 4.9GHz band, > > according to IEEE802.11 section 17.3.8.3.2 and Annex J. Because there > > are now overlapping channel numbers in the 2GHz and 5GHz band we can't > > map from channel to frequency without knowing the band. This is no > > problem as in most contexts we know the band. In places where we don't > > know the band (and WEXT compatibility) we assume the 2GHz band for > > channels below 14. > > > > Signed-off-by: Bruno Randolf <br1@xxxxxxxxxxx> > > --- > > -int ieee80211_channel_to_frequency(int chan) > > +int ieee80211_channel_to_frequency(int chan, enum ieee80211_band band) > > { > > - if (chan < 14) > > - return 2407 + chan * 5; > > - > > - if (chan == 14) > > - return 2484; > > - > > - /* FIXME: 802.11j 17.3.8.3.2 */ > > - return (chan + 1000) * 5; > > + /* see 802.11 17.3.8.3.2 and Annex J > > + * there are overlapping channel numbers in 5GHz and 2GHz bands > > */ + if (band == IEEE80211_BAND_5GHZ) { > > + if (chan >= 182 && chan <= 196) > > + return 4000 + chan * 5; > > + else > > + return 5000 + chan * 5; > > + } else { /* IEEE80211_BAND_2GHZ */ > > + if (chan == 14) > > + return 2484; > > + else if (chan < 14) > > + return 2407 + chan * 5; > > + else > > + return 0; /* not supported */ > > + } > > } > > EXPORT_SYMBOL(ieee80211_channel_to_frequency); > > > > int ieee80211_frequency_to_channel(int freq) > > { > > + /* see 802.11 17.3.8.3.2 and Annex J */ > > if (freq == 2484) > > return 14; > > - > > - if (freq < 2484) > > + else if (freq < 2484) > > return (freq - 2407) / 5; > > - > > - /* FIXME: 802.11j 17.3.8.3.2 */ > > - return freq/5 - 1000; > > + else if (freq >= 4910 && freq <= 4980) > > + return (freq - 4000) / 5; > > + else > > + return (freq - 5000) / 5; > > } > > EXPORT_SYMBOL(ieee80211_frequency_to_channel); > > You don't have to use them, but there are a few channel/frequency > conversion routines in include/ieee80211.h which could be reused in > these functions. Thanks for that info, I didn't know about those functions. I just checked them and it seems most of them are not used, AFAICT: ieee80211_fhss_chan_to_freq - not used ieee80211_freq_to_fhss_chan - not used ieee80211_hr_chan_to_freq - not used ieee80211_freq_to_hr_chan - not used ieee80211_erp_chan_to_freq - not used ieee80211_freq_to_erp_chan - not used ieee80211_ofdm_chan_to_freq - not used ieee80211_freq_to_ofdm_chan - not used The only two which are used are for 2GHz channels: ieee80211_dsss_chan_to_freq - atmel, airo, wl3501_cs, orinoco, rndis_wlan ieee80211_freq_to_dsss_chan - atmel, airo, orinoco, zd1201 Anyhow i guess it would make sense to have a common channel to frequency mapping function for mac80211 and other wireless drivers? The problem is now we have to use enum ieee80211_band which is defined cfg80211.h... Any opinions? bruno -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html