source: ReferenceDesigns/w3_802.11/c/wlan_mac_low_framework/include/wlan_mac_low.h

Last change on this file was 6319, checked in by chunter, 5 years ago

1.8.0 release wlan-mac-se

File size: 19.1 KB
Line 
1/** @file wlan_mac_high.h
2 *  @brief Low-level WLAN MAC High Framework
3 *
4 *  This contains the low-level code for accessing the WLAN MAC Low Framework.
5 *
6 *  @copyright Copyright 2014-2019, Mango Communications. All rights reserved.
7 *          Distributed under the Mango Communications Reference Design License
8 *                See LICENSE.txt included in the design archive or
9 *                at http://mangocomm.com/802.11/license
10 *
11 *  This file is part of the Mango 802.11 Reference Design (https://mangocomm.com/802.11)
12 */
13
14
15/*************************** Constant Definitions ****************************/
16#ifndef WLAN_MAC_LOW_H_
17#define WLAN_MAC_LOW_H_
18
19#include "xil_types.h"
20#include "xil_io.h"
21#include "wlan_common_types.h"
22
23//Forward declarations
24struct wlan_mac_low_tx_details_t;
25struct wlan_ipc_msg_t;
26
27//-----------------------------------------------
28// MAC Header defines
29#define MAC_HW_LASTBYTE_ADDR1 (9)
30#define MAC_HW_LASTBYTE_ADDR2 (15)
31
32//-----------------------------------------------
33// Power defines
34//
35#define PKT_DET_MIN_POWER_MIN -90
36#define PKT_DET_MIN_POWER_MAX -30
37
38//-----------------------------------------------
39// Channel band defines
40//
41#define CHAN_BAND_24GHz     0
42#define CHAN_BAND_5GHz      1
43
44
45
46//-----------------------------------------------
47// Macros wrapping register read/writes in MAC core
48//
49#define wlan_mac_reset(x)                                 Xil_Out32(WLAN_MAC_REG_CONTROL, (Xil_In32(WLAN_MAC_REG_CONTROL) & ~WLAN_MAC_CTRL_MASK_RESET) | ((x) ? WLAN_MAC_CTRL_MASK_RESET : 0))
50
51#define wlan_mac_set_postTx_timer1(d)                     (Xil_Out32(WLAN_MAC_REG_POST_TX_TIMERS, ((Xil_In32(WLAN_MAC_REG_POST_TX_TIMERS) & ~WLAN_MAC_POST_TX_TIMERS_MASK_TIMER1_COUNTTO) | ((d)         & WLAN_MAC_POST_TX_TIMERS_MASK_TIMER1_COUNTTO))))
52#define wlan_mac_set_postTx_timer2(d)                     (Xil_Out32(WLAN_MAC_REG_POST_TX_TIMERS, ((Xil_In32(WLAN_MAC_REG_POST_TX_TIMERS) & ~WLAN_MAC_POST_TX_TIMERS_MASK_TIMER2_COUNTTO) | (((d) << 16) & WLAN_MAC_POST_TX_TIMERS_MASK_TIMER2_COUNTTO))))
53#define wlan_mac_set_postRx_timer1(d)                     (Xil_Out32(WLAN_MAC_REG_POST_RX_TIMERS, ((Xil_In32(WLAN_MAC_REG_POST_RX_TIMERS) & ~WLAN_MAC_POST_RX_TIMERS_MASK_TIMER1_COUNTTO) | ((d)         & WLAN_MAC_POST_RX_TIMERS_MASK_TIMER1_COUNTTO))))
54#define wlan_mac_set_postRx_timer2(d)                     (Xil_Out32(WLAN_MAC_REG_POST_RX_TIMERS, ((Xil_In32(WLAN_MAC_REG_POST_RX_TIMERS) & ~WLAN_MAC_POST_RX_TIMERS_MASK_TIMER2_COUNTTO) | (((d) << 16) & WLAN_MAC_POST_RX_TIMERS_MASK_TIMER2_COUNTTO))))
55
56#define wlan_mac_postTx_timer1_en(d)                      (Xil_Out32(WLAN_MAC_REG_POST_TX_TIMERS, ((Xil_In32(WLAN_MAC_REG_POST_TX_TIMERS) & ~WLAN_MAC_POST_TX_TIMERS_MASK_TIMER1_EN) | ((d) ? WLAN_MAC_POST_TX_TIMERS_MASK_TIMER1_EN : 0))))
57#define wlan_mac_postTx_timer2_en(d)                      (Xil_Out32(WLAN_MAC_REG_POST_TX_TIMERS, ((Xil_In32(WLAN_MAC_REG_POST_TX_TIMERS) & ~WLAN_MAC_POST_TX_TIMERS_MASK_TIMER2_EN) | ((d) ? WLAN_MAC_POST_TX_TIMERS_MASK_TIMER2_EN : 0))))
58#define wlan_mac_postRx_timer1_en(d)                      (Xil_Out32(WLAN_MAC_REG_POST_RX_TIMERS, ((Xil_In32(WLAN_MAC_REG_POST_RX_TIMERS) & ~WLAN_MAC_POST_RX_TIMERS_MASK_TIMER1_EN) | ((d) ? WLAN_MAC_POST_RX_TIMERS_MASK_TIMER1_EN : 0))))
59#define wlan_mac_postRx_timer2_en(d)                      (Xil_Out32(WLAN_MAC_REG_POST_RX_TIMERS, ((Xil_In32(WLAN_MAC_REG_POST_RX_TIMERS) & ~WLAN_MAC_POST_RX_TIMERS_MASK_TIMER2_EN) | ((d) ? WLAN_MAC_POST_RX_TIMERS_MASK_TIMER2_EN : 0))))
60
61#define wlan_mac_reset_tx_ctrl_A(x)             Xil_Out32(WLAN_MAC_REG_CONTROL, (Xil_In32(WLAN_MAC_REG_CONTROL) & ~WLAN_MAC_CTRL_MASK_RESET_TX_CTRL_A) | ((x) ? WLAN_MAC_CTRL_MASK_RESET_TX_CTRL_A : 0))
62#define wlan_mac_reset_tx_ctrl_B(x)             Xil_Out32(WLAN_MAC_REG_CONTROL, (Xil_In32(WLAN_MAC_REG_CONTROL) & ~WLAN_MAC_CTRL_MASK_RESET_TX_CTRL_B) | ((x) ? WLAN_MAC_CTRL_MASK_RESET_TX_CTRL_B : 0))
63#define wlan_mac_reset_tx_ctrl_C(x)             Xil_Out32(WLAN_MAC_REG_CONTROL, (Xil_In32(WLAN_MAC_REG_CONTROL) & ~WLAN_MAC_CTRL_MASK_RESET_TX_CTRL_C) | ((x) ? WLAN_MAC_CTRL_MASK_RESET_TX_CTRL_C : 0))
64#define wlan_mac_reset_tx_ctrl_D(x)             Xil_Out32(WLAN_MAC_REG_CONTROL, (Xil_In32(WLAN_MAC_REG_CONTROL) & ~WLAN_MAC_CTRL_MASK_RESET_TX_CTRL_D) | ((x) ? WLAN_MAC_CTRL_MASK_RESET_TX_CTRL_D : 0))
65
66#define wlan_mac_set_A_backoff_reset(x)         Xil_Out32(WLAN_MAC_REG_CONTROL, (Xil_In32(WLAN_MAC_REG_CONTROL) & ~WLAN_MAC_CTRL_MASK_RESET_A_BACKOFF) | ((x) ? WLAN_MAC_CTRL_MASK_RESET_A_BACKOFF : 0))
67#define wlan_mac_set_C_backoff_reset(x)         Xil_Out32(WLAN_MAC_REG_CONTROL, (Xil_In32(WLAN_MAC_REG_CONTROL) & ~WLAN_MAC_CTRL_MASK_RESET_C_BACKOFF) | ((x) ? WLAN_MAC_CTRL_MASK_RESET_C_BACKOFF : 0))
68#define wlan_mac_set_D_backoff_reset(x)         Xil_Out32(WLAN_MAC_REG_CONTROL, (Xil_In32(WLAN_MAC_REG_CONTROL) & ~WLAN_MAC_CTRL_MASK_RESET_D_BACKOFF) | ((x) ? WLAN_MAC_CTRL_MASK_RESET_D_BACKOFF : 0))
69
70#define wlan_mac_pause_tx_ctrl_A(x)     Xil_Out32(WLAN_MAC_REG_CONTROL, (Xil_In32(WLAN_MAC_REG_CONTROL) & ~WLAN_MAC_CTRL_MASK_PAUSE_TX_A) | ((x) ? WLAN_MAC_CTRL_MASK_PAUSE_TX_A : 0))
71#define wlan_mac_pause_tx_ctrl_C(x)     Xil_Out32(WLAN_MAC_REG_CONTROL, (Xil_In32(WLAN_MAC_REG_CONTROL) & ~WLAN_MAC_CTRL_MASK_PAUSE_TX_C) | ((x) ? WLAN_MAC_CTRL_MASK_PAUSE_TX_C : 0))
72#define wlan_mac_pause_tx_ctrl_D(x)     Xil_Out32(WLAN_MAC_REG_CONTROL, (Xil_In32(WLAN_MAC_REG_CONTROL) & ~WLAN_MAC_CTRL_MASK_PAUSE_TX_D) | ((x) ? WLAN_MAC_CTRL_MASK_PAUSE_TX_D : 0))
73
74#define wlan_mac_reset_tu_target_latch(x)       Xil_Out32(WLAN_MAC_REG_CONTROL, (Xil_In32(WLAN_MAC_REG_CONTROL) & ~WLAN_MAC_CTRL_MASK_RESET_TU_LATCH) | ((x) ? WLAN_MAC_CTRL_MASK_RESET_TU_LATCH : 0))
75#define wlan_mac_reset_rx_started(x)            Xil_Out32(WLAN_MAC_REG_CONTROL, (Xil_In32(WLAN_MAC_REG_CONTROL) & ~WLAN_MAC_CTRL_MASK_RESET_RX_STARTED_LATCH) | ((x) ? WLAN_MAC_CTRL_MASK_RESET_RX_STARTED_LATCH : 0))
76
77// WLAN_MAC_REG_SW_BACKOFF_CTRL:
78//     b[15:0]: Num Slots
79//     b[31]  : Start
80//
81#define wlan_mac_set_backoff_num_slots(d) Xil_Out32(WLAN_MAC_REG_SW_BACKOFF_CTRL, ((Xil_In32(WLAN_MAC_REG_SW_BACKOFF_CTRL) & (~0x0000FFFF)) | ((d) & 0x0000FFFF)))
82#define wlan_mac_backoff_start(x)         Xil_Out32(WLAN_MAC_REG_SW_BACKOFF_CTRL, ((Xil_In32(WLAN_MAC_REG_SW_BACKOFF_CTRL) & (~0x80000000)) | (((x) << 31) & 0x80000000)))
83
84// WLAN_MAC_IFS_1:
85//     b[9:0]  : Slot
86//     b[29:20]: DIFS
87//
88#define wlan_mac_set_slot(d) Xil_Out32(WLAN_MAC_REG_IFS_1, ((Xil_In32(WLAN_MAC_REG_IFS_1) & (~0x000003FF)) | ((d) & 0x000003FF)))
89#define wlan_mac_set_DIFS(d) Xil_Out32(WLAN_MAC_REG_IFS_1, ((Xil_In32(WLAN_MAC_REG_IFS_1) & (~0x3FF00000)) | (((d) << 20) & 0x3FF00000)))
90
91// WLAN_MAC_IFS_2:
92//     b[15:0] : EIFS
93//     b[31:16]: ACK Timeout
94//
95#define wlan_mac_set_EIFS(d) Xil_Out32(WLAN_MAC_REG_IFS_2, ((Xil_In32(WLAN_MAC_REG_IFS_2) & (~0x0000FFFF)) | ((d) & 0x0000FFFF)))
96
97// WLAN_MAC_CALIB_TIMES:
98//     b[9:0]  : TxDIFS
99//     b[31:24]: NAV Adj (Fix8_0 - signed char!)
100//
101#define wlan_mac_set_TxDIFS(d)  Xil_Out32(WLAN_MAC_REG_CALIB_TIMES, ((Xil_In32(WLAN_MAC_REG_CALIB_TIMES) & (~0x000003FF)) | ((d) & 0x000003FF)))
102#define wlan_mac_set_NAV_adj(d) Xil_Out32(WLAN_MAC_REG_CALIB_TIMES, ((Xil_In32(WLAN_MAC_REG_CALIB_TIMES) & (~0xFF000000)) | (((d) << 24) & 0xFF000000)))
103
104// TX_CTRL_A_PARAMS:
105//     b[3:0] : Pkt buf
106//     b[7:4] : Tx ant mask
107//     b[23:8]: Num backoff slots
108//     b[24]  : Pre-Wait for PostRx Timer 1
109//     b[25]  : Pre-Wait for PostTx Timer 1
110//     b[26]  : Post-Wait for PostTx Timer 2
111//     b[29:27]: PHY mode
112//
113#define wlan_mac_tx_ctrl_A_params(pktBuf, antMask, preTx_backoff_slots, preWait_postRxTimer1, preWait_postTxTimer1, postWait_postTxTimer2, phy_mode) \
114                Xil_Out32(WLAN_MAC_REG_TX_CTRL_A_PARAMS, \
115                    (((pktBuf)                & 0xF   )        | \
116                    (((antMask)               & 0xF   ) <<  4) | \
117                    (((preTx_backoff_slots)   & 0xFFFF) <<  8) | \
118                    (((preWait_postRxTimer1)  & 0x1   ) << 24) | \
119                    (((preWait_postTxTimer1)  & 0x1   ) << 25) | \
120                    (((postWait_postTxTimer2) & 0x1   ) << 26) | \
121                    (((phy_mode)              & 0x7   ) << 27)))
122
123// TX_CTRL_A_GAINS
124//     b[0:5]  : RFA Tx gain
125//     b[6:11] : RFB Tx gain
126//     b[12:17]: RFC Tx gain
127//     b[18:23]: RFD Tx gain
128//
129#define wlan_mac_tx_ctrl_A_gains(rf_a, rf_b, rf_c, rf_d) \
130                Xil_Out32(WLAN_MAC_REG_TX_CTRL_A_GAINS, \
131                        (((rf_a) & 0x3F)        | \
132                        (((rf_b) & 0x3F) <<  6) | \
133                        (((rf_c) & 0x3F) << 12) | \
134                        (((rf_d) & 0x3F) << 18)))
135
136// TX_CTRL_B_PARAMS:
137//     b[3:0]: Pkt buf
138//     b[7:4]: Tx ant mask
139//     b[8]: Pre-Wait for PostRx Timer 1
140//     b[9]: Pre-Wait for PostRx Timer 2
141//     b[10]: Pre-Wait for PostTx Timer 1
142//     b[11]: Require NAV=0 at Tx time (otherwise skip Tx)
143//     b[14:12]: PHY mode
144//
145#define wlan_mac_tx_ctrl_B_params(pktBuf, antMask, req_zeroNAV, preWait_postRxTimer1, preWait_postRxTimer2, preWait_postTxTimer1, phy_mode) \
146                Xil_Out32(WLAN_MAC_REG_TX_CTRL_B_PARAMS, \
147                    (((pktBuf)                & 0xF)        | \
148                    (((antMask)               & 0xF) <<  4) | \
149                    (((preWait_postRxTimer1)  & 0x1) <<  8) | \
150                    (((preWait_postRxTimer2)  & 0x1) <<  9) | \
151                    (((preWait_postTxTimer1)  & 0x1) << 10) | \
152                    (((req_zeroNAV)           & 0x1) << 11) | \
153                    (((phy_mode)              & 0x7) << 12)))
154
155// TX_CTRL_B_GAINS
156//     b[0:5]  : RFA Tx gain
157//     b[6:11] : RFB Tx gain
158//     b[12:17]: RFC Tx gain
159//     b[18:23]: RFD Tx gain
160//
161#define wlan_mac_tx_ctrl_B_gains(rf_a, rf_b, rf_c, rf_d) \
162                Xil_Out32(WLAN_MAC_REG_TX_CTRL_B_GAINS, \
163                        (((rf_a) & 0x3F)        | \
164                        (((rf_b) & 0x3F) <<  6) | \
165                        (((rf_c) & 0x3F) << 12) | \
166                        (((rf_d) & 0x3F) << 18)))
167
168// TX_CTRL_C_PARAMS:
169//     b[3:0]: Pkt buf
170//     b[7:4]: Tx ant mask
171//     b[8]: Require pre-Tx backoff
172//     b[11:9]: PHY mode
173//     b[27:12]: Num backoff slots
174//
175#define wlan_mac_tx_ctrl_C_params(pktBuf, antMask, req_backoff, phy_mode, num_slots) \
176                Xil_Out32(WLAN_MAC_REG_TX_CTRL_C_PARAMS, \
177                    (((pktBuf)           & 0xF)        | \
178                    (((antMask)          & 0xF) <<  4) | \
179                    (((req_backoff)      & 0x1) <<  8) | \
180                    (((phy_mode)         & 0x7) <<  9) | \
181                    (((num_slots)     & 0xFFFF) << 12)))
182
183// TX_CTRL_C_GAINS
184//     b[0:5]  : RFA Tx gain
185//     b[6:11] : RFB Tx gain
186//     b[12:17]: RFC Tx gain
187//     b[18:23]: RFD Tx gain
188//
189#define wlan_mac_tx_ctrl_C_gains(rf_a, rf_b, rf_c, rf_d) \
190                Xil_Out32(WLAN_MAC_REG_TX_CTRL_C_GAINS, \
191                        (((rf_a) & 0x3F)        | \
192                        (((rf_b) & 0x3F) <<  6) | \
193                        (((rf_c) & 0x3F) << 12) | \
194                        (((rf_d) & 0x3F) << 18)))
195
196// TX_CTRL_D_PARAMS:
197//     b[3:0]: Pkt buf
198//     b[7:4]: Tx ant mask
199//     b[8]: Require pre-Tx backoff
200//     b[11:9]: PHY mode
201//     b[27:12]: Num backoff slots
202//
203#define wlan_mac_tx_ctrl_D_params(pktBuf, antMask, req_backoff, phy_mode, num_slots) \
204                Xil_Out32(WLAN_MAC_REG_TX_CTRL_D_PARAMS, \
205                    (((pktBuf)           & 0xF)        | \
206                    (((antMask)          & 0xF) <<  4) | \
207                    (((req_backoff)      & 0x1) <<  8) | \
208                    (((phy_mode)         & 0x7) <<  9) | \
209                    (((num_slots)     & 0xFFFF) << 12)))
210
211// TX_CTRL_D_GAINS
212//     b[0:5]  : RFA Tx gain
213//     b[6:11] : RFB Tx gain
214//     b[12:17]: RFC Tx gain
215//     b[18:23]: RFD Tx gain
216//
217#define wlan_mac_tx_ctrl_D_gains(rf_a, rf_b, rf_c, rf_d) \
218                Xil_Out32(WLAN_MAC_REG_TX_CTRL_D_GAINS, \
219                        (((rf_a) & 0x3F)        | \
220                        (((rf_b) & 0x3F) <<  6) | \
221                        (((rf_c) & 0x3F) << 12) | \
222                        (((rf_d) & 0x3F) << 18)))
223
224// TX_START
225//     b[0]: Tx CTRL A Start
226//     b[1]: Tx CTRL B Start
227//     b[2]: Tx CTRL C Start
228//     b[3]: Tx CTRL D Start
229//
230// NOTE:  Intrepret non-zero (x) as Tx start enable, zero (x) as Tx start disable
231//     MAC core requires rising edge on either Tx start bit; software must set then clear for each Tx
232//
233#define wlan_mac_tx_ctrl_A_start(x) Xil_Out32(WLAN_MAC_REG_TX_START, ((Xil_In32(WLAN_MAC_REG_TX_START) & ~WLAN_MAC_START_REG_MASK_START_TX_A) | ((x) ? WLAN_MAC_START_REG_MASK_START_TX_A : 0x0)))
234#define wlan_mac_tx_ctrl_B_start(x) Xil_Out32(WLAN_MAC_REG_TX_START, ((Xil_In32(WLAN_MAC_REG_TX_START) & ~WLAN_MAC_START_REG_MASK_START_TX_B) | ((x) ? WLAN_MAC_START_REG_MASK_START_TX_B : 0x0)))
235#define wlan_mac_tx_ctrl_C_start(x) Xil_Out32(WLAN_MAC_REG_TX_START, ((Xil_In32(WLAN_MAC_REG_TX_START) & ~WLAN_MAC_START_REG_MASK_START_TX_C) | ((x) ? WLAN_MAC_START_REG_MASK_START_TX_C : 0x0)))
236#define wlan_mac_tx_ctrl_D_start(x) Xil_Out32(WLAN_MAC_REG_TX_START, ((Xil_In32(WLAN_MAC_REG_TX_START) & ~WLAN_MAC_START_REG_MASK_START_TX_D) | ((x) ? WLAN_MAC_START_REG_MASK_START_TX_D : 0x0)))
237
238// LATEST_RX_BYTE
239//     b[15:0] : Last byte index
240//     b[23:16]: Last byte
241//
242#define wlan_mac_get_last_byte_index() (Xil_In32(WLAN_MAC_REG_LATEST_RX_BYTE) & 0xFFFF)
243#define wlan_mac_get_last_byte()      ((Xil_In32(WLAN_MAC_REG_LATEST_RX_BYTE) & 0xFF0000) >> 16)
244
245// TX_A_BACKOFF_COUNTER
246//     b[15:0]: A Backoff count
247#define wlan_mac_get_backoff_count_A()  (Xil_In32(WLAN_MAC_REG_TX_A_BACKOFF_COUNTER) & 0x0000FFFF)
248
249// TX_CD_BACKOFF_COUNTERS
250//     b[15:0]: C Backoff count
251//     b[31:16]: D Backoff count
252#define wlan_mac_get_backoff_count_C()  (Xil_In32(WLAN_MAC_REG_TX_CD_BACKOFF_COUNTERS) & 0x0000FFFF)
253#define wlan_mac_get_backoff_count_D() ((Xil_In32(WLAN_MAC_REG_TX_CD_BACKOFF_COUNTERS) & 0xFFFF0000) >> 16)
254
255// RX_PHY_PARAMS Register:
256//     b[15:0] : Length
257//     b[22:16]: MCS
258//     b[23]   : Unsupported
259//     b[26:24]: Rx PHY Mode ([1,2,4] = [11a,11n,11ac])
260//     b[27]   : Rx params valid
261//     b[28]   : Rx PHY Sel (0=OFDM, 1=DSSS)
262//     b[31:29]   : Rx Error
263//
264#define wlan_mac_get_rx_phy_hdr_params()    (Xil_In32(WLAN_MAC_REG_PHY_RX_PHY_HDR_PARAMS))
265#define wlan_mac_get_rx_phy_length()        (Xil_In32(WLAN_MAC_REG_PHY_RX_PHY_HDR_PARAMS) & WLAN_MAC_PHY_RX_PHY_HDR_MASK_LENGTH)
266#define wlan_mac_get_rx_phy_mcs()          ((Xil_In32(WLAN_MAC_REG_PHY_RX_PHY_HDR_PARAMS) & WLAN_MAC_PHY_RX_PHY_HDR_MASK_MCS) >> 16)
267#define wlan_mac_get_rx_phy_sel()          ((Xil_In32(WLAN_MAC_REG_PHY_RX_PHY_HDR_PARAMS) & WLAN_MAC_PHY_RX_PHY_HDR_MASK_PHY_SEL))
268#define wlan_mac_get_rx_phy_mode()         ((Xil_In32(WLAN_MAC_REG_PHY_RX_PHY_HDR_PARAMS) & WLAN_MAC_PHY_RX_PHY_HDR_MASK_PHY_MODE) >> 24)
269#define wlan_mac_get_rx_error()            ((Xil_In32(WLAN_MAC_REG_PHY_RX_PHY_HDR_PARAMS) & WLAN_MAC_PHY_RX_PHY_HDR_MASK_RX_ERROR) >> 29)
270#define wlan_mac_get_rx_phy_params_valid() ((Xil_In32(WLAN_MAC_REG_PHY_RX_PHY_HDR_PARAMS) & WLAN_MAC_PHY_RX_PHY_HDR_MASK_PARAMS_VALID))
271
272
273// TU Target register - UFix32_0 TU target
274#define wlan_mac_get_tu_target()    (u64)(((u64)Xil_In32(WLAN_MAC_REG_TU_TARGET_MSB)<<32) + (u64)Xil_In32(WLAN_MAC_REG_TU_TARGET_LSB))
275
276//-----------------------------------------------
277// MAC Rx callback return defines
278//
279#define FRAME_RX_RET_STATUS_RECEIVED_PKT        0x00000001     // b[0]
280#define FRAME_RX_RET_STATUS_GOOD                0x00000002     // b[1]
281#define FRAME_RX_RET_ADDR_MATCH                 0x00000004     // b[2]
282#define FRAME_RX_RET_CANCEL_TX                  0x00000008     // b[3]
283#define FRAME_RX_RET_SKIP_RX_STARTED_RESET      0x00000010     // b[4]
284#define FRAME_RX_RET_STATUS_TYPE                0x0000FF00     // b[15:8]
285
286#define FRAME_RX_RET_TYPE_DATA  (1 <<  8)
287#define FRAME_RX_RET_TYPE_ACK   (1 <<  9)
288#define FRAME_RX_RET_TYPE_CTS   (1 << 10)
289#define FRAME_RX_RET_TYPE_OTHER (1 << 11)
290
291//-----------------------------------------------
292// WLAN Exp low parameter defines
293//     NOTE:  Need to make sure that these values do not conflict with any of the LOW PARAM
294//     callback defines
295
296#define LOW_PARAM_PKT_DET_MIN_POWER     0x00000006
297#define LOW_PARAM_PHY_SAMPLE_RATE       0x00000008
298#define LOW_PARAM_DSSS_PKT_DET_THRESH   0x0000A000
299#define LOW_PARAM_OFDM_PKT_DET_THRESH   0x0000B000
300#define LOW_PARAM_OFDM_RX_EN            0x0000C000
301#define LOW_PARAM_CUSTOM_MAX2829_TUNE   0x0000D000
302
303
304/*************************** Function Prototypes *****************************/
305int                wlan_mac_low_init(u32 type, char* date, char* time);
306void               wlan_mac_low_init_finish();
307void               wlan_mac_low_send_status(u8 cpu_status_reason);
308void               set_phy_samp_rate(enum phy_samp_rate_t phy_samp_rate);
309void               wlan_mac_hw_init();
310void               wlan_mac_low_init_hw_info(u32 type);
311
312void        wlan_mac_low_send_exception(u32 reason);
313
314u32         wlan_mac_low_poll_frame_rx();
315int         wlan_mac_low_poll_ipc_rx();
316
317void               wlan_mac_low_process_ipc_msg(struct wlan_ipc_msg_t * msg);
318void               wlan_mac_low_frame_ipc_send();
319void               wlan_mac_low_send_low_tx_details(u8 pkt_buf, struct wlan_mac_low_tx_details_t* low_tx_details);
320
321void               wlan_mac_low_set_frame_rx_callback(function_ptr_t callback);
322void               wlan_mac_low_set_beacon_txrx_config_callback(function_ptr_t callback);
323void               wlan_mac_low_set_mcast_buffer_enable_callback(function_ptr_t callback);
324void               wlan_mac_low_set_mactime_change_callback(function_ptr_t callback);
325void               wlan_mac_low_set_sample_rate_change_callback(function_ptr_t callback);
326void               wlan_mac_low_set_handle_tx_pkt_buf_ready(function_ptr_t callback);
327void               wlan_mac_low_set_ipc_low_param_callback(function_ptr_t callback);
328
329u64         wlan_mac_low_get_rx_start_timestamp();
330u64         wlan_mac_low_get_tx_start_timestamp();
331u32         wlan_mac_low_get_active_channel();
332s8          wlan_mac_low_get_current_ctrl_tx_pow();
333u32         wlan_mac_low_get_current_rx_filter();
334enum phy_samp_rate_t  wlan_mac_low_get_phy_samp_rate();
335
336void               wlan_mac_low_set_nav_check_addr(u8* addr);
337int                wlan_mac_low_set_radio_channel(u32 channel);
338u32                wlan_mac_low_lock_tx_pkt_buf(u16 tx_pkt_buf);
339
340void               wlan_mac_low_DSSS_rx_enable();
341void               wlan_mac_low_DSSS_rx_disable();
342
343#define            PREPARE_FRAME_TRANSMIT_ERROR_INVALID_PKT_BUF             -1
344#define            PREPARE_FRAME_TRANSMIT_ERROR_UNEXPECTED_PKT_BUF_STATE    -2
345#define            PREPARE_FRAME_TRANSMIT_ERROR_LOCK_FAIL                   -3
346
347int                wlan_mac_low_prepare_frame_transmit(u16 tx_pkt_buf);
348int                wlan_mac_low_finish_frame_transmit(u16 tx_pkt_buf);
349
350
351
352void        wlan_mac_low_lock_empty_rx_pkt_buf();
353
354u32         wlan_mac_hw_rx_finish();
355
356void        wlan_mac_reset_backoff_counter();
357void        wlan_mac_reset_NAV_counter();
358
359u16         wlan_mac_low_mcs_to_n_dbps(u8 mcs, u8 phy_mode);
360u8         wlan_mac_low_mcs_to_ctrl_resp_mcs(u8 mcs, u8 phy_mode);
361
362void       wlan_mac_hw_clear_rx_started();
363
364void       wlan_mac_set_tu_target(u64 tu_target);
365
366
367#endif /* WLAN_MAC_LOW_H_ */
Note: See TracBrowser for help on using the repository browser.