Merge branch 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6
[pandora-kernel.git] / drivers / staging / ath6kl / wlan / src / wlan_utils.c
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  */
33 A_UINT16
34 wlan_ieee2freq(int chan)
35 {
36     if (chan == 14) {
37         return 2484;
38     }
39     if (chan < 14) {    /* 0-13 */
40         return (2407 + (chan*5));
41     }
42     if (chan < 27) {    /* 15-26 */
43         return (2512 + ((chan-15)*20));
44     }
45     return (5000 + (chan*5));
46 }
47
48 /*
49  * Converts MHz frequency to IEEE channel number.
50  */
51 A_UINT32
52 wlan_freq2ieee(A_UINT16 freq)
53 {
54     if (freq == 2484)
55         return 14;
56     if (freq < 2484)
57         return (freq - 2407) / 5;
58     if (freq < 5000)
59         return 15 + ((freq - 2512) / 20);
60     return (freq - 5000) / 5;
61 }