1 /******************************************************************************
\r
3 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
\r
5 * This program is free software; you can redistribute it and/or modify it
\r
6 * under the terms of version 2 of the GNU General Public License as
\r
7 * published by the Free Software Foundation.
\r
9 * This program is distributed in the hope that it will be useful, but WITHOUT
\r
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
\r
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
\r
14 * You should have received a copy of the GNU General Public License along with
\r
15 * this program; if not, write to the Free Software Foundation, Inc.,
\r
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
\r
19 ******************************************************************************/
\r
20 #ifndef __RTL8723A_XMIT_H__
\r
21 #define __RTL8723A_XMIT_H__
\r
23 #include <rtl8192c_xmit.h>
\r
26 //defined for TX DESC Operation
\r
29 #define MAX_TID (15)
\r
33 #define OFFSET_SHT 16
\r
41 #define PKT_OFFSET_SZ 0
\r
44 #define Rate_ID_SHT 16
\r
45 #define NAVUSEHDR BIT(20)
\r
46 #define PKT_OFFSET_SHT 26
\r
47 #define HWPC BIT(31)
\r
50 #define AGG_EN BIT(29)
\r
51 #define AMPDU_DENSITY_SHT 20
\r
57 #define HW_SEQ_EN BIT(7)
\r
58 #define USERATE BIT(8)
\r
59 #define DISDATAFB BIT(10)
\r
60 #define DATA_SHORT BIT(24)
\r
61 #define DATA_BW BIT(25)
\r
66 typedef struct txdesc_8723a
\r
92 u32 pkt_offset:5; // unit: 8 bytes
\r
103 u32 ampdu_density:3;
\r
111 u32 nextheadpage:8;
\r
144 u32 data_ratefb_lmt:5;
\r
145 u32 rts_ratefb_lmt:4;
\r
148 u32 usb_txagg_num:8;
\r
154 u32 mcsg1_max_len:4;
\r
155 u32 mcsg2_max_len:4;
\r
156 u32 mcsg3_max_len:4;
\r
157 u32 mcs7_sgi_max_len:4;
\r
159 u32 checksum:16; // TxBuffSize(PCIe)/CheckSum(USB)
\r
160 u32 mcsg4_max_len:4;
\r
161 u32 mcsg5_max_len:4;
\r
162 u32 mcsg6_max_len:4;
\r
163 u32 mcs15_sgi_max_len:4;
\r
164 }TXDESC_8723A, *PTXDESC_8723A;
\r
167 #define txdesc_set_ccx_sw_8723a(txdesc, value) \
\r
169 ((struct txdesc_8723a *)(txdesc))->mcsg4_max_len = (((value)>>8) & 0x0f); \
\r
170 ((struct txdesc_8723a *)(txdesc))->mcs15_sgi_max_len= (((value)>>4) & 0x0f); \
\r
171 ((struct txdesc_8723a *)(txdesc))->mcsg6_max_len = ((value) & 0x0f); \
\r
174 struct txrpt_ccx_8723a {
\r
190 u8 lifetime_over:1;
\r
198 u8 final_data_rate;
\r
208 #define txrpt_ccx_sw_8723a(txrpt_ccx) ((txrpt_ccx)->sw0 + ((txrpt_ccx)->sw1<<8))
\r
209 #define txrpt_ccx_qtime_8723a(txrpt_ccx) ((txrpt_ccx)->ccx_qtime0+((txrpt_ccx)->ccx_qtime1<<8))
\r
211 #ifdef CONFIG_XMIT_ACK
\r
212 void dump_txrpt_ccx_8723a(void *buf);
\r
213 void handle_txrpt_ccx_8723a(_adapter *adapter, void *buf);
\r
215 #define dump_txrpt_ccx_8723a(buf) do {} while(0)
\r
216 #define handle_txrpt_ccx_8723a(adapter, buf) do {} while(0)
\r
217 #endif //CONFIG_XMIT_ACK
\r
219 void rtl8723a_update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem);
\r
220 void rtl8723a_fill_fake_txdesc(PADAPTER padapter, u8 *pDesc, u32 BufferLen, u8 IsPsPoll, u8 IsBTQosNull);
\r
222 #if defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)
\r
223 s32 rtl8723as_init_xmit_priv(PADAPTER padapter);
\r
224 void rtl8723as_free_xmit_priv(PADAPTER padapter);
\r
225 s32 rtl8723as_hal_xmit(PADAPTER padapter, struct xmit_frame *pxmitframe);
\r
226 s32 rtl8723as_mgnt_xmit(PADAPTER padapter, struct xmit_frame *pmgntframe);
\r
227 s32 rtl8723as_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe);
\r
228 s32 rtl8723as_xmit_buf_handler(PADAPTER padapter);
\r
229 thread_return rtl8723as_xmit_thread(thread_context context);
\r
232 #ifdef CONFIG_USB_HCI
\r
233 s32 rtl8723au_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe);
\r
234 s32 rtl8723au_xmit_buf_handler(PADAPTER padapter);
\r