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
net
wireless
libertas
dev.h
Go to the documentation of this file.
1
/*
2
* This file contains definitions and data structures specific
3
* to Marvell 802.11 NIC. It contains the Device Information
4
* structure struct lbs_private..
5
*/
6
#ifndef _LBS_DEV_H_
7
#define _LBS_DEV_H_
8
9
#include "
defs.h
"
10
#include "
decl.h
"
11
#include "
host.h
"
12
13
#include <
linux/kfifo.h
>
14
15
/* sleep_params */
16
struct
sleep_params
{
17
uint16_t
sp_error
;
18
uint16_t
sp_offset
;
19
uint16_t
sp_stabletime
;
20
uint8_t
sp_calcontrol
;
21
uint8_t
sp_extsleepclk
;
22
uint16_t
sp_reserved
;
23
};
24
25
/* Mesh statistics */
26
struct
lbs_mesh_stats
{
27
u32
fwd_bcast_cnt
;
/* Fwd: Broadcast counter */
28
u32
fwd_unicast_cnt
;
/* Fwd: Unicast counter */
29
u32
fwd_drop_ttl
;
/* Fwd: TTL zero */
30
u32
fwd_drop_rbt
;
/* Fwd: Recently Broadcasted */
31
u32
fwd_drop_noroute
;
/* Fwd: No route to Destination */
32
u32
fwd_drop_nobuf
;
/* Fwd: Run out of internal buffers */
33
u32
drop_blind
;
/* Rx: Dropped by blinding table */
34
u32
tx_failed_cnt
;
/* Tx: Failed transmissions */
35
};
36
37
/* Private structure for the MV device */
38
struct
lbs_private
{
39
40
/* Basic networking */
41
struct
net_device
*
dev
;
42
u32
connect_status
;
43
struct
work_struct
mcast_work
;
44
u32
nr_of_multicastmacaddr
;
45
u8
multicastlist
[
MRVDRV_MAX_MULTICAST_LIST_SIZE
][
ETH_ALEN
];
46
47
/* CFG80211 */
48
struct
wireless_dev
*
wdev
;
49
bool
wiphy_registered
;
50
struct
cfg80211_scan_request
*
scan_req
;
51
u8
assoc_bss
[
ETH_ALEN
];
52
u8
country_code
[
IEEE80211_COUNTRY_STRING_LEN
];
53
u8
disassoc_reason
;
54
55
/* Mesh */
56
struct
net_device
*
mesh_dev
;
/* Virtual device */
57
#ifdef CONFIG_LIBERTAS_MESH
58
struct
lbs_mesh_stats
mstats;
59
uint16_t
mesh_tlv;
60
u8
mesh_ssid[
IEEE80211_MAX_SSID_LEN
+ 1];
61
u8
mesh_ssid_len;
62
u8
mesh_channel;
63
#endif
64
65
/* Debugfs */
66
struct
dentry
*
debugfs_dir
;
67
struct
dentry
*
debugfs_debug
;
68
struct
dentry
*
debugfs_files
[6];
69
struct
dentry
*
events_dir
;
70
struct
dentry
*
debugfs_events_files
[6];
71
struct
dentry
*
regs_dir
;
72
struct
dentry
*
debugfs_regs_files
[6];
73
74
/* Hardware debugging */
75
u32
mac_offset
;
76
u32
bbp_offset
;
77
u32
rf_offset
;
78
79
/* Power management */
80
u16
psmode
;
81
u32
psstate
;
82
u8
needtowakeup
;
83
84
/* Deep sleep */
85
int
is_deep_sleep
;
86
int
deep_sleep_required
;
87
int
is_auto_deep_sleep_enabled
;
88
int
wakeup_dev_required
;
89
int
is_activity_detected
;
90
int
auto_deep_sleep_timeout
;
/* in ms */
91
wait_queue_head_t
ds_awake_q
;
92
struct
timer_list
auto_deepsleep_timer
;
93
94
/* Host sleep*/
95
int
is_host_sleep_configured
;
96
int
is_host_sleep_activated
;
97
wait_queue_head_t
host_sleep_q
;
98
99
/* Hardware access */
100
void
*
card
;
101
bool
iface_running
;
102
u8
fw_ready
;
103
u8
surpriseremoved
;
104
u8
setup_fw_on_resume
;
105
int
(*
hw_host_to_card
) (
struct
lbs_private
*
priv
,
u8
type
,
u8
*
payload
,
u16
nb);
106
void
(*
reset_card
) (
struct
lbs_private
*
priv
);
107
int
(*
power_save
) (
struct
lbs_private
*
priv
);
108
int
(*
power_restore
) (
struct
lbs_private
*
priv
);
109
int
(*
enter_deep_sleep
) (
struct
lbs_private
*
priv
);
110
int
(*
exit_deep_sleep
) (
struct
lbs_private
*
priv
);
111
int
(*
reset_deep_sleep_wakeup
) (
struct
lbs_private
*
priv
);
112
113
/* Adapter info (from EEPROM) */
114
u32
fwrelease
;
115
u32
fwcapinfo
;
116
u16
regioncode
;
117
u8
current_addr
[
ETH_ALEN
];
118
u8
copied_hwaddr
;
119
120
/* Command download */
121
u8
dnld_sent
;
122
/* bit0 1/0=data_sent/data_tx_done,
123
bit1 1/0=cmd_sent/cmd_tx_done,
124
all other bits reserved 0 */
125
u16
seqnum
;
126
struct
cmd_ctrl_node
*
cmd_array
;
127
struct
cmd_ctrl_node
*
cur_cmd
;
128
struct
list_head
cmdfreeq
;
/* free command buffers */
129
struct
list_head
cmdpendingq
;
/* pending command buffers */
130
struct
timer_list
command_timer
;
131
int
cmd_timed_out
;
132
133
/* Command responses sent from the hardware to the driver */
134
u8
resp_idx
;
135
u8
resp_buf
[2][
LBS_UPLD_SIZE
];
136
u32
resp_len
[2];
137
138
/* Events sent from hardware to driver */
139
struct
kfifo
event_fifo
;
140
141
/* thread to service interrupts */
142
struct
task_struct
*
main_thread
;
143
wait_queue_head_t
waitq
;
144
struct
workqueue_struct
*
work_thread
;
145
146
/* Encryption stuff */
147
u8
authtype_auto
;
148
u8
wep_tx_key
;
149
u8
wep_key
[4][
WLAN_KEY_LEN_WEP104
];
150
u8
wep_key_len
[4];
151
152
/* Wake On LAN */
153
uint32_t
wol_criteria
;
154
uint8_t
wol_gpio
;
155
uint8_t
wol_gap
;
156
bool
ehs_remove_supported
;
157
158
/* Transmitting */
159
int
tx_pending_len
;
/* -1 while building packet */
160
u8
tx_pending_buf
[
LBS_UPLD_SIZE
];
161
/* protected by hard_start_xmit serialization */
162
u8
txretrycount
;
163
struct
sk_buff
*
currenttxskb
;
164
struct
timer_list
tx_lockup_timer
;
165
166
/* Locks */
167
struct
mutex
lock
;
168
spinlock_t
driver_lock
;
169
170
/* NIC/link operation characteristics */
171
u16
mac_control
;
172
u8
radio_on
;
173
u8
cur_rate
;
174
u8
channel
;
175
s16
txpower_cur
;
176
s16
txpower_min
;
177
s16
txpower_max
;
178
179
/* Scanning */
180
struct
delayed_work
scan_work
;
181
int
scan_channel
;
182
/* Queue of things waiting for scan completion */
183
wait_queue_head_t
scan_q
;
184
/* Whether the scan was initiated internally and not by cfg80211 */
185
bool
internal_scan
;
186
187
/* Firmware load */
188
u32
fw_model
;
189
wait_queue_head_t
fw_waitq
;
190
struct
device
*
fw_device
;
191
const
struct
firmware
*
helper_fw
;
192
const
struct
lbs_fw_table
*
fw_table
;
193
const
struct
lbs_fw_table
*
fw_iter
;
194
lbs_fw_cb
fw_callback
;
195
};
196
197
extern
struct
cmd_confirm_sleep
confirm_sleep
;
198
199
/* Check if there is an interface active. */
200
static
inline
int
lbs_iface_active(
struct
lbs_private
*
priv
)
201
{
202
int
r
;
203
204
r = netif_running(priv->
dev
);
205
if
(priv->
mesh_dev
)
206
r |= netif_running(priv->
mesh_dev
);
207
208
return
r
;
209
}
210
211
#endif
Generated on Thu Jan 10 2013 14:11:41 for Linux Kernel by
1.8.2