diff options
author | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
---|---|---|
committer | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
commit | ada47b5fe13d89735805b566185f4885f5a3f750 (patch) | |
tree | 644b88f8a71896307d71438e9b3af49126ffb22b /drivers/net/wireless/libertas/cmd.h | |
parent | 43e98717ad40a4ae64545b5ba047c7b86aa44f4f (diff) | |
parent | 3280f21d43ee541f97f8cda5792150d2dbec20d5 (diff) |
Merge branch 'wip-2.6.34' into old-private-masterarchived-private-master
Diffstat (limited to 'drivers/net/wireless/libertas/cmd.h')
-rw-r--r-- | drivers/net/wireless/libertas/cmd.h | 115 |
1 files changed, 79 insertions, 36 deletions
diff --git a/drivers/net/wireless/libertas/cmd.h b/drivers/net/wireless/libertas/cmd.h index 392e578ca095..cb4138a55fdf 100644 --- a/drivers/net/wireless/libertas/cmd.h +++ b/drivers/net/wireless/libertas/cmd.h | |||
@@ -3,11 +3,30 @@ | |||
3 | #ifndef _LBS_CMD_H_ | 3 | #ifndef _LBS_CMD_H_ |
4 | #define _LBS_CMD_H_ | 4 | #define _LBS_CMD_H_ |
5 | 5 | ||
6 | #include "hostcmd.h" | 6 | #include "host.h" |
7 | #include "dev.h" | 7 | #include "dev.h" |
8 | 8 | ||
9 | |||
10 | /* Command & response transfer between host and card */ | ||
11 | |||
12 | struct 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 | |||
9 | /* lbs_cmd() infers the size of the buffer to copy data back into, from | 28 | /* lbs_cmd() infers the size of the buffer to copy data back into, from |
10 | the size of the target of the pointer. Since the command to be sent | 29 | the size of the target of the pointer. Since the command to be sent |
11 | may often be smaller, that size is set in cmd->size by the caller.*/ | 30 | may often be smaller, that size is set in cmd->size by the caller.*/ |
12 | #define lbs_cmd(priv, cmdnr, cmd, cb, cb_arg) ({ \ | 31 | #define lbs_cmd(priv, cmdnr, cmd, cb, cb_arg) ({ \ |
13 | uint16_t __sz = le16_to_cpu((cmd)->hdr.size); \ | 32 | uint16_t __sz = le16_to_cpu((cmd)->hdr.size); \ |
@@ -18,6 +37,11 @@ | |||
18 | #define lbs_cmd_with_response(priv, cmdnr, cmd) \ | 37 | #define lbs_cmd_with_response(priv, cmdnr, cmd) \ |
19 | lbs_cmd(priv, cmdnr, cmd, lbs_cmd_copyback, (unsigned long) (cmd)) | 38 | lbs_cmd(priv, cmdnr, cmd, lbs_cmd_copyback, (unsigned long) (cmd)) |
20 | 39 | ||
40 | int 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 | |||
21 | void lbs_cmd_async(struct lbs_private *priv, uint16_t command, | 45 | void lbs_cmd_async(struct lbs_private *priv, uint16_t command, |
22 | struct cmd_header *in_cmd, int in_cmd_size); | 46 | struct cmd_header *in_cmd, int in_cmd_size); |
23 | 47 | ||
@@ -26,62 +50,81 @@ int __lbs_cmd(struct lbs_private *priv, uint16_t command, | |||
26 | int (*callback)(struct lbs_private *, unsigned long, struct cmd_header *), | 50 | int (*callback)(struct lbs_private *, unsigned long, struct cmd_header *), |
27 | unsigned long callback_arg); | 51 | unsigned long callback_arg); |
28 | 52 | ||
29 | int lbs_set_power_adapt_cfg(struct lbs_private *priv, int enable, int8_t p0, | 53 | struct cmd_ctrl_node *__lbs_cmd_async(struct lbs_private *priv, |
30 | int8_t p1, int8_t p2); | 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); | ||
31 | 57 | ||
32 | int lbs_set_tpc_cfg(struct lbs_private *priv, int enable, int8_t p0, int8_t p1, | 58 | int lbs_cmd_copyback(struct lbs_private *priv, unsigned long extra, |
33 | int8_t p2, int usesnr); | 59 | struct cmd_header *resp); |
34 | 60 | ||
35 | int lbs_set_power_adapt_cfg(struct lbs_private *priv, int enable, int8_t p0, | 61 | int lbs_allocate_cmd_buffer(struct lbs_private *priv); |
36 | int8_t p1, int8_t p2); | 62 | int lbs_free_cmd_buffer(struct lbs_private *priv); |
37 | 63 | ||
38 | int lbs_set_tpc_cfg(struct lbs_private *priv, int enable, int8_t p0, int8_t p1, | 64 | int lbs_execute_next_command(struct lbs_private *priv); |
39 | int8_t p2, int usesnr); | 65 | void lbs_complete_command(struct lbs_private *priv, struct cmd_ctrl_node *cmd, |
66 | int result); | ||
67 | int lbs_process_command_response(struct lbs_private *priv, u8 *data, u32 len); | ||
40 | 68 | ||
41 | int lbs_cmd_copyback(struct lbs_private *priv, unsigned long extra, | ||
42 | struct cmd_header *resp); | ||
43 | 69 | ||
44 | int lbs_update_hw_spec(struct lbs_private *priv); | 70 | /* From cmdresp.c */ |
45 | 71 | ||
46 | int lbs_mesh_access(struct lbs_private *priv, uint16_t cmd_action, | 72 | void lbs_mac_event_disconnected(struct lbs_private *priv); |
47 | struct cmd_ds_mesh_access *cmd); | ||
48 | 73 | ||
49 | int lbs_set_data_rate(struct lbs_private *priv, u8 rate); | ||
50 | 74 | ||
51 | int lbs_get_channel(struct lbs_private *priv); | 75 | |
76 | /* Events */ | ||
77 | |||
78 | int lbs_process_event(struct lbs_private *priv, u32 event); | ||
79 | |||
80 | |||
81 | /* Actual commands */ | ||
82 | |||
83 | int lbs_update_hw_spec(struct lbs_private *priv); | ||
84 | |||
52 | int lbs_set_channel(struct lbs_private *priv, u8 channel); | 85 | int lbs_set_channel(struct lbs_private *priv, u8 channel); |
53 | 86 | ||
54 | int lbs_mesh_config_send(struct lbs_private *priv, | 87 | int lbs_update_channel(struct lbs_private *priv); |
55 | struct cmd_ds_mesh_config *cmd, | ||
56 | uint16_t action, uint16_t type); | ||
57 | int lbs_mesh_config(struct lbs_private *priv, uint16_t enable, uint16_t chan); | ||
58 | 88 | ||
59 | int lbs_host_sleep_cfg(struct lbs_private *priv, uint32_t criteria, | 89 | int lbs_host_sleep_cfg(struct lbs_private *priv, uint32_t criteria, |
60 | struct wol_config *p_wol_config); | 90 | struct wol_config *p_wol_config); |
61 | int lbs_suspend(struct lbs_private *priv); | ||
62 | void lbs_resume(struct lbs_private *priv); | ||
63 | 91 | ||
64 | int lbs_cmd_802_11_rate_adapt_rateset(struct lbs_private *priv, | ||
65 | uint16_t cmd_action); | ||
66 | int lbs_cmd_802_11_inactivity_timeout(struct lbs_private *priv, | ||
67 | uint16_t cmd_action, uint16_t *timeout); | ||
68 | int lbs_cmd_802_11_sleep_params(struct lbs_private *priv, uint16_t cmd_action, | 92 | int lbs_cmd_802_11_sleep_params(struct lbs_private *priv, uint16_t cmd_action, |
69 | struct sleep_params *sp); | 93 | struct sleep_params *sp); |
70 | int lbs_cmd_802_11_set_wep(struct lbs_private *priv, uint16_t cmd_action, | ||
71 | struct assoc_request *assoc); | ||
72 | int lbs_cmd_802_11_enable_rsn(struct lbs_private *priv, uint16_t cmd_action, | ||
73 | uint16_t *enable); | ||
74 | int lbs_cmd_802_11_key_material(struct lbs_private *priv, uint16_t cmd_action, | ||
75 | struct assoc_request *assoc); | ||
76 | 94 | ||
77 | int lbs_get_tx_power(struct lbs_private *priv, s16 *curlevel, s16 *minlevel, | 95 | void lbs_ps_sleep(struct lbs_private *priv, int wait_option); |
78 | s16 *maxlevel); | 96 | |
79 | int lbs_set_tx_power(struct lbs_private *priv, s16 dbm); | 97 | void lbs_ps_wakeup(struct lbs_private *priv, int wait_option); |
98 | |||
99 | void lbs_ps_confirm_sleep(struct lbs_private *priv); | ||
80 | 100 | ||
81 | int lbs_set_radio(struct lbs_private *priv, u8 preamble, u8 radio_on); | 101 | int lbs_set_radio(struct lbs_private *priv, u8 preamble, u8 radio_on); |
82 | 102 | ||
103 | void lbs_set_mac_control(struct lbs_private *priv); | ||
104 | |||
105 | int lbs_get_tx_power(struct lbs_private *priv, s16 *curlevel, s16 *minlevel, | ||
106 | s16 *maxlevel); | ||
107 | |||
83 | int lbs_set_snmp_mib(struct lbs_private *priv, u32 oid, u16 val); | 108 | int lbs_set_snmp_mib(struct lbs_private *priv, u32 oid, u16 val); |
84 | 109 | ||
85 | int lbs_get_snmp_mib(struct lbs_private *priv, u32 oid, u16 *out_val); | 110 | int lbs_get_snmp_mib(struct lbs_private *priv, u32 oid, u16 *out_val); |
86 | 111 | ||
112 | |||
113 | /* Commands only used in wext.c, assoc. and scan.c */ | ||
114 | |||
115 | int lbs_set_power_adapt_cfg(struct lbs_private *priv, int enable, int8_t p0, | ||
116 | int8_t p1, int8_t p2); | ||
117 | |||
118 | int lbs_set_tpc_cfg(struct lbs_private *priv, int enable, int8_t p0, int8_t p1, | ||
119 | int8_t p2, int usesnr); | ||
120 | |||
121 | int lbs_set_data_rate(struct lbs_private *priv, u8 rate); | ||
122 | |||
123 | int lbs_cmd_802_11_rate_adapt_rateset(struct lbs_private *priv, | ||
124 | uint16_t cmd_action); | ||
125 | |||
126 | int lbs_set_tx_power(struct lbs_private *priv, s16 dbm); | ||
127 | |||
128 | int lbs_set_deep_sleep(struct lbs_private *priv, int deep_sleep); | ||
129 | |||
87 | #endif /* _LBS_CMD_H */ | 130 | #endif /* _LBS_CMD_H */ |