2007-02-10 22:25:27 +08:00
|
|
|
/**
|
|
|
|
* This header file contains data structures and
|
|
|
|
* function declarations of 802.11d
|
|
|
|
*/
|
|
|
|
#ifndef _WLAN_11D_
|
|
|
|
#define _WLAN_11D_
|
|
|
|
|
|
|
|
#include "types.h"
|
|
|
|
#include "defs.h"
|
|
|
|
|
|
|
|
#define UNIVERSAL_REGION_CODE 0xff
|
|
|
|
|
|
|
|
/** (Beaconsize(256)-5(IEId,len,contrystr(3))/3(FirstChan,NoOfChan,MaxPwr)
|
|
|
|
*/
|
|
|
|
#define MRVDRV_MAX_SUBBAND_802_11D 83
|
|
|
|
|
|
|
|
#define COUNTRY_CODE_LEN 3
|
|
|
|
#define MAX_NO_OF_CHAN 40
|
|
|
|
|
|
|
|
struct cmd_ds_command;
|
|
|
|
|
|
|
|
/** Data structure for Country IE*/
|
|
|
|
struct ieeetypes_subbandset {
|
|
|
|
u8 firstchan;
|
|
|
|
u8 nrchan;
|
|
|
|
u8 maxtxpwr;
|
|
|
|
} __attribute__ ((packed));
|
|
|
|
|
|
|
|
struct ieeetypes_countryinfoset {
|
|
|
|
u8 element_id;
|
|
|
|
u8 len;
|
|
|
|
u8 countrycode[COUNTRY_CODE_LEN];
|
|
|
|
struct ieeetypes_subbandset subband[1];
|
|
|
|
};
|
|
|
|
|
|
|
|
struct ieeetypes_countryinfofullset {
|
|
|
|
u8 element_id;
|
|
|
|
u8 len;
|
|
|
|
u8 countrycode[COUNTRY_CODE_LEN];
|
|
|
|
struct ieeetypes_subbandset subband[MRVDRV_MAX_SUBBAND_802_11D];
|
|
|
|
} __attribute__ ((packed));
|
|
|
|
|
|
|
|
struct mrvlietypes_domainparamset {
|
|
|
|
struct mrvlietypesheader header;
|
|
|
|
u8 countrycode[COUNTRY_CODE_LEN];
|
|
|
|
struct ieeetypes_subbandset subband[1];
|
|
|
|
} __attribute__ ((packed));
|
|
|
|
|
|
|
|
struct cmd_ds_802_11d_domain_info {
|
2007-05-26 11:36:54 +08:00
|
|
|
__le16 action;
|
2007-02-10 22:25:27 +08:00
|
|
|
struct mrvlietypes_domainparamset domain;
|
|
|
|
} __attribute__ ((packed));
|
|
|
|
|
|
|
|
/** domain regulatory information */
|
|
|
|
struct wlan_802_11d_domain_reg {
|
|
|
|
/** country Code*/
|
|
|
|
u8 countrycode[COUNTRY_CODE_LEN];
|
|
|
|
/** No. of subband*/
|
|
|
|
u8 nr_subband;
|
|
|
|
struct ieeetypes_subbandset subband[MRVDRV_MAX_SUBBAND_802_11D];
|
|
|
|
};
|
|
|
|
|
|
|
|
struct chan_power_11d {
|
|
|
|
u8 chan;
|
|
|
|
u8 pwr;
|
|
|
|
} __attribute__ ((packed));
|
|
|
|
|
|
|
|
struct parsed_region_chan_11d {
|
|
|
|
u8 band;
|
|
|
|
u8 region;
|
|
|
|
s8 countrycode[COUNTRY_CODE_LEN];
|
|
|
|
struct chan_power_11d chanpwr[MAX_NO_OF_CHAN];
|
|
|
|
u8 nr_chan;
|
|
|
|
} __attribute__ ((packed));
|
|
|
|
|
|
|
|
struct region_code_mapping {
|
|
|
|
u8 region[COUNTRY_CODE_LEN];
|
|
|
|
u8 code;
|
|
|
|
};
|
|
|
|
|
|
|
|
u8 libertas_get_scan_type_11d(u8 chan,
|
|
|
|
struct parsed_region_chan_11d *parsed_region_chan);
|
|
|
|
|
|
|
|
u32 libertas_chan_2_freq(u8 chan, u8 band);
|
|
|
|
|
|
|
|
void libertas_init_11d(wlan_private * priv);
|
|
|
|
|
|
|
|
int libertas_set_universaltable(wlan_private * priv, u8 band);
|
|
|
|
|
|
|
|
int libertas_cmd_802_11d_domain_info(wlan_private * priv,
|
|
|
|
struct cmd_ds_command *cmd, u16 cmdno,
|
|
|
|
u16 cmdOption);
|
|
|
|
|
|
|
|
int libertas_ret_802_11d_domain_info(wlan_private * priv,
|
|
|
|
struct cmd_ds_command *resp);
|
|
|
|
|
2007-05-26 05:09:41 +08:00
|
|
|
struct bss_descriptor;
|
|
|
|
int libertas_parse_dnld_countryinfo_11d(wlan_private * priv,
|
|
|
|
struct bss_descriptor * bss);
|
2007-02-10 22:25:27 +08:00
|
|
|
|
|
|
|
int libertas_create_dnld_countryinfo_11d(wlan_private * priv);
|
|
|
|
|
|
|
|
#endif /* _WLAN_11D_ */
|