hif_tx.h 8.0 KB

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