Root/drivers/staging/csr/unifi_wext.h

1/*
2 *****************************************************************************
3 *
4 * FILE : unifi_wext.h
5 *
6 * PURPOSE : Private header file for unifi driver support to wireless extensions.
7 *
8 * Copyright (C) 2005-2008 by Cambridge Silicon Radio Ltd.
9 *
10 * Refer to LICENSE.txt included with this source code for details on
11 * the license terms.
12 *
13*****************************************************************************
14 */
15#ifndef __LINUX_UNIFI_WEXT_H__
16#define __LINUX_UNIFI_WEXT_H__ 1
17
18#include <linux/kernel.h>
19#include <net/iw_handler.h>
20#include "csr_wifi_sme_prim.h"
21
22/*
23 * wext.c
24 */
25/* A few details needed for WEP (Wireless Equivalent Privacy) */
26#define UNIFI_MAX_KEY_SIZE 16
27#define NUM_WEPKEYS 4
28#define SMALL_KEY_SIZE 5
29#define LARGE_KEY_SIZE 13
30typedef struct wep_key_t {
31    int len;
32    unsigned char key[UNIFI_MAX_KEY_SIZE]; /* 40-bit and 104-bit keys */
33} wep_key_t;
34
35#define UNIFI_SCAN_ACTIVE 0
36#define UNIFI_SCAN_PASSIVE 1
37#define UNIFI_MAX_SSID_LEN 32
38
39#define MAX_WPA_IE_LEN 64
40#define MAX_RSN_IE_LEN 255
41
42/*
43 * Function to register in the netdev to report wireless stats.
44 */
45struct iw_statistics *unifi_get_wireless_stats(struct net_device *dev);
46
47void uf_sme_wext_set_defaults(unifi_priv_t *priv);
48
49
50/*
51 * wext_events.c
52 */
53/* Functions to generate Wireless Extension events */
54void wext_send_scan_results_event(unifi_priv_t *priv);
55void wext_send_assoc_event(unifi_priv_t *priv, unsigned char *bssid,
56                           unsigned char *req_ie, int req_ie_len,
57                           unsigned char *resp_ie, int resp_ie_len,
58                           unsigned char *scan_ie, unsigned int scan_ie_len);
59void wext_send_disassoc_event(unifi_priv_t *priv);
60void wext_send_michaelmicfailure_event(unifi_priv_t *priv,
61                                       u16 count, CsrWifiMacAddress address,
62                                       CsrWifiSmeKeyType keyType, u16 interfaceTag);
63void wext_send_pmkid_candidate_event(unifi_priv_t *priv, CsrWifiMacAddress bssid, u8 preauth_allowed, u16 interfaceTag);
64void wext_send_started_event(unifi_priv_t *priv);
65
66
67static inline int
68uf_iwe_stream_add_point(struct iw_request_info *info, char *start, char *stop,
69                        struct iw_event *piwe, char *extra)
70{
71    char *new_start;
72
73    new_start = iwe_stream_add_point(
74#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) || defined (IW_REQUEST_FLAG_COMPAT)
75                                     info,
76#endif
77                                     start, stop, piwe, extra);
78    if (unlikely(new_start == start))
79    {
80        return -E2BIG;
81    }
82
83    return (new_start - start);
84}
85
86
87static inline int
88uf_iwe_stream_add_event(struct iw_request_info *info, char *start, char *stop,
89                        struct iw_event *piwe, int len)
90{
91    char *new_start;
92
93    new_start = iwe_stream_add_event(
94#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) || defined(IW_REQUEST_FLAG_COMPAT)
95                                     info,
96#endif
97                                     start, stop, piwe, len);
98    if (unlikely(new_start == start)) {
99        return -E2BIG;
100    }
101
102    return (new_start - start);
103}
104
105static inline int
106uf_iwe_stream_add_value(struct iw_request_info *info, char *stream, char *start,
107                        char *stop, struct iw_event *piwe, int len)
108{
109    char *new_start;
110
111    new_start = iwe_stream_add_value(
112#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) || defined(IW_REQUEST_FLAG_COMPAT)
113                                     info,
114#endif
115                                     stream, start, stop, piwe, len);
116    if (unlikely(new_start == start)) {
117        return -E2BIG;
118    }
119
120    return (new_start - start);
121}
122
123
124#endif /* __LINUX_UNIFI_WEXT_H__ */
125

Archive Download this file



interactive