3a04ce55d9be74cb70a5a2eb4ba8480da4450724
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / mt5931 / include / nic / hif_tx.h
1 /*
2 ** $Id: //Department/DaVinci/BRANCHES/MT6620_WIFI_DRIVER_V2_3/include/nic/hif_tx.h#1 $
3 */
4
5
6
7 /*
8 ** $Log: hif_tx.h $
9  *
10  * 10 07 2010 cp.wu
11  * [WCXRP00000083] [MT5931][Driver][FW] Add necessary logic for MT5931 first connection
12  * add firmware download for MT5931.
13  *
14  * 07 08 2010 cp.wu
15  * 
16  * [WPD00003833] [MT6620 and MT5931] Driver migration - move to new repository.
17  *
18  * 06 14 2010 cp.wu
19  * [WPD00003833][MT6620 and MT5931] Driver migration 
20  * fill extra information for revised HIF_TX_HEADER.
21  *
22  * 06 10 2010 cp.wu
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
26  *
27  * 06 06 2010 kevin.huang
28  * [WPD00003832][MT6620 5931] Create driver base 
29  * [MT6620 5931] Create driver base
30  *
31  * 03 10 2010 cp.wu
32  * [WPD00001943]Create WiFi test driver framework on WinXP 
33  * code clean: removing unused variables and structure definitions
34  *
35  * 02 09 2010 cp.wu
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
40  *
41  * 01 13 2010 tehuang.liu
42  * [WPD00001943]Create WiFi test driver framework on WinXP 
43  * Enabled the Burst_End Indication mechanism
44  *
45  * 01 13 2010 cp.wu
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
49 **  code clean
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
54 **  
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
69 */
70
71 #ifndef _HIF_TX_H
72 #define _HIF_TX_H
73
74 /*******************************************************************************
75 *                         C O M P I L E R   F L A G S
76 ********************************************************************************
77 */
78
79 /*******************************************************************************
80 *                    E X T E R N A L   R E F E R E N C E S
81 ********************************************************************************
82 */
83
84 /*******************************************************************************
85 *                              C O N S T A N T S
86 ********************************************************************************
87 */
88 /* Maximum buffer size for individual HIF TCQ Buffer */
89 #define HIF_TX_BUFF_MAX_SIZE                1552 /* Reserved field was not included */
90
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
97
98 #define TX_HDR_SIZE                         sizeof(HIF_TX_HEADER_T)
99
100 #define CMD_HDR_SIZE                        sizeof(WIFI_CMD_T)
101
102 #define CMD_PKT_SIZE_FOR_IMAGE              2048 /* !< 2048 Bytes CMD payload buffer */
103
104
105 /*! NIC_HIF_TX_HEADER_T */
106 // DW 0, Byte 0,1
107 #define HIF_TX_HDR_TX_BYTE_COUNT_MASK       BITS(0,11)
108 #define HIF_TX_HDR_USER_PRIORITY_OFFSET     12
109
110 // DW 0, Byte 2
111 #define HIF_TX_HDR_ETHER_TYPE_OFFSET_MASK   BITS(0,7)
112
113 // DW 0, Byte 3
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
120
121 // DW 1, Byte 0
122 #define HIF_TX_HDR_WLAN_HEADER_LEN_MASK     BITS(0,5)
123
124 // DW 1, Byte 1
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
132
133
134 // DW2, Byte 3
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
140
141 // DW3, Byte 1
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)
145
146
147 /*******************************************************************************
148 *                         D A T A   T Y P E S
149 ********************************************************************************
150 */
151 typedef struct _HIF_HW_TX_HEADER_T {
152     UINT_16     u2TxByteCount;
153     UINT_8      ucEtherTypeOffset;
154     UINT_8      ucCSflags;
155     UINT_8      aucBuffer[0];
156 } HIF_HW_TX_HEADER_T, *P_HIF_HW_TX_HEADER_T;
157
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 */
166     UINT_8      ucStaRecIdx;
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;
172
173 typedef enum _ENUM_HIF_TX_PKT_TYPE_T {
174     HIF_TX_PKT_TYPE_DATA = 0,
175     HIF_TX_PKT_TYPE_CMD,
176     HIF_TX_PKT_TYPE_HIF_LOOPBACK,
177     HIF_TX_PKT_TYPE_MANAGEMENT,
178     HIF_TX_PKT_TYPE_NUM
179 } ENUM_HIF_TX_PKT_TYPE_T, *P_ENUM_HIF_TX_PKT_TYPE_T;
180
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;
185
186 /*******************************************************************************
187 *                            P U B L I C   D A T A
188 ********************************************************************************
189 */
190
191 /*******************************************************************************
192 *                           P R I V A T E   D A T A
193 ********************************************************************************
194 */
195
196 /*******************************************************************************
197 *                                 M A C R O S
198 ********************************************************************************
199 */
200 #define TFCB_FRAME_PAD_TO_DW(u2Length)      ALIGN_4(u2Length)
201
202 /*******************************************************************************
203 *                  F U N C T I O N   D E C L A R A T I O N S
204 ********************************************************************************
205 */
206 /* Kevin: we don't have to call following function to inspect the data structure.
207  * It will check automatically while at compile time.
208  */
209 __KAL_INLINE__ VOID
210 hif_txDataTypeCheck (
211     VOID
212     );
213
214 __KAL_INLINE__ VOID
215 hif_txDataTypeCheck (
216     VOID
217     )
218 {
219     DATA_STRUC_INSPECTING_ASSERT(sizeof(HIF_TX_HEADER_T) == 16);
220
221     return;
222 }
223
224 #endif /*_HIF_TX_H */
225