Merge branch 'dma-debug/fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/joro...
[linux-2.6] / drivers / net / wireless / libertas / 11d.h
1 /**
2   * This header file contains data structures and
3   * function declarations of 802.11d
4   */
5 #ifndef _LBS_11D_
6 #define _LBS_11D_
7
8 #include "types.h"
9 #include "defs.h"
10
11 #define UNIVERSAL_REGION_CODE                   0xff
12
13 /** (Beaconsize(256)-5(IEId,len,contrystr(3))/3(FirstChan,NoOfChan,MaxPwr)
14  */
15 #define MRVDRV_MAX_SUBBAND_802_11D              83
16
17 #define COUNTRY_CODE_LEN                        3
18 #define MAX_NO_OF_CHAN                          40
19
20 struct cmd_ds_command;
21
22 /** Data structure for Country IE*/
23 struct ieee_subbandset {
24         u8 firstchan;
25         u8 nrchan;
26         u8 maxtxpwr;
27 } __attribute__ ((packed));
28
29 struct ieee_ie_country_info_set {
30         struct ieee_ie_header header;
31
32         u8 countrycode[COUNTRY_CODE_LEN];
33         struct ieee_subbandset subband[1];
34 };
35
36 struct ieee_ie_country_info_full_set {
37         struct ieee_ie_header header;
38
39         u8 countrycode[COUNTRY_CODE_LEN];
40         struct ieee_subbandset subband[MRVDRV_MAX_SUBBAND_802_11D];
41 } __attribute__ ((packed));
42
43 struct mrvl_ie_domain_param_set {
44         struct mrvl_ie_header header;
45
46         u8 countrycode[COUNTRY_CODE_LEN];
47         struct ieee_subbandset subband[1];
48 } __attribute__ ((packed));
49
50 struct cmd_ds_802_11d_domain_info {
51         __le16 action;
52         struct mrvl_ie_domain_param_set domain;
53 } __attribute__ ((packed));
54
55 /** domain regulatory information */
56 struct lbs_802_11d_domain_reg {
57         /** country Code*/
58         u8 countrycode[COUNTRY_CODE_LEN];
59         /** No. of subband*/
60         u8 nr_subband;
61         struct ieee_subbandset subband[MRVDRV_MAX_SUBBAND_802_11D];
62 };
63
64 struct chan_power_11d {
65         u8 chan;
66         u8 pwr;
67 } __attribute__ ((packed));
68
69 struct parsed_region_chan_11d {
70         u8 band;
71         u8 region;
72         s8 countrycode[COUNTRY_CODE_LEN];
73         struct chan_power_11d chanpwr[MAX_NO_OF_CHAN];
74         u8 nr_chan;
75 } __attribute__ ((packed));
76
77 struct region_code_mapping {
78         u8 region[COUNTRY_CODE_LEN];
79         u8 code;
80 };
81
82 struct lbs_private;
83
84 u8 lbs_get_scan_type_11d(u8 chan,
85                           struct parsed_region_chan_11d *parsed_region_chan);
86
87 u32 lbs_chan_2_freq(u8 chan);
88
89 void lbs_init_11d(struct lbs_private *priv);
90
91 int lbs_set_universaltable(struct lbs_private *priv, u8 band);
92
93 int lbs_cmd_802_11d_domain_info(struct lbs_private *priv,
94                                  struct cmd_ds_command *cmd, u16 cmdno,
95                                  u16 cmdOption);
96
97 int lbs_ret_802_11d_domain_info(struct cmd_ds_command *resp);
98
99 struct bss_descriptor;
100 int lbs_parse_dnld_countryinfo_11d(struct lbs_private *priv,
101                                         struct bss_descriptor * bss);
102
103 int lbs_create_dnld_countryinfo_11d(struct lbs_private *priv);
104
105 #endif