Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
unifi_native.h
Go to the documentation of this file.
1 /*
2  *****************************************************************************
3  *
4  * FILE : unifi_native.h
5  *
6  * PURPOSE : Private header file for unifi driver support to wireless extensions.
7  *
8  * UDI = UniFi Debug Interface
9  *
10  * Copyright (C) 2005-2008 by Cambridge Silicon Radio Ltd.
11  *
12  * Refer to LICENSE.txt included with this source code for details on
13  * the license terms.
14  *
15  *****************************************************************************
16  */
17 #ifndef __LINUX_UNIFI_NATIVE_H__
18 #define __LINUX_UNIFI_NATIVE_H__ 1
19 
20 #include <linux/kernel.h>
21 #include <linux/if_arp.h>
22 
23 
24 /*
25  * scan.c wext.c autojoin.c
26  */
27 /* Structure to hold results of a scan */
28 typedef struct scan_info {
29 
30 /* CSR_MLME_SCAN_INDICATION msi; */
31 
32  unsigned char *info_elems;
34 
35 } scan_info_t;
36 
37 
38 #define IE_VECTOR_MAXLEN 1024
39 
40 #ifdef CSR_SUPPORT_WEXT
41 /*
42  * Structre to hold the wireless network configuration info.
43  */
44 struct wext_config {
45 
46  /* Requested channel when setting up an adhoc network */
47  int channel;
48 
49  /* wireless extns mode: IW_MODE_AUTO, ADHOC, INFRA, MASTER ... MONITOR */
50  int mode;
51 
52  /* The capabilities of the currently joined network */
53  int capability;
54 
55  /* The interval between beacons if we create an IBSS */
56  int beacon_period;
57 
58  /*
59  * Power-save parameters
60  */
61  /* The listen interval to ask for in Associate req. */
62  int assoc_listen_interval;
63  /* Power-mode to put UniFi into */
64 
65  unsigned char desired_ssid[UNIFI_MAX_SSID_LEN]; /* the last ESSID set by SIOCSIWESSID */
66  int power_mode;
67  /* Whether to wake for broadcast packets (using DTIM interval) */
68  int wakeup_for_dtims;
69 
70  /* Currently selected WEP Key ID (0..3) */
71  int wep_key_id;
72 
73  wep_key_t wep_keys[NUM_WEPKEYS];
74 
75 /* CSR_AUTHENTICATION_TYPE auth_type; */
76  int privacy;
77 
78  u32 join_failure_timeout;
79  u32 auth_failure_timeout;
80  u32 assoc_failure_timeout;
81 
82  unsigned char generic_ie[IE_VECTOR_MAXLEN];
83  int generic_ie_len;
84 
85  struct iw_statistics wireless_stats;
86 
87 
88  /* the ESSID we are currently associated to */
89  unsigned char current_ssid[UNIFI_MAX_SSID_LEN];
90  /* the BSSID we are currently associated to */
91  unsigned char current_bssid[6];
92 
93  /*
94  * IW_AUTH_WPA_VERSION_DISABLED 0x00000001
95  * IW_AUTH_WPA_VERSION_WPA 0x00000002
96  * IW_AUTH_WPA_VERSION_WPA2 0x00000004
97  */
98  unsigned char wpa_version;
99 
100  /*
101  * cipher selection:
102  * IW_AUTH_CIPHER_NONE 0x00000001
103  * IW_AUTH_CIPHER_WEP40 0x00000002
104  * IW_AUTH_CIPHER_TKIP 0x00000004
105  * IW_AUTH_CIPHER_CCMP 0x00000008
106  * IW_AUTH_CIPHER_WEP104 0x00000010
107  */
108  unsigned char pairwise_cipher_used;
109  unsigned char group_cipher_used;
110 
111  unsigned int frag_thresh;
112  unsigned int rts_thresh;
113 
114  /* U-APSD value, send with Association Request to WMM Enabled APs */
115  unsigned char wmm_bss_uapsd_mask;
116  /* The WMM capabilities of the selected BSS */
117  unsigned int bss_wmm_capabilities;
118 
119  /* Flag to prevent a join when the ssid is set */
120  int disable_join_on_ssid_set;
121 
122  /* Scan info */
123 #define UNIFI_MAX_SCANS 32
124  scan_info_t scan_list[UNIFI_MAX_SCANS];
125  int num_scan_info;
126 
127  /* Flag on whether non-802.1x packets are allowed out */
128 /* CsrWifiRouterPortAction block_controlled_port;*/
129 
130  /* Flag on whether we have completed an authenticate/associate process */
131  unsigned int flag_associated : 1;
132 }; /* struct wext_config */
133 
134 #endif /* CSR_SUPPORT_WEXT */
135 
136 
137 /*
138  * wext.c
139  */
140 /*int mlme_set_protection(unifi_priv_t *priv, unsigned char *addr,
141  CSR_PROTECT_TYPE prot, CSR_KEY_TYPE key_type);
142 */
143 
144 /*
145  * scan.c
146  */
147 /*
148 void unifi_scan_indication_handler(unifi_priv_t *priv,
149  const CSR_MLME_SCAN_INDICATION *msg,
150  const unsigned char *extra,
151  unsigned int len);
152 */
155 
156 
157 /*
158  * Utility functions
159  */
160 const unsigned char *unifi_find_info_element(int id,
161  const unsigned char *info,
162  int len);
163 int unifi_add_info_element(unsigned char *info,
164  int ie_id,
165  const unsigned char *ie_data,
166  int ie_len);
167 
168 /*
169  * autojoin.c
170  */
171 /* Higher level fns */
172 int unifi_autojoin(unifi_priv_t *priv, const char *ssid);
173 /*
174 int unifi_do_scan(unifi_priv_t *priv, int scantype, CSR_BSS_TYPE bsstype,
175  const char *ssid, int ssid_len);
176 */
179 int unifi_join_bss(unifi_priv_t *priv, unsigned char *macaddr);
182  unsigned char *ie_vector,
183  int ie_len, int *ap_capabilities);
184 
185 /*
186  * Status and management.
187  */
190 
191 /*
192  * Function to reset UniFi's 802.11 state by sending MLME-RESET.req
193  */
194 int unifi_reset_state(unifi_priv_t *priv, unsigned char *macaddr, unsigned char set_default_mib);
195 
196 
197 /*
198  * mlme.c
199  */
200 /* Abort an MLME operation - useful in error recovery */
202 
204  CSR_SIGNAL *sig, bulk_data_param_t *data_ptrs,
205  int timeout);
207  CSR_SIGNAL *signal, int signal_len,
208  const bulk_data_param_t *bulkdata);
209 
210 /*
211  * Utility functions
212  */
213 const char *lookup_reason_code(int reason);
214 const char *lookup_result_code(int result);
215 
216 
217 /*
218  * sme_native.c
219  */
225 
226 /* Callback for event logging to SME clients (unifi_manager) */
228  const u8 *sig_packed, int sig_len,
229  const bulk_data_param_t *bulkdata,
230  int dir);
231 
233  const u8 *sig_packed, int sig_len,
234  const bulk_data_param_t *bulkdata,
235  int dir);
236 
237 /* Task to query statistics from the MIB */
238 #define UF_SME_STATS_WQ_TIMEOUT 2000 /* in msecs */
239 void uf_sme_stats_wq(struct work_struct *work);
240 
242  const u8 *packed_signal,
243  int packed_signal_len,
244  const bulk_data_param_t *bulkdata, int dir);
245 #ifdef UNIFI_SNIFF_ARPHRD
246 /*
247  * monitor.c
248  */
249 int uf_start_sniff(unifi_priv_t *priv);
250 /*
251 void ma_sniffdata_ind(void *ospriv,
252  const CSR_MA_SNIFFDATA_INDICATION *ind,
253  const bulk_data_param_t *bulkdata);
254 */
255 #endif /* ARPHRD_IEEE80211_PRISM */
256 
257 #endif /* __LINUX_UNIFI_NATIVE_H__ */