blob: 4f4f47f0f8781987ef483a6c73b37b18504475f7 [file] [log] [blame]
Marcelo Tosatti876c9d32007-02-10 12:25:27 -02001/**
2 * This header file contains data structures and
3 * function declarations of 802.11d
4 */
Holger Schurig10078322007-11-15 18:05:47 -05005#ifndef _LBS_11D_
6#define _LBS_11D_
Marcelo Tosatti876c9d32007-02-10 12:25:27 -02007
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
20struct cmd_ds_command;
21
22/** Data structure for Country IE*/
23struct ieeetypes_subbandset {
24 u8 firstchan;
25 u8 nrchan;
26 u8 maxtxpwr;
27} __attribute__ ((packed));
28
29struct ieeetypes_countryinfoset {
30 u8 element_id;
31 u8 len;
32 u8 countrycode[COUNTRY_CODE_LEN];
33 struct ieeetypes_subbandset subband[1];
34};
35
36struct ieeetypes_countryinfofullset {
37 u8 element_id;
38 u8 len;
39 u8 countrycode[COUNTRY_CODE_LEN];
40 struct ieeetypes_subbandset subband[MRVDRV_MAX_SUBBAND_802_11D];
41} __attribute__ ((packed));
42
43struct mrvlietypes_domainparamset {
44 struct mrvlietypesheader header;
45 u8 countrycode[COUNTRY_CODE_LEN];
46 struct ieeetypes_subbandset subband[1];
47} __attribute__ ((packed));
48
49struct cmd_ds_802_11d_domain_info {
David Woodhouse981f1872007-05-25 23:36:54 -040050 __le16 action;
Marcelo Tosatti876c9d32007-02-10 12:25:27 -020051 struct mrvlietypes_domainparamset domain;
52} __attribute__ ((packed));
53
54/** domain regulatory information */
Holger Schurig10078322007-11-15 18:05:47 -050055struct lbs_802_11d_domain_reg {
Marcelo Tosatti876c9d32007-02-10 12:25:27 -020056 /** country Code*/
57 u8 countrycode[COUNTRY_CODE_LEN];
58 /** No. of subband*/
59 u8 nr_subband;
60 struct ieeetypes_subbandset subband[MRVDRV_MAX_SUBBAND_802_11D];
61};
62
63struct chan_power_11d {
64 u8 chan;
65 u8 pwr;
66} __attribute__ ((packed));
67
68struct parsed_region_chan_11d {
69 u8 band;
70 u8 region;
71 s8 countrycode[COUNTRY_CODE_LEN];
72 struct chan_power_11d chanpwr[MAX_NO_OF_CHAN];
73 u8 nr_chan;
74} __attribute__ ((packed));
75
76struct region_code_mapping {
77 u8 region[COUNTRY_CODE_LEN];
78 u8 code;
79};
80
Holger Schurig69f90322007-11-23 15:43:44 +010081struct lbs_private;
82
Holger Schurig10078322007-11-15 18:05:47 -050083u8 lbs_get_scan_type_11d(u8 chan,
Marcelo Tosatti876c9d32007-02-10 12:25:27 -020084 struct parsed_region_chan_11d *parsed_region_chan);
85
Holger Schurige98a88d2008-03-19 14:25:58 +010086u32 lbs_chan_2_freq(u8 chan);
Marcelo Tosatti876c9d32007-02-10 12:25:27 -020087
Holger Schurig69f90322007-11-23 15:43:44 +010088void lbs_init_11d(struct lbs_private *priv);
Marcelo Tosatti876c9d32007-02-10 12:25:27 -020089
Holger Schurig69f90322007-11-23 15:43:44 +010090int lbs_set_universaltable(struct lbs_private *priv, u8 band);
Marcelo Tosatti876c9d32007-02-10 12:25:27 -020091
Holger Schurig69f90322007-11-23 15:43:44 +010092int lbs_cmd_802_11d_domain_info(struct lbs_private *priv,
Marcelo Tosatti876c9d32007-02-10 12:25:27 -020093 struct cmd_ds_command *cmd, u16 cmdno,
94 u16 cmdOption);
95
Holger Schurige98a88d2008-03-19 14:25:58 +010096int lbs_ret_802_11d_domain_info(struct cmd_ds_command *resp);
Marcelo Tosatti876c9d32007-02-10 12:25:27 -020097
Dan Williamse76850d2007-05-25 17:09:41 -040098struct bss_descriptor;
Holger Schurig69f90322007-11-23 15:43:44 +010099int lbs_parse_dnld_countryinfo_11d(struct lbs_private *priv,
Dan Williamse76850d2007-05-25 17:09:41 -0400100 struct bss_descriptor * bss);
Marcelo Tosatti876c9d32007-02-10 12:25:27 -0200101
Holger Schurig69f90322007-11-23 15:43:44 +0100102int lbs_create_dnld_countryinfo_11d(struct lbs_private *priv);
Marcelo Tosatti876c9d32007-02-10 12:25:27 -0200103
Holger Schurig10078322007-11-15 18:05:47 -0500104#endif