1 /****************************************************************************** 2 * 3 * Copyright(c) 2013 Realtek Corporation. All rights reserved. 4 * 5 * This program is free software; you can redistribute it and/or modify it 6 * under the terms of version 2 of the GNU General Public License as 7 * published by the Free Software Foundation. 8 * 9 * This program is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12 * more details. 13 * 14 * You should have received a copy of the GNU General Public License along with 15 * this program; if not, write to the Free Software Foundation, Inc., 16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA 17 * 18 * 19 ******************************************************************************/ 20 #ifndef __RTL8821A_XMIT_H__ 21 #define __RTL8821A_XMIT_H__ 22 23 #include <drv_types.h> 24 25 typedef struct txdescriptor_8821a 26 { 27 // Offset 0 28 u32 pktlen:16; 29 u32 offset:8; 30 u32 bmc:1; 31 u32 htc:1; 32 u32 rsvd0026:1; 33 u32 rsvd0027:1; 34 u32 linip:1; 35 u32 noacm:1; 36 u32 gf:1; 37 u32 rsvd0031:1; 38 39 // Offset 4 40 u32 macid:7; 41 u32 rsvd0407:1; 42 u32 qsel:5; 43 u32 rdg_nav_ext:1; 44 u32 lsig_txop_en:1; 45 u32 pifs:1; 46 u32 rate_id:5; 47 u32 en_desc_id:1; 48 u32 sectype:2; 49 u32 pkt_offset:5; // unit: 8 bytes 50 u32 moredata:1; 51 u32 txop_ps_cap:1; 52 u32 txop_ps_mode:1; 53 54 // Offset 8 55 u32 p_aid:9; 56 u32 rsvd0809:1; 57 u32 cca_rts:2; 58 u32 agg_en:1; 59 u32 rdg_en:1; 60 u32 null_0:1; 61 u32 null_1:1; 62 u32 bk:1; 63 u32 morefrag:1; 64 u32 raw:1; 65 u32 spe_rpt:1; 66 u32 ampdu_density:3; 67 u32 bt_null:1; 68 u32 g_id:6; 69 u32 rsvd0830:2; 70 71 // Offset 12 72 u32 wheader_len:4; 73 u32 chk_en:1; 74 u32 early_rate:1; 75 u32 hw_ssn_sel:2; 76 u32 userate:1; 77 u32 disrtsfb:1; 78 u32 disdatafb:1; 79 u32 cts2self:1; 80 u32 rtsen:1; 81 u32 hw_rts_en:1; 82 u32 port_id:1; 83 u32 navusehdr:1; 84 u32 use_max_len:1; 85 u32 max_agg_num:5; 86 u32 ndpa:2; 87 u32 ampdu_max_time:8; 88 89 // Offset 16 90 u32 datarate:7; 91 u32 try_rate:1; 92 u32 data_ratefb_lmt:5; 93 u32 rts_ratefb_lmt:4; 94 u32 rty_lmt_en:1; 95 u32 data_rt_lmt:6; 96 u32 rtsrate:5; 97 u32 pcts_en:1; 98 u32 pcts_mask_idx:2; 99 100 // Offset 20 101 u32 data_sc:4; 102 u32 data_short:1; 103 u32 data_bw:2; 104 u32 data_ldpc:1; 105 u32 data_stbc:2; 106 u32 vcs_stbc:2; 107 u32 rts_short:1; 108 u32 rts_sc:4; 109 u32 rsvd2016:7; 110 u32 tx_ant:4; 111 u32 txpwr_offset:3; 112 u32 rsvd2031:1; 113 114 // Offset 24 115 u32 sw_define:12; 116 u32 mbssid:4; 117 u32 antsel_A:3; 118 u32 antsel_B:3; 119 u32 antsel_C:3; 120 u32 antsel_D:3; 121 u32 rsvd2428:4; 122 123 // Offset 28 124 u32 checksum:16; 125 u32 rsvd2816:8; 126 u32 usb_txagg_num:8; 127 128 // Offset 32 129 u32 rts_rc:6; 130 u32 bar_rty_th:2; 131 u32 data_rc:6; 132 u32 rsvd3214:1; 133 u32 en_hwseq:1; 134 u32 nextneadpage:8; 135 u32 tailpage:8; 136 137 // Offset 36 138 u32 padding_len:11; 139 u32 txbf_path:1; 140 u32 seq:12; 141 u32 final_data_rate:8; 142 }TXDESC_8821A, *PTXDESC_8821A; 143 144 #ifdef CONFIG_SDIO_HCI 145 s32 InitXmitPriv8821AS(PADAPTER padapter); 146 void FreeXmitPriv8821AS(PADAPTER padapter); 147 s32 XmitBufHandler8821AS(PADAPTER padapter); 148 s32 MgntXmit8821AS(PADAPTER padapter, struct xmit_frame *pmgntframe); 149 s32 HalXmitNoLock8821AS(PADAPTER padapter, struct xmit_frame *pxmitframe); 150 s32 HalXmit8821AS(PADAPTER padapter, struct xmit_frame *pxmitframe); 151 #ifndef CONFIG_SDIO_TX_TASKLET 152 thread_return XmitThread8821AS(thread_context context); 153 #endif // !CONFIG_SDIO_TX_TASKLET 154 #endif // CONFIG_SDIO_HCI 155 156 #if 0 157 #ifdef CONFIG_USB_HCI 158 s32 rtl8821au_init_xmit_priv(PADAPTER padapter); 159 void rtl8821au_free_xmit_priv(PADAPTER padapter); 160 s32 rtl8821au_hal_xmit(PADAPTER padapter, struct xmit_frame *pxmitframe); 161 s32 rtl8821au_mgnt_xmit(PADAPTER padapter, struct xmit_frame *pmgntframe); 162 s32 rtl8821au_hal_xmitframe_enqueue(PADAPTER padapter, struct xmit_frame *pxmitframe); 163 s32 rtl8821au_xmit_buf_handler(PADAPTER padapter); 164 void rtl8821au_xmit_tasklet(void *priv); 165 s32 rtl8821au_xmitframe_complete(PADAPTER padapter, struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf); 166 #endif // CONFIG_USB_HCI 167 168 #ifdef CONFIG_PCI_HCI 169 s32 rtl8821e_init_xmit_priv(PADAPTER padapter); 170 void rtl8821e_free_xmit_priv(PADAPTER padapter); 171 struct xmit_buf* rtl8821e_dequeue_xmitbuf(struct rtw_tx_ring *ring); 172 void rtl8821e_xmitframe_resume(PADAPTER padapter); 173 s32 rtl8821e_hal_xmit(PADAPTER padapter, struct xmit_frame *pxmitframe); 174 s32 rtl8821e_mgnt_xmit(PADAPTER padapter, struct xmit_frame *pmgntframe); 175 void rtl8821e_xmit_tasklet(void *priv); 176 #endif // CONFIG_PCI_HCI 177 #endif 178 179 #endif //__RTL8821_XMIT_H__ 180 181