2 ** $Id: //Department/DaVinci/BRANCHES/MT6620_WIFI_DRIVER_V2_3/include/nic/hif_tx.h#1 $
11 * [WCXRP00000083] [MT5931][Driver][FW] Add necessary logic for MT5931 first connection
12 * add firmware download for MT5931.
16 * [WPD00003833] [MT6620 and MT5931] Driver migration - move to new repository.
19 * [WPD00003833][MT6620 and MT5931] Driver migration
20 * fill extra information for revised HIF_TX_HEADER.
23 * [WPD00003833][MT6620 and MT5931] Driver migration
24 * 1) add flag on MSDU_INFO_T for indicating BIP frame and forceBasicRate
25 * 2) add packet type for indicating management frames
27 * 06 06 2010 kevin.huang
28 * [WPD00003832][MT6620 5931] Create driver base
29 * [MT6620 5931] Create driver base
32 * [WPD00001943]Create WiFi test driver framework on WinXP
33 * code clean: removing unused variables and structure definitions
36 * [WPD00001943]Create WiFi test driver framework on WinXP
37 * 1. Permanent and current MAC address are now retrieved by CMD/EVENT packets instead of hard-coded address
38 * * * 2. follow MSDN defined behavior when associates to another AP
39 * * * 3. for firmware download, packet size could be up to 2048 bytes
41 * 01 13 2010 tehuang.liu
42 * [WPD00001943]Create WiFi test driver framework on WinXP
43 * Enabled the Burst_End Indication mechanism
46 * [WPD00001943]Create WiFi test driver framework on WinXP
47 * TX: fill ucWlanHeaderLength/ucPktFormtId_Flags according to info provided by prMsduInfo
48 ** \main\maintrunk.MT6620WiFiDriver_Prj\16 2009-12-10 16:43:40 GMT mtk02752
50 ** \main\maintrunk.MT6620WiFiDriver_Prj\15 2009-11-24 19:55:11 GMT mtk02752
51 ** adopt HIF_TX_HEADER_T in new data path
52 ** \main\maintrunk.MT6620WiFiDriver_Prj\14 2009-11-23 17:54:13 GMT mtk02752
53 ** CMD_HDR_SIZE = (sizeof(WIFI_CMD_T)) to follow up CM's CMD/EVENT documentation
55 ** \main\maintrunk.MT6620WiFiDriver_Prj\13 2009-11-17 22:41:10 GMT mtk01084
56 ** \main\maintrunk.MT6620WiFiDriver_Prj\12 2009-11-17 17:34:07 GMT mtk02752
57 ** remove HIF_TX_BUFF_COUNT_TC0 (move to nic_tx.h)
58 ** \main\maintrunk.MT6620WiFiDriver_Prj\11 2009-11-17 12:14:12 GMT mtk02752
59 ** add initial value for HIF_TX_BUFF_COUNT_TC5
60 ** \main\maintrunk.MT6620WiFiDriver_Prj\10 2009-11-13 13:54:18 GMT mtk01084
61 ** \main\maintrunk.MT6620WiFiDriver_Prj\9 2009-11-04 14:11:14 GMT mtk01084
62 ** modify SW TX data format
63 ** \main\maintrunk.MT6620WiFiDriver_Prj\8 2009-10-29 19:51:53 GMT mtk01084
64 ** modify FW/ driver interface
65 ** \main\maintrunk.MT6620WiFiDriver_Prj\7 2009-05-20 12:22:46 GMT mtk01461
66 ** Add SeqNum field to CMD Header
67 ** \main\maintrunk.MT6620WiFiDriver_Prj\6 2009-04-17 19:40:52 GMT mtk01461
68 ** Update the Log Sign
74 /*******************************************************************************
75 * C O M P I L E R F L A G S
76 ********************************************************************************
79 /*******************************************************************************
80 * E X T E R N A L R E F E R E N C E S
81 ********************************************************************************
84 /*******************************************************************************
86 ********************************************************************************
88 /* Maximum buffer size for individual HIF TCQ Buffer */
89 #define HIF_TX_BUFF_MAX_SIZE 1552 /* Reserved field was not included */
91 /* Maximum buffer count for individual HIF TCQ */
92 #define HIF_TX_BUFF_COUNT_TC0 3
93 #define HIF_TX_BUFF_COUNT_TC1 3
94 #define HIF_TX_BUFF_COUNT_TC2 3
95 #define HIF_TX_BUFF_COUNT_TC3 3
96 #define HIF_TX_BUFF_COUNT_TC4 2
98 #define TX_HDR_SIZE sizeof(HIF_TX_HEADER_T)
100 #define CMD_HDR_SIZE sizeof(WIFI_CMD_T)
102 #define CMD_PKT_SIZE_FOR_IMAGE 2048 /* !< 2048 Bytes CMD payload buffer */
105 /*! NIC_HIF_TX_HEADER_T */
107 #define HIF_TX_HDR_TX_BYTE_COUNT_MASK BITS(0,11)
108 #define HIF_TX_HDR_USER_PRIORITY_OFFSET 12
111 #define HIF_TX_HDR_ETHER_TYPE_OFFSET_MASK BITS(0,7)
114 #define HIF_TX_HDR_IP_CSUM BIT(0)
115 #define HIF_TX_HDR_TCP_CSUM BIT(1)
116 #define HIF_TX_HDR_RESOURCE_MASK BITS(2,5)
117 #define HIF_TX_HDR_RESOURCE_OFFSET 2
118 #define HIF_TX_HDR_PACKET_TYPE_MASK BITS(6,7)
119 #define HIF_TX_HDR_PACKET_TYPE_OFFSET 6
122 #define HIF_TX_HDR_WLAN_HEADER_LEN_MASK BITS(0,5)
125 #define HIF_TX_HDR_FORMAT_ID_MASK BITS(0,2)
126 #define HIF_TX_HDR_NETWORK_TYPE_MASK BITS(4,5)
127 #define HIF_TX_HDR_NETWORK_TYPE_OFFSET 4
128 #define HIF_TX_HDR_FLAG_1X_FRAME_MASK BIT(6)
129 #define HIF_TX_HDR_FLAG_1X_FRAME_OFFSET 6
130 #define HIF_TX_HDR_FLAG_802_11_FORMAT_MASK BIT(7)
131 #define HIF_TX_HDR_FLAG_802_11_FORMAT_OFFSET 7
135 #define HIF_TX_HDR_PS_FORWARDING_TYPE_MASK BITS(0,1)
136 #define HIF_TX_HDR_PS_SESSION_ID_MASK BITS(2,4)
137 #define HIF_TX_HDR_PS_SESSION_ID_OFFSET 2
138 #define HIF_TX_HDR_BURST_END_MASK BIT(5)
139 #define HIF_TX_HDR_BURST_END_OFFSET 5
142 #define HIF_TX_HDR_NEED_ACK BIT(0)
143 #define HIF_TX_HDR_BIP BIT(1)
144 #define HIF_TX_HDR_BASIC_RATE BIT(2)
147 /*******************************************************************************
149 ********************************************************************************
151 typedef struct _HIF_HW_TX_HEADER_T {
152 UINT_16 u2TxByteCount;
153 UINT_8 ucEtherTypeOffset;
156 } HIF_HW_TX_HEADER_T, *P_HIF_HW_TX_HEADER_T;
158 typedef struct _HIF_TX_HEADER_T {
159 UINT_16 u2TxByteCount_UserPriority;
160 UINT_8 ucEtherTypeOffset;
161 UINT_8 ucResource_PktType_CSflags;
162 UINT_8 ucWlanHeaderLength;
163 UINT_8 ucPktFormtId_Flags;
164 UINT_16 u2LLH; /* for BOW */
165 UINT_16 u2SeqNo; /* for BOW */
167 UINT_8 ucForwardingType_SessionID_Reserved;
168 UINT_8 ucPacketSeqNo;
169 UINT_8 ucAck_BIP_BasicRate;
170 UINT_8 aucReserved[2];
171 } HIF_TX_HEADER_T, *P_HIF_TX_HEADER_T;
173 typedef enum _ENUM_HIF_TX_PKT_TYPE_T {
174 HIF_TX_PKT_TYPE_DATA = 0,
176 HIF_TX_PKT_TYPE_HIF_LOOPBACK,
177 HIF_TX_PKT_TYPE_MANAGEMENT,
179 } ENUM_HIF_TX_PKT_TYPE_T, *P_ENUM_HIF_TX_PKT_TYPE_T;
181 typedef enum _ENUM_HIF_OOB_CTRL_PKT_TYPE_T {
182 HIF_OOB_CTRL_PKT_TYPE_LOOPBACK = 1,
183 HIF_OOB_CTRL_PKT_TYP_NUM
184 } ENUM_HIF_OOB_CTRL_PKT_TYPE_T, *P_ENUM_HIF_OOB_CTRL_PKT_TYPE_T;
186 /*******************************************************************************
187 * P U B L I C D A T A
188 ********************************************************************************
191 /*******************************************************************************
192 * P R I V A T E D A T A
193 ********************************************************************************
196 /*******************************************************************************
198 ********************************************************************************
200 #define TFCB_FRAME_PAD_TO_DW(u2Length) ALIGN_4(u2Length)
202 /*******************************************************************************
203 * F U N C T I O N D E C L A R A T I O N S
204 ********************************************************************************
206 /* Kevin: we don't have to call following function to inspect the data structure.
207 * It will check automatically while at compile time.
210 hif_txDataTypeCheck (
215 hif_txDataTypeCheck (
219 DATA_STRUC_INSPECTING_ASSERT(sizeof(HIF_TX_HEADER_T) == 16);
224 #endif /*_HIF_TX_H */