ieee80211.c (148936) | ieee80211.c (152450) |
---|---|
1/*- 2 * Copyright (c) 2001 Atsushi Onoe 3 * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 17 unchanged lines hidden (view full) --- 26 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 30 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 2001 Atsushi Onoe 3 * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 17 unchanged lines hidden (view full) --- 26 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 30 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33#include <sys/cdefs.h> |
34__FBSDID("$FreeBSD: head/sys/net80211/ieee80211.c 148936 2005-08-10 16:22:30Z sam $"); | 34__FBSDID("$FreeBSD: head/sys/net80211/ieee80211.c 152450 2005-11-15 05:56:32Z sam $"); |
35 36/* 37 * IEEE 802.11 generic handler 38 */ 39 40#include <sys/param.h> 41#include <sys/systm.h> 42#include <sys/kernel.h> --- 185 unchanged lines hidden (view full) --- 228 229 bpfdetach(ifp); 230 ether_ifdetach(ifp); 231} 232 233/* 234 * Convert MHz frequency to IEEE channel number. 235 */ | 35 36/* 37 * IEEE 802.11 generic handler 38 */ 39 40#include <sys/param.h> 41#include <sys/systm.h> 42#include <sys/kernel.h> --- 185 unchanged lines hidden (view full) --- 228 229 bpfdetach(ifp); 230 ether_ifdetach(ifp); 231} 232 233/* 234 * Convert MHz frequency to IEEE channel number. 235 */ |
236u_int | 236int |
237ieee80211_mhz2ieee(u_int freq, u_int flags) 238{ | 237ieee80211_mhz2ieee(u_int freq, u_int flags) 238{ |
239#define IS_CHAN_IN_PUBLIC_SAFETY_BAND(_c) ((_c) > 4940 && (_c) < 4990) |
|
239 if (flags & IEEE80211_CHAN_2GHZ) { /* 2GHz band */ 240 if (freq == 2484) 241 return 14; 242 if (freq < 2484) | 240 if (flags & IEEE80211_CHAN_2GHZ) { /* 2GHz band */ 241 if (freq == 2484) 242 return 14; 243 if (freq < 2484) |
243 return (freq - 2407) / 5; | 244 return ((int) freq - 2407) / 5; |
244 else 245 return 15 + ((freq - 2512) / 20); 246 } else if (flags & IEEE80211_CHAN_5GHZ) { /* 5Ghz band */ | 245 else 246 return 15 + ((freq - 2512) / 20); 247 } else if (flags & IEEE80211_CHAN_5GHZ) { /* 5Ghz band */ |
247 return (freq - 5000) / 5; | 248 if (IS_CHAN_IN_PUBLIC_SAFETY_BAND(freq)) 249 return ((freq * 10) + 250 (((freq % 5) == 2) ? 5 : 0) - 49400) / 5; 251 if (freq <= 5000) 252 return (freq - 4000) / 5; 253 else 254 return (freq - 5000) / 5; |
248 } else { /* either, guess */ 249 if (freq == 2484) 250 return 14; 251 if (freq < 2484) | 255 } else { /* either, guess */ 256 if (freq == 2484) 257 return 14; 258 if (freq < 2484) |
252 return (freq - 2407) / 5; 253 if (freq < 5000) 254 return 15 + ((freq - 2512) / 20); | 259 return ((int) freq - 2407) / 5; 260 if (freq < 5000) { 261 if (IS_CHAN_IN_PUBLIC_SAFETY_BAND(freq)) 262 return ((freq * 10) + 263 (((freq % 5) == 2) ? 5 : 0) - 49400)/5; 264 else if (freq > 4900) 265 return (freq - 4000) / 5; 266 else 267 return 15 + ((freq - 2512) / 20); 268 } |
255 return (freq - 5000) / 5; 256 } | 269 return (freq - 5000) / 5; 270 } |
271#undef IS_CHAN_IN_PUBLIC_SAFETY_BAND |
|
257} 258 259/* 260 * Convert channel to IEEE channel number. 261 */ | 272} 273 274/* 275 * Convert channel to IEEE channel number. 276 */ |
262u_int | 277int |
263ieee80211_chan2ieee(struct ieee80211com *ic, struct ieee80211_channel *c) 264{ 265 if (ic->ic_channels <= c && c <= &ic->ic_channels[IEEE80211_CHAN_MAX]) 266 return c - ic->ic_channels; 267 else if (c == IEEE80211_CHAN_ANYC) 268 return IEEE80211_CHAN_ANY; 269 else if (c != NULL) { 270 if_printf(ic->ic_ifp, "invalid channel freq %u flags %x\n", --- 750 unchanged lines hidden --- | 278ieee80211_chan2ieee(struct ieee80211com *ic, struct ieee80211_channel *c) 279{ 280 if (ic->ic_channels <= c && c <= &ic->ic_channels[IEEE80211_CHAN_MAX]) 281 return c - ic->ic_channels; 282 else if (c == IEEE80211_CHAN_ANYC) 283 return IEEE80211_CHAN_ANY; 284 else if (c != NULL) { 285 if_printf(ic->ic_ifp, "invalid channel freq %u flags %x\n", --- 750 unchanged lines hidden --- |