1/** 2 * This header file contains data structures and 3 * function declarations of 802.11d 4 */ 5#ifndef _WLAN_11D_ 6#define _WLAN_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 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 { 50 __le16 action; 51 struct mrvlietypes_domainparamset domain; 52} __attribute__ ((packed)); 53 54/** domain regulatory information */ 55struct wlan_802_11d_domain_reg { 56 /** 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 81u8 libertas_get_scan_type_11d(u8 chan, 82 struct parsed_region_chan_11d *parsed_region_chan); 83 84u32 libertas_chan_2_freq(u8 chan, u8 band); 85 86enum state_11d libertas_get_state_11d(wlan_private * priv); 87 88void libertas_init_11d(wlan_private * priv); 89 90int libertas_set_universaltable(wlan_private * priv, u8 band); 91 92int libertas_cmd_802_11d_domain_info(wlan_private * priv, 93 struct cmd_ds_command *cmd, u16 cmdno, 94 u16 cmdOption); 95 96int libertas_cmd_enable_11d(wlan_private * priv, struct iwreq *wrq); 97 98int libertas_ret_802_11d_domain_info(wlan_private * priv, 99 struct cmd_ds_command *resp); 100 101struct bss_descriptor; 102int libertas_parse_dnld_countryinfo_11d(wlan_private * priv, 103 struct bss_descriptor * bss); 104 105int libertas_create_dnld_countryinfo_11d(wlan_private * priv); 106 107#endif /* _WLAN_11D_ */ 108