rt2500usb: disallow to set WEP key with non zero index
[deliverable/linux.git] / drivers / net / wireless / libertas / cmd.h
CommitLineData
14e865ba
DW
1/* Copyright (C) 2007, Red Hat, Inc. */
2
3#ifndef _LBS_CMD_H_
4#define _LBS_CMD_H_
5
9e66e701 6#include "host.h"
14e865ba
DW
7#include "dev.h"
8
bca61f8a
HS
9
10/* Command & response transfer between host and card */
11
12struct cmd_ctrl_node {
13 struct list_head list;
14 int result;
15 /* command response */
16 int (*callback)(struct lbs_private *,
17 unsigned long,
18 struct cmd_header *);
19 unsigned long callback_arg;
20 /* command data */
21 struct cmd_header *cmdbuf;
22 /* wait queue */
23 u16 cmdwaitqwoken;
24 wait_queue_head_t cmdwait_q;
25};
26
27
f15ebb63 28/* lbs_cmd() infers the size of the buffer to copy data back into, from
bca61f8a 29 the size of the target of the pointer. Since the command to be sent
f15ebb63
DW
30 may often be smaller, that size is set in cmd->size by the caller.*/
31#define lbs_cmd(priv, cmdnr, cmd, cb, cb_arg) ({ \
32 uint16_t __sz = le16_to_cpu((cmd)->hdr.size); \
33 (cmd)->hdr.size = cpu_to_le16(sizeof(*(cmd))); \
34 __lbs_cmd(priv, cmdnr, &(cmd)->hdr, __sz, cb, cb_arg); \
35})
14e865ba 36
689442dc
DW
37#define lbs_cmd_with_response(priv, cmdnr, cmd) \
38 lbs_cmd(priv, cmdnr, cmd, lbs_cmd_copyback, (unsigned long) (cmd))
7e226272 39
bca61f8a
HS
40int lbs_prepare_and_send_command(struct lbs_private *priv,
41 u16 cmd_no,
42 u16 cmd_action,
43 u16 wait_option, u32 cmd_oid, void *pdata_buf);
44
8db4a2b9
HS
45void lbs_cmd_async(struct lbs_private *priv, uint16_t command,
46 struct cmd_header *in_cmd, int in_cmd_size);
47
7ad994de 48int __lbs_cmd(struct lbs_private *priv, uint16_t command,
7e226272 49 struct cmd_header *in_cmd, int in_cmd_size,
7ad994de 50 int (*callback)(struct lbs_private *, unsigned long, struct cmd_header *),
14e865ba
DW
51 unsigned long callback_arg);
52
6d898b19
HS
53struct cmd_ctrl_node *__lbs_cmd_async(struct lbs_private *priv,
54 uint16_t command, struct cmd_header *in_cmd, int in_cmd_size,
55 int (*callback)(struct lbs_private *, unsigned long, struct cmd_header *),
56 unsigned long callback_arg);
57
bca61f8a
HS
58int lbs_cmd_copyback(struct lbs_private *priv, unsigned long extra,
59 struct cmd_header *resp);
0112c9e9 60
bca61f8a
HS
61int lbs_allocate_cmd_buffer(struct lbs_private *priv);
62int lbs_free_cmd_buffer(struct lbs_private *priv);
0112c9e9 63
bca61f8a
HS
64int lbs_execute_next_command(struct lbs_private *priv);
65void lbs_complete_command(struct lbs_private *priv, struct cmd_ctrl_node *cmd,
66 int result);
67int lbs_process_command_response(struct lbs_private *priv, u8 *data, u32 len);
3ed6e080 68
3ed6e080 69
bca61f8a 70/* From cmdresp.c */
a8bdcd71 71
bca61f8a 72void lbs_mac_event_disconnected(struct lbs_private *priv);
6e66f03f 73
301eacbf 74
bca61f8a
HS
75
76/* Events */
77
78int lbs_process_event(struct lbs_private *priv, u32 event);
79
80
81/* Actual commands */
82
83int lbs_update_hw_spec(struct lbs_private *priv);
8e3c91bb 84
2dd4b262
DW
85int lbs_set_channel(struct lbs_private *priv, u8 channel);
86
bca61f8a
HS
87int lbs_update_channel(struct lbs_private *priv);
88
89int lbs_host_sleep_cfg(struct lbs_private *priv, uint32_t criteria,
90 struct wol_config *p_wol_config);
91
92int lbs_cmd_802_11_sleep_params(struct lbs_private *priv, uint16_t cmd_action,
93 struct sleep_params *sp);
94
95void lbs_ps_sleep(struct lbs_private *priv, int wait_option);
96
97void lbs_ps_wakeup(struct lbs_private *priv, int wait_option);
98
99void lbs_ps_confirm_sleep(struct lbs_private *priv);
100
101int lbs_set_radio(struct lbs_private *priv, u8 preamble, u8 radio_on);
102
103void lbs_set_mac_control(struct lbs_private *priv);
104
105int lbs_get_tx_power(struct lbs_private *priv, s16 *curlevel, s16 *minlevel,
106 s16 *maxlevel);
107
108int lbs_set_snmp_mib(struct lbs_private *priv, u32 oid, u16 val);
109
110int lbs_get_snmp_mib(struct lbs_private *priv, u32 oid, u16 *out_val);
111
112
bca61f8a
HS
113/* Commands only used in wext.c, assoc. and scan.c */
114
115int lbs_set_power_adapt_cfg(struct lbs_private *priv, int enable, int8_t p0,
116 int8_t p1, int8_t p2);
117
118int lbs_set_tpc_cfg(struct lbs_private *priv, int enable, int8_t p0, int8_t p1,
119 int8_t p2, int usesnr);
120
121int lbs_set_data_rate(struct lbs_private *priv, u8 rate);
6ce4fd2a 122
85319f93
JC
123int lbs_cmd_802_11_rate_adapt_rateset(struct lbs_private *priv,
124 uint16_t cmd_action);
bca61f8a 125
87c8c72d
DW
126int lbs_set_tx_power(struct lbs_private *priv, s16 dbm);
127
bca61f8a 128int lbs_set_deep_sleep(struct lbs_private *priv, int deep_sleep);
39fcf7a3 129
1311843c
AK
130int lbs_set_host_sleep(struct lbs_private *priv, int host_sleep);
131
14e865ba 132#endif /* _LBS_CMD_H */
This page took 0.344572 seconds and 5 git commands to generate.