linux/drivers/staging/csr/unifi_native.h
<<
>>
Prefs
   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