1 //------------------------------------------------------------------------------
2 // <copyright file="wlan_utils.c" company="Atheros">
3 //    Copyright (c) 2004-2010 Atheros Corporation.  All rights reserved.
4 //
5 //
6 // Permission to use, copy, modify, and/or distribute this software for any
7 // purpose with or without fee is hereby granted, provided that the above
8 // copyright notice and this permission notice appear in all copies.
9 //
10 // THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 // WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 // MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 // ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 // WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 //
18 //
19 //------------------------------------------------------------------------------
20 //==============================================================================
21 // This module implements frequently used wlan utilies
22 //
23 // Author(s): ="Atheros"
24 //==============================================================================
25 #include <a_config.h>
26 #include <athdefs.h>
27 #include <a_types.h>
28 #include <a_osapi.h>
29 
30 /*
31  * converts ieee channel number to frequency
32  */
wlan_ieee2freq(int chan)33 u16 wlan_ieee2freq(int chan)
34 {
35     if (chan == 14) {
36         return 2484;
37     }
38     if (chan < 14) {    /* 0-13 */
39         return (2407 + (chan*5));
40     }
41     if (chan < 27) {    /* 15-26 */
42         return (2512 + ((chan-15)*20));
43     }
44     return (5000 + (chan*5));
45 }
46 
47 /*
48  * Converts MHz frequency to IEEE channel number.
49  */
wlan_freq2ieee(u16 freq)50 u32 wlan_freq2ieee(u16 freq)
51 {
52     if (freq == 2484)
53         return 14;
54     if (freq < 2484)
55         return (freq - 2407) / 5;
56     if (freq < 5000)
57         return 15 + ((freq - 2512) / 20);
58     return (freq - 5000) / 5;
59 }
60