Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
staging
rtl8712
sta_info.h
Go to the documentation of this file.
1
/******************************************************************************
2
*
3
* Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
4
*
5
* This program is free software; you can redistribute it and/or modify it
6
* under the terms of version 2 of the GNU General Public License as
7
* published by the Free Software Foundation.
8
*
9
* This program is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12
* more details.
13
*
14
* You should have received a copy of the GNU General Public License along with
15
* this program; if not, write to the Free Software Foundation, Inc.,
16
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
17
*
18
* Modifications for inclusion into the Linux staging tree are
19
* Copyright(c) 2010 Larry Finger. All rights reserved.
20
*
21
* Contact information:
22
* WLAN FAE <
[email protected]
>
23
* Larry Finger <
[email protected]
>
24
*
25
******************************************************************************/
26
#ifndef __STA_INFO_H_
27
#define __STA_INFO_H_
28
29
#include "
osdep_service.h
"
30
#include "
drv_types.h
"
31
#include "
wifi.h
"
32
33
#define NUM_STA 32
34
#define NUM_ACL 64
35
36
37
/* if mode ==0, then the sta is allowed once the addr is hit.
38
* if mode ==1, then the sta is rejected once the addr is non-hit.
39
*/
40
struct
wlan_acl_node
{
41
struct
list_head
list
;
42
u8
addr
[
ETH_ALEN
];
43
u8
mode
;
44
};
45
46
struct
wlan_acl_pool
{
47
struct
wlan_acl_node
aclnode
[
NUM_ACL
];
48
};
49
50
struct
stainfo_stats
{
51
52
uint
rx_pkts
;
53
uint
rx_bytes
;
54
u64
tx_pkts
;
55
uint
tx_bytes
;
56
};
57
58
struct
sta_info
{
59
spinlock_t
lock
;
60
struct
list_head
list
;
/*free_sta_queue*/
61
struct
list_head
hash_list
;
/*sta_hash*/
62
struct
sta_xmit_priv
sta_xmitpriv
;
63
struct
sta_recv_priv
sta_recvpriv
;
64
uint
state
;
65
uint
aid
;
66
uint
mac_id
;
67
uint
qos_option
;
68
u8
hwaddr
[
ETH_ALEN
];
69
uint
ieee8021x_blocked
;
/*0: allowed, 1:blocked */
70
uint
XPrivacy
;
/*aes, tkip...*/
71
union
Keytype
tkiptxmickey
;
72
union
Keytype
tkiprxmickey
;
73
union
Keytype
x_UncstKey
;
74
union
pn48
txpn
;
/* PN48 used for Unicast xmit.*/
75
union
pn48
rxpn
;
/* PN48 used for Unicast recv.*/
76
u8
bssrateset
[16];
77
uint
bssratelen
;
78
s32
rssi
;
79
s32
signal_quality
;
80
struct
stainfo_stats
sta_stats
;
81
/*for A-MPDU Rx reordering buffer control */
82
struct
recv_reorder_ctrl
recvreorder_ctrl
[16];
83
struct
ht_priv
htpriv
;
84
/* Notes:
85
* STA_Mode:
86
* curr_network(mlme_priv/security_priv/qos/ht)
87
* + sta_info: (STA & AP) CAP/INFO
88
* scan_q: AP CAP/INFO
89
* AP_Mode:
90
* curr_network(mlme_priv/security_priv/qos/ht) : AP CAP/INFO
91
* sta_info: (AP & STA) CAP/INFO
92
*/
93
struct
list_head
asoc_list
;
94
struct
list_head
auth_list
;
95
unsigned
int
expire_to
;
96
unsigned
int
auth_seq
;
97
unsigned
int
authalg
;
98
unsigned
char
chg_txt
[128];
99
unsigned
int
tx_ra_bitmap
;
100
};
101
102
struct
sta_priv
{
103
u8
*
pallocated_stainfo_buf
;
104
u8
*
pstainfo_buf
;
105
struct
__queue
free_sta_queue
;
106
spinlock_t
sta_hash_lock
;
107
struct
list_head
sta_hash
[
NUM_STA
];
108
int
asoc_sta_count
;
109
struct
__queue
sleep_q
;
110
struct
__queue
wakeup_q
;
111
struct
_adapter
*
padapter
;
112
struct
list_head
asoc_list
;
113
struct
list_head
auth_list
;
114
unsigned
int
auth_to
;
/* sec, time to expire in authenticating. */
115
unsigned
int
assoc_to
;
/* sec, time to expire before associating. */
116
unsigned
int
expire_to
;
/* sec , time to expire after associated. */
117
};
118
119
static
inline
u32
wifi_mac_hash(
u8
*
mac
)
120
{
121
u32
x
;
122
123
x = mac[0];
124
x = (x << 2) ^ mac[1];
125
x = (x << 2) ^ mac[2];
126
x = (x << 2) ^ mac[3];
127
x = (x << 2) ^ mac[4];
128
x = (x << 2) ^ mac[5];
129
x ^= x >> 8;
130
x = x & (
NUM_STA
- 1);
131
return
x
;
132
}
133
134
u32
_r8712_init_sta_priv
(
struct
sta_priv
*pstapriv);
135
u32
_r8712_free_sta_priv
(
struct
sta_priv
*pstapriv);
136
struct
sta_info
*
r8712_alloc_stainfo
(
struct
sta_priv
*pstapriv,
137
u8
*
hwaddr
);
138
void
r8712_free_stainfo
(
struct
_adapter
*padapter ,
struct
sta_info
*psta);
139
void
r8712_free_all_stainfo
(
struct
_adapter
*padapter);
140
struct
sta_info
*
r8712_get_stainfo
(
struct
sta_priv
*pstapriv,
u8
*
hwaddr
);
141
void
r8712_init_bcmc_stainfo
(
struct
_adapter
*padapter);
142
struct
sta_info
*
r8712_get_bcmc_stainfo
(
struct
_adapter
*padapter);
143
u8
r8712_access_ctrl
(
struct
wlan_acl_pool
*pacl_list,
u8
*
mac_addr
);
144
145
#endif
/* _STA_INFO_H_ */
146
Generated on Thu Jan 10 2013 14:31:14 for Linux Kernel by
1.8.2