1 /************************************************************************
2 * This is the LMAC API interface header file for STLC4560. *
3 * Copyright (C) 2007 Conexant Systems, Inc. *
4 * This program is free software; you can redistribute it and/or *
5 * modify it under the terms of the GNU General Public License *
6 * as published by the Free Software Foundation; either version 2 *
7 * of the License, or (at your option) any later version. *
9 * This program is distributed in the hope that it will be useful, *
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
12 * GNU General Public License for more details. *
14 * You should have received a copy of the GNU General Public License *
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.*
16 *************************************************************************/
21 #define LM_TOP_VARIANT 0x0506
22 #define LM_BOTTOM_VARIANT 0x0506
25 * LMAC - UMAC interface definition:
28 #define LM_FLAG_CONTROL 0x8000
29 #define LM_FLAG_ALIGN 0x4000
31 #define LM_CTRL_OPSET 0x0001
33 #define LM_OUT_PROMISC 0x0001
34 #define LM_OUT_TIMESTAMP 0x0002
35 #define LM_OUT_SEQNR 0x0004
36 #define LM_OUT_BURST 0x0010
37 #define LM_OUT_NOCANCEL 0x0020
38 #define LM_OUT_CLEARTIM 0x0040
39 #define LM_OUT_HITCHHIKE 0x0080
40 #define LM_OUT_COMPRESS 0x0100
41 #define LM_OUT_CONCAT 0x0200
42 #define LM_OUT_PCS_ACCEPT 0x0400
43 #define LM_OUT_WAITEOSP 0x0800
46 #define LM_ALOFT_SP 0x10
47 #define LM_ALOFT_CTS 0x20
48 #define LM_ALOFT_RTS 0x40
49 #define LM_ALOFT_MASK 0x1f
50 #define LM_ALOFT_RATE 0x0f
52 #define LM_IN_FCS_GOOD 0x0001
53 #define LM_IN_MATCH_MAC 0x0002
54 #define LM_IN_MCBC 0x0004
55 #define LM_IN_BEACON 0x0008
56 #define LM_IN_MATCH_BSS 0x0010
57 #define LM_IN_BCAST_BSS 0x0020
58 #define LM_IN_DATA 0x0040
59 #define LM_IN_TRUNCATED 0x0080
61 #define LM_IN_TRANSPARENT 0x0200
63 #define LM_QUEUE_BEACON 0
64 #define LM_QUEUE_SCAN 1
65 #define LM_QUEUE_MGT 2
66 #define LM_QUEUE_MCBC 3
67 #define LM_QUEUE_DATA 4
68 #define LM_QUEUE_DATA0 4
69 #define LM_QUEUE_DATA1 5
70 #define LM_QUEUE_DATA2 6
71 #define LM_QUEUE_DATA3 7
73 #define LM_SETUP_INFRA 0x0001
74 #define LM_SETUP_IBSS 0x0002
75 #define LM_SETUP_TRANSPARENT 0x0008
76 #define LM_SETUP_PROMISCUOUS 0x0010
77 #define LM_SETUP_HIBERNATE 0x0020
78 #define LM_SETUP_NOACK 0x0040
79 #define LM_SETUP_RX_DISABLED 0x0080
81 #define LM_ANTENNA_0 0
82 #define LM_ANTENNA_1 1
83 #define LM_ANTENNA_DIVERSITY 2
85 #define LM_TX_FAILED 0x0001
86 #define LM_TX_PSM 0x0002
87 #define LM_TX_PSM_CANCELLED 0x0004
89 #define LM_SCAN_EXIT 0x0001
90 #define LM_SCAN_TRAP 0x0002
91 #define LM_SCAN_ACTIVE 0x0004
92 #define LM_SCAN_FILTER 0x0008
95 #define LM_PSM_DTIM 0x0002
96 #define LM_PSM_MCBC 0x0004
97 #define LM_PSM_CHECKSUM 0x0008
98 #define LM_PSM_SKIP_MORE_DATA 0x0010
99 #define LM_PSM_BEACON_TIMEOUT 0x0020
100 #define LM_PSM_HFOSLEEP 0x0040
101 #define LM_PSM_AUTOSWITCH_SLEEP 0x0080
102 #define LM_PSM_LPIT 0x0100
103 #define LM_PSM_BF_UCAST_SKIP 0x0200
104 #define LM_PSM_BF_MCAST_SKIP 0x0400
107 #define LM_PSM_SLEEP_OPTION_MASK (LM_PSM_AUTOSWITCH_SLEEP | LM_PSM_HFOSLEEP)
108 #define LM_PSM_SLEEP_OPTION_SHIFT 6
110 #define LM_PSM_BF_OPTION_MASK (LM_PSM_BF_MCAST_SKIP | LM_PSM_BF_UCAST_SKIP)
111 #define LM_PSM_BF_OPTION_SHIFT 9
114 #define LM_PRIVACC_WEP 0x01
115 #define LM_PRIVACC_TKIP 0x02
116 #define LM_PRIVACC_MICHAEL 0x04
117 #define LM_PRIVACC_CCX_KP 0x08
118 #define LM_PRIVACC_CCX_MIC 0x10
119 #define LM_PRIVACC_AES_CCMP 0x20
121 /* size of s_lm_descr in words */
122 #define LM_DESCR_SIZE_WORDS 11
124 #ifndef __ASSEMBLER__
134 uint32_t buffer_start
;
150 struct s_lm_control
{
156 /* uint8_t data[]; */
174 LM_DECRYPT_NOMICHAEL
,
175 LM_DECRYPT_NOCKIPMIC
,
177 LM_DECRYPT_FAIL_TKIP
,
178 LM_DECRYPT_FAIL_MICHAEL
,
179 LM_DECRYPT_FAIL_CKIPKP
,
180 LM_DECRYPT_FAIL_CKIPMIC
,
181 LM_DECRYPT_FAIL_AESCCMP
184 struct s_lm_data_out
{
193 uint8_t crypt_offset
;
199 uint16_t durations
[4];
207 #define LM_RCPI_INVALID (0xff)
209 struct s_lm_data_in
{
224 struct s_lm_data_out out
;
225 struct s_lm_data_in in
;
243 LM_OID_BT_BALANCER
= 28,
244 LM_OID_GROUP_ADDRESS_TABLE
= 30,
245 LM_OID_ARPTABLE
= 31,
246 LM_OID_BT_OPTIONS
= 35
250 LM_FRONTEND_UNKNOWN
= 0,
254 LM_FRONTEND_CROSSBOW
,
259 #define INVALID_LPF_BANDWIDTH 0xffff
260 #define INVALID_OSC_START_DELAY 0xffff
275 uint8_t mcast_window
;
276 uint8_t rx_rssi_threshold
;
277 uint8_t rx_ed_threshold
;
279 uint16_t lpf_bandwidth
;
280 uint16_t osc_start_delay
;
287 uint8_t channel
[292];
298 LM_TRAP_FAA_RADIO_ON
,
299 LM_TRAP_FAA_RADIO_OFF
,
321 struct s_lmo_edcf_queue
;
328 struct s_lmo_edcf_queue
{
337 uint16_t round_trip_delay
;
340 struct s_lmo_keycache
{
351 struct s_lm_interval
;
356 struct s_lm_interval
{
361 uint8_t beacon_rcpi_skip_max
;
362 uint8_t rcpi_delta_threshold
;
367 #define MC_FILTER_ADDRESS_NUM 4
369 struct s_lmo_group_address_table
{
370 uint16_t filter_enable
;
371 uint16_t num_address
;
372 uint8_t macaddr_list
[MC_FILTER_ADDRESS_NUM
][6];
375 struct s_lmo_txcancel
{
395 uint16_t durations
[32];
403 uint32_t rts_success
;
408 uint32_t sample_noise
[8];
417 uint16_t delay
/*[2]*/;
421 struct s_lmo_bt_balancer
{
422 uint16_t prio_thresh
;
427 struct s_lmo_arp_table
{
428 uint16_t filter_enable
;
432 #endif /* __ASSEMBLER__ */
434 #endif /* __lmac_h__ */