Commit | Line | Data |
---|---|---|
876c9d3a MT |
1 | /* |
2 | * This file contains the function prototypes, data structure | |
3 | * and defines for all the host/station commands | |
4 | */ | |
10078321 HS |
5 | #ifndef _LBS_HOSTCMD_H |
6 | #define _LBS_HOSTCMD_H | |
876c9d3a MT |
7 | |
8 | #include <linux/wireless.h> | |
9 | #include "11d.h" | |
10 | #include "types.h" | |
11 | ||
12 | /* 802.11-related definitions */ | |
13 | ||
14 | /* TxPD descriptor */ | |
15 | struct txpd { | |
16 | /* Current Tx packet status */ | |
981f187b | 17 | __le32 tx_status; |
876c9d3a | 18 | /* Tx control */ |
981f187b DW |
19 | __le32 tx_control; |
20 | __le32 tx_packet_location; | |
876c9d3a | 21 | /* Tx packet length */ |
981f187b | 22 | __le16 tx_packet_length; |
876c9d3a MT |
23 | /* First 2 byte of destination MAC address */ |
24 | u8 tx_dest_addr_high[2]; | |
25 | /* Last 4 byte of destination MAC address */ | |
26 | u8 tx_dest_addr_low[4]; | |
27 | /* Pkt Priority */ | |
28 | u8 priority; | |
29 | /* Pkt Trasnit Power control */ | |
30 | u8 powermgmt; | |
31 | /* Amount of time the packet has been queued in the driver (units = 2ms) */ | |
32 | u8 pktdelay_2ms; | |
33 | /* reserved */ | |
34 | u8 reserved1; | |
35 | }; | |
36 | ||
37 | /* RxPD Descriptor */ | |
38 | struct rxpd { | |
39 | /* Current Rx packet status */ | |
981f187b | 40 | __le16 status; |
876c9d3a MT |
41 | |
42 | /* SNR */ | |
43 | u8 snr; | |
44 | ||
45 | /* Tx control */ | |
46 | u8 rx_control; | |
47 | ||
48 | /* Pkt length */ | |
981f187b | 49 | __le16 pkt_len; |
876c9d3a MT |
50 | |
51 | /* Noise Floor */ | |
52 | u8 nf; | |
53 | ||
54 | /* Rx Packet Rate */ | |
55 | u8 rx_rate; | |
56 | ||
57 | /* Pkt addr */ | |
981f187b | 58 | __le32 pkt_ptr; |
876c9d3a MT |
59 | |
60 | /* Next Rx RxPD addr */ | |
981f187b | 61 | __le32 next_rxpd_ptr; |
876c9d3a MT |
62 | |
63 | /* Pkt Priority */ | |
64 | u8 priority; | |
65 | u8 reserved[3]; | |
66 | }; | |
67 | ||
68 | struct cmd_ctrl_node { | |
876c9d3a | 69 | struct list_head list; |
675787e2 | 70 | /* wait for finish or not */ |
876c9d3a | 71 | u16 wait_option; |
675787e2 | 72 | /* command response */ |
876c9d3a | 73 | void *pdata_buf; |
675787e2 | 74 | int *pdata_size; |
1723047d | 75 | int (*callback)(uint16_t respcmd, struct cmd_ds_command *resp, struct lbs_private *priv); |
675787e2 | 76 | /* command data */ |
876c9d3a | 77 | u8 *bufvirtualaddr; |
876c9d3a MT |
78 | /* wait queue */ |
79 | u16 cmdwaitqwoken; | |
80 | wait_queue_head_t cmdwait_q; | |
81 | }; | |
82 | ||
1443b653 DW |
83 | /* Generic structure to hold all key types. */ |
84 | struct enc_key { | |
85 | u16 len; | |
10078321 HS |
86 | u16 flags; /* KEY_INFO_* from defs.h */ |
87 | u16 type; /* KEY_TYPE_* from defs.h */ | |
1443b653 | 88 | u8 key[32]; |
876c9d3a MT |
89 | }; |
90 | ||
10078321 HS |
91 | /* lbs_offset_value */ |
92 | struct lbs_offset_value { | |
876c9d3a MT |
93 | u32 offset; |
94 | u32 value; | |
95 | }; | |
96 | ||
876c9d3a MT |
97 | /* Define general data structure */ |
98 | /* cmd_DS_GEN */ | |
99 | struct cmd_ds_gen { | |
981f187b DW |
100 | __le16 command; |
101 | __le16 size; | |
102 | __le16 seqnum; | |
103 | __le16 result; | |
675787e2 | 104 | void *cmdresp[0]; |
876c9d3a MT |
105 | }; |
106 | ||
107 | #define S_DS_GEN sizeof(struct cmd_ds_gen) | |
675787e2 HS |
108 | |
109 | ||
876c9d3a | 110 | /* |
0aef64d7 | 111 | * Define data structure for CMD_GET_HW_SPEC |
876c9d3a MT |
112 | * This structure defines the response for the GET_HW_SPEC command |
113 | */ | |
114 | struct cmd_ds_get_hw_spec { | |
115 | /* HW Interface version number */ | |
981f187b | 116 | __le16 hwifversion; |
876c9d3a | 117 | /* HW version number */ |
981f187b | 118 | __le16 version; |
876c9d3a | 119 | /* Max number of TxPD FW can handle */ |
981f187b | 120 | __le16 nr_txpd; |
876c9d3a | 121 | /* Max no of Multicast address */ |
981f187b | 122 | __le16 nr_mcast_adr; |
876c9d3a MT |
123 | /* MAC address */ |
124 | u8 permanentaddr[6]; | |
125 | ||
126 | /* region Code */ | |
981f187b | 127 | __le16 regioncode; |
876c9d3a MT |
128 | |
129 | /* Number of antenna used */ | |
981f187b | 130 | __le16 nr_antenna; |
876c9d3a | 131 | |
e5b3d472 DW |
132 | /* FW release number, example 1,2,3,4 = 3.2.1p4 */ |
133 | u8 fwreleasenumber[4]; | |
876c9d3a MT |
134 | |
135 | /* Base Address of TxPD queue */ | |
981f187b | 136 | __le32 wcb_base; |
876c9d3a | 137 | /* Read Pointer of RxPd queue */ |
981f187b | 138 | __le32 rxpd_rdptr; |
876c9d3a MT |
139 | |
140 | /* Write Pointer of RxPd queue */ | |
981f187b | 141 | __le32 rxpd_wrptr; |
876c9d3a MT |
142 | |
143 | /*FW/HW capability */ | |
981f187b | 144 | __le32 fwcapinfo; |
876c9d3a MT |
145 | } __attribute__ ((packed)); |
146 | ||
147 | struct cmd_ds_802_11_reset { | |
981f187b | 148 | __le16 action; |
876c9d3a MT |
149 | }; |
150 | ||
151 | struct cmd_ds_802_11_subscribe_event { | |
981f187b DW |
152 | __le16 action; |
153 | __le16 events; | |
3a188649 HS |
154 | |
155 | /* A TLV to the CMD_802_11_SUBSCRIBE_EVENT command can contain a | |
156 | * number of TLVs. From the v5.1 manual, those TLVs would add up to | |
157 | * 40 bytes. However, future firmware might add additional TLVs, so I | |
158 | * bump this up a bit. | |
159 | */ | |
160 | u8 tlv[128]; | |
876c9d3a MT |
161 | }; |
162 | ||
163 | /* | |
164 | * This scan handle Country Information IE(802.11d compliant) | |
0aef64d7 | 165 | * Define data structure for CMD_802_11_SCAN |
876c9d3a MT |
166 | */ |
167 | struct cmd_ds_802_11_scan { | |
168 | u8 bsstype; | |
492b6da7 | 169 | u8 bssid[ETH_ALEN]; |
876c9d3a MT |
170 | u8 tlvbuffer[1]; |
171 | #if 0 | |
172 | mrvlietypes_ssidparamset_t ssidParamSet; | |
173 | mrvlietypes_chanlistparamset_t ChanListParamSet; | |
174 | mrvlietypes_ratesparamset_t OpRateSet; | |
175 | #endif | |
176 | }; | |
177 | ||
178 | struct cmd_ds_802_11_scan_rsp { | |
981f187b | 179 | __le16 bssdescriptsize; |
876c9d3a MT |
180 | u8 nr_sets; |
181 | u8 bssdesc_and_tlvbuffer[1]; | |
182 | }; | |
183 | ||
184 | struct cmd_ds_802_11_get_log { | |
981f187b DW |
185 | __le32 mcasttxframe; |
186 | __le32 failed; | |
187 | __le32 retry; | |
188 | __le32 multiretry; | |
189 | __le32 framedup; | |
190 | __le32 rtssuccess; | |
191 | __le32 rtsfailure; | |
192 | __le32 ackfailure; | |
193 | __le32 rxfrag; | |
194 | __le32 mcastrxframe; | |
195 | __le32 fcserror; | |
196 | __le32 txframe; | |
197 | __le32 wepundecryptable; | |
876c9d3a MT |
198 | }; |
199 | ||
200 | struct cmd_ds_mac_control { | |
981f187b DW |
201 | __le16 action; |
202 | __le16 reserved; | |
876c9d3a MT |
203 | }; |
204 | ||
205 | struct cmd_ds_mac_multicast_adr { | |
981f187b DW |
206 | __le16 action; |
207 | __le16 nr_of_adrs; | |
876c9d3a MT |
208 | u8 maclist[ETH_ALEN * MRVDRV_MAX_MULTICAST_LIST_SIZE]; |
209 | }; | |
210 | ||
211 | struct cmd_ds_802_11_authenticate { | |
212 | u8 macaddr[ETH_ALEN]; | |
213 | u8 authtype; | |
214 | u8 reserved[10]; | |
215 | }; | |
216 | ||
217 | struct cmd_ds_802_11_deauthenticate { | |
218 | u8 macaddr[6]; | |
981f187b | 219 | __le16 reasoncode; |
876c9d3a MT |
220 | }; |
221 | ||
222 | struct cmd_ds_802_11_associate { | |
223 | u8 peerstaaddr[6]; | |
0c9ca690 | 224 | __le16 capability; |
981f187b DW |
225 | __le16 listeninterval; |
226 | __le16 bcnperiod; | |
876c9d3a MT |
227 | u8 dtimperiod; |
228 | ||
229 | #if 0 | |
230 | mrvlietypes_ssidparamset_t ssidParamSet; | |
231 | mrvlietypes_phyparamset_t phyparamset; | |
232 | mrvlietypes_ssparamset_t ssparamset; | |
233 | mrvlietypes_ratesparamset_t ratesParamSet; | |
234 | #endif | |
235 | } __attribute__ ((packed)); | |
236 | ||
237 | struct cmd_ds_802_11_disassociate { | |
238 | u8 destmacaddr[6]; | |
981f187b | 239 | __le16 reasoncode; |
876c9d3a MT |
240 | }; |
241 | ||
242 | struct cmd_ds_802_11_associate_rsp { | |
243 | struct ieeetypes_assocrsp assocRsp; | |
244 | }; | |
245 | ||
246 | struct cmd_ds_802_11_ad_hoc_result { | |
ea8da92d DW |
247 | u8 pad[3]; |
248 | u8 bssid[ETH_ALEN]; | |
876c9d3a MT |
249 | }; |
250 | ||
251 | struct cmd_ds_802_11_set_wep { | |
252 | /* ACT_ADD, ACT_REMOVE or ACT_ENABLE */ | |
981f187b | 253 | __le16 action; |
876c9d3a MT |
254 | |
255 | /* key Index selected for Tx */ | |
981f187b | 256 | __le16 keyindex; |
876c9d3a MT |
257 | |
258 | /* 40, 128bit or TXWEP */ | |
259 | u8 keytype[4]; | |
260 | u8 keymaterial[4][16]; | |
261 | }; | |
262 | ||
263 | struct cmd_ds_802_3_get_stat { | |
981f187b DW |
264 | __le32 xmitok; |
265 | __le32 rcvok; | |
266 | __le32 xmiterror; | |
267 | __le32 rcverror; | |
268 | __le32 rcvnobuffer; | |
269 | __le32 rcvcrcerror; | |
876c9d3a MT |
270 | }; |
271 | ||
272 | struct cmd_ds_802_11_get_stat { | |
981f187b DW |
273 | __le32 txfragmentcnt; |
274 | __le32 mcasttxframecnt; | |
275 | __le32 failedcnt; | |
276 | __le32 retrycnt; | |
277 | __le32 Multipleretrycnt; | |
278 | __le32 rtssuccesscnt; | |
279 | __le32 rtsfailurecnt; | |
280 | __le32 ackfailurecnt; | |
281 | __le32 frameduplicatecnt; | |
282 | __le32 rxfragmentcnt; | |
283 | __le32 mcastrxframecnt; | |
284 | __le32 fcserrorcnt; | |
285 | __le32 bcasttxframecnt; | |
286 | __le32 bcastrxframecnt; | |
287 | __le32 txbeacon; | |
288 | __le32 rxbeacon; | |
289 | __le32 wepundecryptable; | |
876c9d3a MT |
290 | }; |
291 | ||
292 | struct cmd_ds_802_11_snmp_mib { | |
981f187b DW |
293 | __le16 querytype; |
294 | __le16 oid; | |
295 | __le16 bufsize; | |
876c9d3a MT |
296 | u8 value[128]; |
297 | }; | |
298 | ||
299 | struct cmd_ds_mac_reg_map { | |
981f187b | 300 | __le16 buffersize; |
876c9d3a | 301 | u8 regmap[128]; |
981f187b | 302 | __le16 reserved; |
876c9d3a MT |
303 | }; |
304 | ||
305 | struct cmd_ds_bbp_reg_map { | |
981f187b | 306 | __le16 buffersize; |
876c9d3a | 307 | u8 regmap[128]; |
981f187b | 308 | __le16 reserved; |
876c9d3a MT |
309 | }; |
310 | ||
311 | struct cmd_ds_rf_reg_map { | |
981f187b | 312 | __le16 buffersize; |
876c9d3a | 313 | u8 regmap[64]; |
981f187b | 314 | __le16 reserved; |
876c9d3a MT |
315 | }; |
316 | ||
317 | struct cmd_ds_mac_reg_access { | |
981f187b DW |
318 | __le16 action; |
319 | __le16 offset; | |
320 | __le32 value; | |
876c9d3a MT |
321 | }; |
322 | ||
323 | struct cmd_ds_bbp_reg_access { | |
981f187b DW |
324 | __le16 action; |
325 | __le16 offset; | |
876c9d3a MT |
326 | u8 value; |
327 | u8 reserved[3]; | |
328 | }; | |
329 | ||
330 | struct cmd_ds_rf_reg_access { | |
981f187b DW |
331 | __le16 action; |
332 | __le16 offset; | |
876c9d3a MT |
333 | u8 value; |
334 | u8 reserved[3]; | |
335 | }; | |
336 | ||
337 | struct cmd_ds_802_11_radio_control { | |
981f187b DW |
338 | __le16 action; |
339 | __le16 control; | |
876c9d3a MT |
340 | }; |
341 | ||
96287ac4 BD |
342 | struct cmd_ds_802_11_beacon_control { |
343 | __le16 action; | |
344 | __le16 beacon_enable; | |
345 | __le16 beacon_period; | |
346 | }; | |
347 | ||
876c9d3a MT |
348 | struct cmd_ds_802_11_sleep_params { |
349 | /* ACT_GET/ACT_SET */ | |
981f187b | 350 | __le16 action; |
876c9d3a MT |
351 | |
352 | /* Sleep clock error in ppm */ | |
981f187b | 353 | __le16 error; |
876c9d3a MT |
354 | |
355 | /* Wakeup offset in usec */ | |
981f187b | 356 | __le16 offset; |
876c9d3a MT |
357 | |
358 | /* Clock stabilization time in usec */ | |
981f187b | 359 | __le16 stabletime; |
876c9d3a MT |
360 | |
361 | /* control periodic calibration */ | |
362 | u8 calcontrol; | |
363 | ||
364 | /* control the use of external sleep clock */ | |
365 | u8 externalsleepclk; | |
366 | ||
367 | /* reserved field, should be set to zero */ | |
981f187b | 368 | __le16 reserved; |
876c9d3a MT |
369 | }; |
370 | ||
371 | struct cmd_ds_802_11_inactivity_timeout { | |
372 | /* ACT_GET/ACT_SET */ | |
981f187b | 373 | __le16 action; |
876c9d3a MT |
374 | |
375 | /* Inactivity timeout in msec */ | |
981f187b | 376 | __le16 timeout; |
876c9d3a MT |
377 | }; |
378 | ||
379 | struct cmd_ds_802_11_rf_channel { | |
981f187b DW |
380 | __le16 action; |
381 | __le16 currentchannel; | |
382 | __le16 rftype; | |
383 | __le16 reserved; | |
876c9d3a MT |
384 | u8 channellist[32]; |
385 | }; | |
386 | ||
387 | struct cmd_ds_802_11_rssi { | |
388 | /* weighting factor */ | |
981f187b | 389 | __le16 N; |
876c9d3a | 390 | |
981f187b DW |
391 | __le16 reserved_0; |
392 | __le16 reserved_1; | |
393 | __le16 reserved_2; | |
876c9d3a MT |
394 | }; |
395 | ||
396 | struct cmd_ds_802_11_rssi_rsp { | |
981f187b DW |
397 | __le16 SNR; |
398 | __le16 noisefloor; | |
399 | __le16 avgSNR; | |
400 | __le16 avgnoisefloor; | |
876c9d3a MT |
401 | }; |
402 | ||
403 | struct cmd_ds_802_11_mac_address { | |
981f187b | 404 | __le16 action; |
876c9d3a MT |
405 | u8 macadd[ETH_ALEN]; |
406 | }; | |
407 | ||
408 | struct cmd_ds_802_11_rf_tx_power { | |
981f187b DW |
409 | __le16 action; |
410 | __le16 currentlevel; | |
876c9d3a MT |
411 | }; |
412 | ||
413 | struct cmd_ds_802_11_rf_antenna { | |
981f187b | 414 | __le16 action; |
876c9d3a MT |
415 | |
416 | /* Number of antennas or 0xffff(diversity) */ | |
981f187b | 417 | __le16 antennamode; |
876c9d3a MT |
418 | |
419 | }; | |
420 | ||
965f8bbc | 421 | struct cmd_ds_802_11_monitor_mode { |
c2df2efe HS |
422 | __le16 action; |
423 | __le16 mode; | |
965f8bbc LCC |
424 | }; |
425 | ||
63f0023b | 426 | struct cmd_ds_set_boot2_ver { |
c2df2efe HS |
427 | __le16 action; |
428 | __le16 version; | |
63f0023b LCC |
429 | }; |
430 | ||
876c9d3a | 431 | struct cmd_ds_802_11_ps_mode { |
981f187b DW |
432 | __le16 action; |
433 | __le16 nullpktinterval; | |
434 | __le16 multipledtim; | |
435 | __le16 reserved; | |
436 | __le16 locallisteninterval; | |
876c9d3a MT |
437 | }; |
438 | ||
439 | struct PS_CMD_ConfirmSleep { | |
981f187b DW |
440 | __le16 command; |
441 | __le16 size; | |
442 | __le16 seqnum; | |
443 | __le16 result; | |
876c9d3a | 444 | |
981f187b DW |
445 | __le16 action; |
446 | __le16 reserved1; | |
447 | __le16 multipledtim; | |
448 | __le16 reserved; | |
449 | __le16 locallisteninterval; | |
876c9d3a MT |
450 | }; |
451 | ||
452 | struct cmd_ds_802_11_data_rate { | |
981f187b | 453 | __le16 action; |
8c512765 DW |
454 | __le16 reserved; |
455 | u8 rates[MAX_RATES]; | |
876c9d3a MT |
456 | }; |
457 | ||
458 | struct cmd_ds_802_11_rate_adapt_rateset { | |
981f187b DW |
459 | __le16 action; |
460 | __le16 enablehwauto; | |
461 | __le16 bitmap; | |
876c9d3a MT |
462 | }; |
463 | ||
464 | struct cmd_ds_802_11_ad_hoc_start { | |
b44898eb | 465 | u8 ssid[IW_ESSID_MAX_SIZE]; |
876c9d3a | 466 | u8 bsstype; |
981f187b | 467 | __le16 beaconperiod; |
876c9d3a MT |
468 | u8 dtimperiod; |
469 | union IEEEtypes_ssparamset ssparamset; | |
470 | union ieeetypes_phyparamset phyparamset; | |
981f187b | 471 | __le16 probedelay; |
0c9ca690 | 472 | __le16 capability; |
8c512765 | 473 | u8 rates[MAX_RATES]; |
876c9d3a MT |
474 | u8 tlv_memory_size_pad[100]; |
475 | } __attribute__ ((packed)); | |
476 | ||
477 | struct adhoc_bssdesc { | |
0c9ca690 DW |
478 | u8 bssid[6]; |
479 | u8 ssid[32]; | |
480 | u8 type; | |
981f187b | 481 | __le16 beaconperiod; |
876c9d3a | 482 | u8 dtimperiod; |
981f187b DW |
483 | __le64 timestamp; |
484 | __le64 localtime; | |
876c9d3a MT |
485 | union ieeetypes_phyparamset phyparamset; |
486 | union IEEEtypes_ssparamset ssparamset; | |
0c9ca690 | 487 | __le16 capability; |
8c512765 | 488 | u8 rates[MAX_RATES]; |
876c9d3a MT |
489 | |
490 | /* DO NOT ADD ANY FIELDS TO THIS STRUCTURE. It is used below in the | |
491 | * Adhoc join command and will cause a binary layout mismatch with | |
492 | * the firmware | |
493 | */ | |
494 | } __attribute__ ((packed)); | |
495 | ||
496 | struct cmd_ds_802_11_ad_hoc_join { | |
0c9ca690 | 497 | struct adhoc_bssdesc bss; |
981f187b DW |
498 | __le16 failtimeout; |
499 | __le16 probedelay; | |
876c9d3a MT |
500 | |
501 | } __attribute__ ((packed)); | |
502 | ||
503 | struct cmd_ds_802_11_enable_rsn { | |
981f187b DW |
504 | __le16 action; |
505 | __le16 enable; | |
18c96c34 | 506 | } __attribute__ ((packed)); |
876c9d3a MT |
507 | |
508 | struct MrvlIEtype_keyParamSet { | |
509 | /* type ID */ | |
981f187b | 510 | __le16 type; |
876c9d3a MT |
511 | |
512 | /* length of Payload */ | |
981f187b | 513 | __le16 length; |
876c9d3a MT |
514 | |
515 | /* type of key: WEP=0, TKIP=1, AES=2 */ | |
981f187b | 516 | __le16 keytypeid; |
876c9d3a MT |
517 | |
518 | /* key control Info specific to a keytypeid */ | |
981f187b | 519 | __le16 keyinfo; |
876c9d3a MT |
520 | |
521 | /* length of key */ | |
981f187b | 522 | __le16 keylen; |
876c9d3a MT |
523 | |
524 | /* key material of size keylen */ | |
525 | u8 key[32]; | |
526 | }; | |
527 | ||
528 | struct cmd_ds_802_11_key_material { | |
981f187b | 529 | __le16 action; |
876c9d3a MT |
530 | struct MrvlIEtype_keyParamSet keyParamSet[2]; |
531 | } __attribute__ ((packed)); | |
532 | ||
533 | struct cmd_ds_802_11_eeprom_access { | |
981f187b | 534 | __le16 action; |
876c9d3a MT |
535 | |
536 | /* multiple 4 */ | |
981f187b DW |
537 | __le16 offset; |
538 | __le16 bytecount; | |
876c9d3a MT |
539 | u8 value; |
540 | } __attribute__ ((packed)); | |
541 | ||
542 | struct cmd_ds_802_11_tpc_cfg { | |
981f187b | 543 | __le16 action; |
876c9d3a MT |
544 | u8 enable; |
545 | s8 P0; | |
546 | s8 P1; | |
547 | s8 P2; | |
548 | u8 usesnr; | |
549 | } __attribute__ ((packed)); | |
550 | ||
551 | struct cmd_ds_802_11_led_ctrl { | |
981f187b DW |
552 | __le16 action; |
553 | __le16 numled; | |
876c9d3a MT |
554 | u8 data[256]; |
555 | } __attribute__ ((packed)); | |
556 | ||
557 | struct cmd_ds_802_11_pwr_cfg { | |
981f187b | 558 | __le16 action; |
876c9d3a MT |
559 | u8 enable; |
560 | s8 PA_P0; | |
561 | s8 PA_P1; | |
562 | s8 PA_P2; | |
563 | } __attribute__ ((packed)); | |
564 | ||
565 | struct cmd_ds_802_11_afc { | |
981f187b | 566 | __le16 afc_auto; |
876c9d3a MT |
567 | union { |
568 | struct { | |
981f187b DW |
569 | __le16 threshold; |
570 | __le16 period; | |
876c9d3a MT |
571 | }; |
572 | struct { | |
981f187b DW |
573 | __le16 timing_offset; /* signed */ |
574 | __le16 carrier_offset; /* signed */ | |
876c9d3a MT |
575 | }; |
576 | }; | |
577 | } __attribute__ ((packed)); | |
578 | ||
579 | struct cmd_tx_rate_query { | |
981f187b | 580 | __le16 txrate; |
876c9d3a MT |
581 | } __attribute__ ((packed)); |
582 | ||
583 | struct cmd_ds_get_tsf { | |
584 | __le64 tsfvalue; | |
585 | } __attribute__ ((packed)); | |
586 | ||
587 | struct cmd_ds_bt_access { | |
981f187b DW |
588 | __le16 action; |
589 | __le32 id; | |
876c9d3a MT |
590 | u8 addr1[ETH_ALEN]; |
591 | u8 addr2[ETH_ALEN]; | |
592 | } __attribute__ ((packed)); | |
593 | ||
594 | struct cmd_ds_fwt_access { | |
981f187b DW |
595 | __le16 action; |
596 | __le32 id; | |
90e8eafc | 597 | u8 valid; |
876c9d3a MT |
598 | u8 da[ETH_ALEN]; |
599 | u8 dir; | |
600 | u8 ra[ETH_ALEN]; | |
981f187b DW |
601 | __le32 ssn; |
602 | __le32 dsn; | |
603 | __le32 metric; | |
90e8eafc | 604 | u8 rate; |
876c9d3a MT |
605 | u8 hopcount; |
606 | u8 ttl; | |
981f187b | 607 | __le32 expiration; |
876c9d3a | 608 | u8 sleepmode; |
981f187b DW |
609 | __le32 snr; |
610 | __le32 references; | |
90e8eafc | 611 | u8 prec[ETH_ALEN]; |
876c9d3a MT |
612 | } __attribute__ ((packed)); |
613 | ||
876c9d3a | 614 | struct cmd_ds_mesh_access { |
981f187b DW |
615 | __le16 action; |
616 | __le32 data[32]; /* last position reserved */ | |
876c9d3a MT |
617 | } __attribute__ ((packed)); |
618 | ||
0601e7ee JC |
619 | /* Number of stats counters returned by the firmware */ |
620 | #define MESH_STATS_NUM 8 | |
621 | ||
876c9d3a MT |
622 | struct cmd_ds_command { |
623 | /* command header */ | |
981f187b DW |
624 | __le16 command; |
625 | __le16 size; | |
626 | __le16 seqnum; | |
627 | __le16 result; | |
876c9d3a MT |
628 | |
629 | /* command Body */ | |
630 | union { | |
631 | struct cmd_ds_get_hw_spec hwspec; | |
632 | struct cmd_ds_802_11_ps_mode psmode; | |
633 | struct cmd_ds_802_11_scan scan; | |
634 | struct cmd_ds_802_11_scan_rsp scanresp; | |
635 | struct cmd_ds_mac_control macctrl; | |
636 | struct cmd_ds_802_11_associate associate; | |
637 | struct cmd_ds_802_11_deauthenticate deauth; | |
638 | struct cmd_ds_802_11_set_wep wep; | |
639 | struct cmd_ds_802_11_ad_hoc_start ads; | |
640 | struct cmd_ds_802_11_reset reset; | |
641 | struct cmd_ds_802_11_ad_hoc_result result; | |
642 | struct cmd_ds_802_11_get_log glog; | |
643 | struct cmd_ds_802_11_authenticate auth; | |
644 | struct cmd_ds_802_11_get_stat gstat; | |
645 | struct cmd_ds_802_3_get_stat gstat_8023; | |
646 | struct cmd_ds_802_11_snmp_mib smib; | |
647 | struct cmd_ds_802_11_rf_tx_power txp; | |
648 | struct cmd_ds_802_11_rf_antenna rant; | |
965f8bbc | 649 | struct cmd_ds_802_11_monitor_mode monitor; |
876c9d3a MT |
650 | struct cmd_ds_802_11_data_rate drate; |
651 | struct cmd_ds_802_11_rate_adapt_rateset rateset; | |
652 | struct cmd_ds_mac_multicast_adr madr; | |
653 | struct cmd_ds_802_11_ad_hoc_join adj; | |
654 | struct cmd_ds_802_11_radio_control radio; | |
655 | struct cmd_ds_802_11_rf_channel rfchannel; | |
656 | struct cmd_ds_802_11_rssi rssi; | |
657 | struct cmd_ds_802_11_rssi_rsp rssirsp; | |
658 | struct cmd_ds_802_11_disassociate dassociate; | |
659 | struct cmd_ds_802_11_mac_address macadd; | |
660 | struct cmd_ds_802_11_enable_rsn enbrsn; | |
661 | struct cmd_ds_802_11_key_material keymaterial; | |
662 | struct cmd_ds_mac_reg_access macreg; | |
663 | struct cmd_ds_bbp_reg_access bbpreg; | |
664 | struct cmd_ds_rf_reg_access rfreg; | |
665 | struct cmd_ds_802_11_eeprom_access rdeeprom; | |
666 | ||
667 | struct cmd_ds_802_11d_domain_info domaininfo; | |
668 | struct cmd_ds_802_11d_domain_info domaininforesp; | |
669 | ||
670 | struct cmd_ds_802_11_sleep_params sleep_params; | |
671 | struct cmd_ds_802_11_inactivity_timeout inactivity_timeout; | |
672 | struct cmd_ds_802_11_tpc_cfg tpccfg; | |
673 | struct cmd_ds_802_11_pwr_cfg pwrcfg; | |
674 | struct cmd_ds_802_11_afc afc; | |
675 | struct cmd_ds_802_11_led_ctrl ledgpio; | |
676 | ||
677 | struct cmd_tx_rate_query txrate; | |
678 | struct cmd_ds_bt_access bt; | |
679 | struct cmd_ds_fwt_access fwt; | |
680 | struct cmd_ds_mesh_access mesh; | |
63f0023b | 681 | struct cmd_ds_set_boot2_ver boot2_ver; |
876c9d3a MT |
682 | struct cmd_ds_get_tsf gettsf; |
683 | struct cmd_ds_802_11_subscribe_event subscribe_event; | |
96287ac4 | 684 | struct cmd_ds_802_11_beacon_control bcn_ctrl; |
876c9d3a MT |
685 | } params; |
686 | } __attribute__ ((packed)); | |
687 | ||
688 | #endif |