Root/drivers/staging/csr/unifi_native.h

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 */
28typedef struct scan_info {
29
30/* CSR_MLME_SCAN_INDICATION msi; */
31
32    unsigned char *info_elems;
33    int info_elem_length;
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 */
44struct 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/*
148void 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*/
153void unifi_clear_scan_table(unifi_priv_t *priv);
154scan_info_t *unifi_get_scan_report(unifi_priv_t *priv, int index);
155
156
157/*
158 * Utility functions
159 */
160const unsigned char *unifi_find_info_element(int id,
161                                             const unsigned char *info,
162                                             int len);
163int 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 */
172int unifi_autojoin(unifi_priv_t *priv, const char *ssid);
173/*
174int unifi_do_scan(unifi_priv_t *priv, int scantype, CSR_BSS_TYPE bsstype,
175                  const char *ssid, int ssid_len);
176*/
177int unifi_set_powermode(unifi_priv_t *priv);
178int unifi_join_ap(unifi_priv_t *priv, scan_info_t *si);
179int unifi_join_bss(unifi_priv_t *priv, unsigned char *macaddr);
180int unifi_leave(unifi_priv_t *priv);
181unsigned int unifi_get_wmm_bss_capabilities(unifi_priv_t *priv,
182                                            unsigned char *ie_vector,
183                                            int ie_len, int *ap_capabilities);
184
185/*
186 * Status and management.
187 */
188int uf_init_wext_interface(unifi_priv_t *priv);
189void uf_deinit_wext_interface(unifi_priv_t *priv);
190
191/*
192 * Function to reset UniFi's 802.11 state by sending MLME-RESET.req
193 */
194int 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 */
201int uf_abort_mlme(unifi_priv_t *priv);
202
203int unifi_mlme_blocking_request(unifi_priv_t *priv, ul_client_t *pcli,
204                                CSR_SIGNAL *sig, bulk_data_param_t *data_ptrs,
205                                int timeout);
206void unifi_mlme_copy_reply_and_wakeup_client(ul_client_t *pcli,
207                                             CSR_SIGNAL *signal, int signal_len,
208                                             const bulk_data_param_t *bulkdata);
209
210/*
211 * Utility functions
212 */
213const char *lookup_reason_code(int reason);
214const char *lookup_result_code(int result);
215
216
217/*
218 * sme_native.c
219 */
220int uf_sme_init(unifi_priv_t *priv);
221void uf_sme_deinit(unifi_priv_t *priv);
222int sme_sys_suspend(unifi_priv_t *priv);
223int sme_sys_resume(unifi_priv_t *priv);
224int sme_mgt_wifi_on(unifi_priv_t *priv);
225
226/* Callback for event logging to SME clients (unifi_manager) */
227void sme_native_log_event(ul_client_t *client,
228                          const u8 *sig_packed, int sig_len,
229                          const bulk_data_param_t *bulkdata,
230                          int dir);
231
232void sme_native_mlme_event_handler(ul_client_t *pcli,
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 */
239void uf_sme_stats_wq(struct work_struct *work);
240
241void uf_native_process_udi_signal(ul_client_t *pcli,
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 */
249int uf_start_sniff(unifi_priv_t *priv);
250/*
251void 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__ */
258

Archive Download this file



interactive