Root/drivers/staging/csr/unifi_sme.h

1/*
2 * ***************************************************************************
3 * FILE: unifi_sme.h
4 *
5 * PURPOSE: SME related definitions.
6 *
7 * Copyright (C) 2007-2011 by Cambridge Silicon Radio Ltd.
8 *
9 * Refer to LICENSE.txt included with this source code for details on
10 * the license terms.
11 *
12 * ***************************************************************************
13 */
14#ifndef __LINUX_UNIFI_SME_H__
15#define __LINUX_UNIFI_SME_H__ 1
16
17#include <linux/kernel.h>
18
19#ifdef CSR_SME_USERSPACE
20#include "sme_userspace.h"
21#endif
22
23#include "csr_wifi_sme_lib.h"
24
25typedef int unifi_data_port_action;
26
27typedef struct unifi_port_cfg
28{
29    /* TRUE if this port entry is allocated */
30    u8 in_use;
31    CsrWifiRouterCtrlPortAction port_action;
32    CsrWifiMacAddress mac_address;
33} unifi_port_cfg_t;
34
35#define UNIFI_MAX_CONNECTIONS 8
36#define UNIFI_MAX_RETRY_LIMIT 5
37#define UF_DATA_PORT_NOT_OVERIDE 0
38#define UF_DATA_PORT_OVERIDE 1
39
40typedef struct unifi_port_config
41{
42    int entries_in_use;
43    int overide_action;
44    unifi_port_cfg_t port_cfg[UNIFI_MAX_CONNECTIONS];
45} unifi_port_config_t;
46
47
48enum sme_request_status {
49    SME_REQUEST_EMPTY,
50    SME_REQUEST_PENDING,
51    SME_REQUEST_RECEIVED,
52    SME_REQUEST_TIMEDOUT,
53    SME_REQUEST_CANCELLED,
54};
55
56/* Structure to hold a UDI logged signal */
57typedef struct {
58
59    /* The current status of the request */
60    enum sme_request_status request_status;
61
62    /* The status the SME has passed to us */
63    CsrResult reply_status;
64
65    /* SME's reply to a get request */
66    CsrWifiSmeVersions versions;
67    CsrWifiSmePowerConfig powerConfig;
68    CsrWifiSmeHostConfig hostConfig;
69    CsrWifiSmeStaConfig staConfig;
70    CsrWifiSmeDeviceConfig deviceConfig;
71    CsrWifiSmeCoexInfo coexInfo;
72    CsrWifiSmeCoexConfig coexConfig;
73    CsrWifiSmeMibConfig mibConfig;
74    CsrWifiSmeConnectionInfo connectionInfo;
75    CsrWifiSmeConnectionConfig connectionConfig;
76    CsrWifiSmeConnectionStats connectionStats;
77
78
79    /* SME's reply to a scan request */
80    u16 reply_scan_results_count;
81    CsrWifiSmeScanResult* reply_scan_results;
82
83} sme_reply_t;
84
85
86typedef struct {
87    u16 appHandle;
88    CsrWifiRouterEncapsulation encapsulation;
89    u16 protocol;
90    u8 oui[3];
91    u8 in_use;
92} sme_ma_unidata_ind_filter_t;
93
94
95CsrWifiRouterCtrlPortAction uf_sme_port_state(unifi_priv_t *priv,
96                                          unsigned char *address,
97                                          int queue,
98                                          u16 interfaceTag);
99unifi_port_cfg_t *uf_sme_port_config_handle(unifi_priv_t *priv,
100                                            unsigned char *address,
101                                            int queue,
102                                            u16 interfaceTag);
103
104
105
106/* Callback for event logging to SME clients */
107void sme_log_event(ul_client_t *client, const u8 *signal, int signal_len,
108                   const bulk_data_param_t *bulkdata, int dir);
109
110/* The workqueue task to the set the multicast addresses list */
111void uf_multicast_list_wq(struct work_struct *work);
112
113/* The workqueue task to execute the TA module */
114void uf_ta_wq(struct work_struct *work);
115
116
117/*
118 * SME blocking helper functions
119 */
120#ifdef UNIFI_DEBUG
121# define sme_complete_request(priv, status) uf_sme_complete_request(priv, status, __func__)
122#else
123# define sme_complete_request(priv, status) uf_sme_complete_request(priv, status, NULL)
124#endif
125
126void uf_sme_complete_request(unifi_priv_t *priv, CsrResult reply_status, const char *func);
127void uf_sme_cancel_request(unifi_priv_t *priv, CsrResult reply_status);
128
129
130/*
131 * Blocking functions using the SME SYS API.
132 */
133int sme_sys_suspend(unifi_priv_t *priv);
134int sme_sys_resume(unifi_priv_t *priv);
135
136
137/*
138 * Traffic Analysis workqueue jobs
139 */
140void uf_ta_ind_wq(struct work_struct *work);
141void uf_ta_sample_ind_wq(struct work_struct *work);
142
143/*
144 * SME config workqueue job
145 */
146void uf_sme_config_wq(struct work_struct *work);
147
148/*
149 * To send M4 read to send IND
150 */
151void uf_send_m4_ready_wq(struct work_struct *work);
152
153#if (defined(CSR_WIFI_SECURITY_WAPI_ENABLE) && defined(CSR_WIFI_SECURITY_WAPI_SW_ENCRYPTION))
154/*
155 * To send data pkt to Sme for encryption
156 */
157void uf_send_pkt_to_encrypt(struct work_struct *work);
158#endif
159
160int sme_mgt_power_config_set(unifi_priv_t *priv, CsrWifiSmePowerConfig *powerConfig);
161int sme_mgt_power_config_get(unifi_priv_t *priv, CsrWifiSmePowerConfig *powerConfig);
162int sme_mgt_host_config_set(unifi_priv_t *priv, CsrWifiSmeHostConfig *hostConfig);
163int sme_mgt_host_config_get(unifi_priv_t *priv, CsrWifiSmeHostConfig *hostConfig);
164int sme_mgt_sme_config_set(unifi_priv_t *priv, CsrWifiSmeStaConfig *staConfig, CsrWifiSmeDeviceConfig *deviceConfig);
165int sme_mgt_sme_config_get(unifi_priv_t *priv, CsrWifiSmeStaConfig *staConfig, CsrWifiSmeDeviceConfig *deviceConfig);
166int sme_mgt_coex_info_get(unifi_priv_t *priv, CsrWifiSmeCoexInfo *coexInfo);
167int sme_mgt_packet_filter_set(unifi_priv_t *priv);
168int sme_mgt_tspec(unifi_priv_t *priv, CsrWifiSmeListAction action,
169                  u32 tid, CsrWifiSmeDataBlock *tspec, CsrWifiSmeDataBlock *tclas);
170
171#ifdef CSR_SUPPORT_WEXT
172/*
173 * Blocking functions using the SME MGT API.
174 */
175int sme_mgt_wifi_on(unifi_priv_t *priv);
176int sme_mgt_wifi_off(unifi_priv_t *priv);
177/*int sme_mgt_set_value_async(unifi_priv_t *priv, unifi_AppValue *app_value);
178int sme_mgt_get_value_async(unifi_priv_t *priv, unifi_AppValue *app_value);
179int sme_mgt_get_value(unifi_priv_t *priv, unifi_AppValue *app_value);
180int sme_mgt_set_value(unifi_priv_t *priv, unifi_AppValue *app_value);
181*/
182int sme_mgt_coex_config_set(unifi_priv_t *priv, CsrWifiSmeCoexConfig *coexConfig);
183int sme_mgt_coex_config_get(unifi_priv_t *priv, CsrWifiSmeCoexConfig *coexConfig);
184int sme_mgt_mib_config_set(unifi_priv_t *priv, CsrWifiSmeMibConfig *mibConfig);
185int sme_mgt_mib_config_get(unifi_priv_t *priv, CsrWifiSmeMibConfig *mibConfig);
186
187int sme_mgt_connection_info_set(unifi_priv_t *priv, CsrWifiSmeConnectionInfo *connectionInfo);
188int sme_mgt_connection_info_get(unifi_priv_t *priv, CsrWifiSmeConnectionInfo *connectionInfo);
189int sme_mgt_connection_config_set(unifi_priv_t *priv, CsrWifiSmeConnectionConfig *connectionConfig);
190int sme_mgt_connection_config_get(unifi_priv_t *priv, CsrWifiSmeConnectionConfig *connectionConfig);
191int sme_mgt_connection_stats_get(unifi_priv_t *priv, CsrWifiSmeConnectionStats *connectionStats);
192
193int sme_mgt_versions_get(unifi_priv_t *priv, CsrWifiSmeVersions *versions);
194
195
196int sme_mgt_scan_full(unifi_priv_t *priv, CsrWifiSsid *specific_ssid,
197                      int num_channels, unsigned char *channel_list);
198int sme_mgt_scan_results_get_async(unifi_priv_t *priv,
199                                   struct iw_request_info *info,
200                                   char *scan_results,
201                                   long scan_results_len);
202int sme_mgt_disconnect(unifi_priv_t *priv);
203int sme_mgt_connect(unifi_priv_t *priv);
204int sme_mgt_key(unifi_priv_t *priv, CsrWifiSmeKey *sme_key,
205                CsrWifiSmeListAction action);
206int sme_mgt_pmkid(unifi_priv_t *priv, CsrWifiSmeListAction action,
207                  CsrWifiSmePmkidList *pmkid_list);
208int sme_mgt_mib_get(unifi_priv_t *priv,
209                    unsigned char *varbind, int *length);
210int sme_mgt_mib_set(unifi_priv_t *priv,
211                    unsigned char *varbind, int length);
212#ifdef CSR_SUPPORT_WEXT_AP
213int sme_ap_start(unifi_priv_t *priv,u16 interface_tag,CsrWifiSmeApConfig_t *ap_config);
214int sme_ap_stop(unifi_priv_t *priv,u16 interface_tag);
215int sme_ap_config(unifi_priv_t *priv,CsrWifiSmeApMacConfig *ap_mac_config, CsrWifiNmeApConfig *group_security_config);
216int uf_configure_supported_rates(u8 * supportedRates, u8 phySupportedBitmap);
217#endif
218int unifi_translate_scan(struct net_device *dev,
219                         struct iw_request_info *info,
220                         char *current_ev, char *end_buf,
221                         CsrWifiSmeScanResult *scan_data,
222                         int scan_index);
223
224#endif /* CSR_SUPPORT_WEXT */
225
226int unifi_cfg_power(unifi_priv_t *priv, unsigned char *arg);
227int unifi_cfg_power_save(unifi_priv_t *priv, unsigned char *arg);
228int unifi_cfg_power_supply(unifi_priv_t *priv, unsigned char *arg);
229int unifi_cfg_packet_filters(unifi_priv_t *priv, unsigned char *arg);
230int unifi_cfg_wmm_qos_info(unifi_priv_t *priv, unsigned char *arg);
231int unifi_cfg_wmm_addts(unifi_priv_t *priv, unsigned char *arg);
232int unifi_cfg_wmm_delts(unifi_priv_t *priv, unsigned char *arg);
233int unifi_cfg_get_info(unifi_priv_t *priv, unsigned char *arg);
234int unifi_cfg_strict_draft_n(unifi_priv_t *priv, unsigned char *arg);
235int unifi_cfg_enable_okc(unifi_priv_t *priv, unsigned char *arg);
236#ifdef CSR_SUPPORT_WEXT_AP
237int unifi_cfg_set_ap_config(unifi_priv_t * priv,unsigned char* arg);
238#endif
239
240
241
242int convert_sme_error(CsrResult error);
243
244
245#endif /* __LINUX_UNIFI_SME_H__ */
246

Archive Download this file



interactive