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