p2p_mac.h 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. /*
  2. ** Id: //Department/DaVinci/TRUNK/WiFi_P2P_Driver/include/nic/p2p_mac.h#2
  3. */
  4. /*! \file "p2p_mac.h"
  5. \brief Brief description.
  6. Detail description.
  7. */
  8. #ifndef _P2P_MAC_H
  9. #define _P2P_MAC_H
  10. /*******************************************************************************
  11. * C O M P I L E R F L A G S
  12. ********************************************************************************
  13. */
  14. /*******************************************************************************
  15. * E X T E R N A L R E F E R E N C E S
  16. ********************************************************************************
  17. */
  18. /*******************************************************************************
  19. * C O N S T A N T S
  20. ********************************************************************************
  21. */
  22. #define ACTION_PUBLIC_WIFI_DIRECT 9
  23. #define ACTION_GAS_INITIAL_REQUEST 10
  24. #define ACTION_GAS_INITIAL_RESPONSE 11
  25. #define ACTION_GAS_COMEBACK_REQUEST 12
  26. #define ACTION_GAS_COMEBACK_RESPONSE 13
  27. /* P2P 4.2.8.1 - P2P Public Action Frame Type. */
  28. #define P2P_PUBLIC_ACTION_GO_NEGO_REQ 0
  29. #define P2P_PUBLIC_ACTION_GO_NEGO_RSP 1
  30. #define P2P_PUBLIC_ACTION_GO_NEGO_CFM 2
  31. #define P2P_PUBLIC_ACTION_INVITATION_REQ 3
  32. #define P2P_PUBLIC_ACTION_INVITATION_RSP 4
  33. #define P2P_PUBLIC_ACTION_DEV_DISCOVER_REQ 5
  34. #define P2P_PUBLIC_ACTION_DEV_DISCOVER_RSP 6
  35. #define P2P_PUBLIC_ACTION_PROV_DISCOVERY_REQ 7
  36. #define P2P_PUBLIC_ACTION_PROV_DISCOVERY_RSP 8
  37. /* P2P 4.2.9.1 - P2P Action Frame Type */
  38. #define P2P_ACTION_NOTICE_OF_ABSENCE 0
  39. #define P2P_ACTION_P2P_PRESENCE_REQ 1
  40. #define P2P_ACTION_P2P_PRESENCE_RSP 2
  41. #define P2P_ACTION_GO_DISCOVER_REQ 3
  42. #define P2P_PUBLIC_ACTION_FRAME_LEN (WLAN_MAC_MGMT_HEADER_LEN+8)
  43. #define P2P_ACTION_FRAME_LEN (WLAN_MAC_MGMT_HEADER_LEN+7)
  44. /*******************************************************************************
  45. * M A C R O S
  46. ********************************************************************************
  47. */
  48. /*******************************************************************************
  49. * D A T A T Y P E S
  50. ********************************************************************************
  51. */
  52. /*******************************************************************************
  53. * P U B L I C D A T A
  54. ********************************************************************************
  55. */
  56. /*******************************************************************************
  57. * P R I V A T E D A T A
  58. ********************************************************************************
  59. */
  60. /*******************************************************************************
  61. * F U N C T I O N D E C L A R A T I O N S
  62. ********************************************************************************
  63. */
  64. /* P2P 4.2.8.2 P2P Public Action Frame Format */
  65. typedef struct _P2P_PUBLIC_ACTION_FRAME_T {
  66. /* MAC header */
  67. UINT_16 u2FrameCtrl; /* Frame Control */
  68. UINT_16 u2Duration; /* Duration */
  69. UINT_8 aucDestAddr[MAC_ADDR_LEN]; /* DA */
  70. UINT_8 aucSrcAddr[MAC_ADDR_LEN]; /* SA */
  71. UINT_8 aucBSSID[MAC_ADDR_LEN]; /* BSSID */
  72. UINT_16 u2SeqCtrl; /* Sequence Control */
  73. /* P2P Public Action Frame Body */
  74. UINT_8 ucCategory; /* Category, 0x04 */
  75. UINT_8 ucAction; /* Action Value, 0x09 */
  76. UINT_8 aucOui[3]; /* 0x50, 0x6F, 0x9A */
  77. UINT_8 ucOuiType; /* 0x09 */
  78. UINT_8 ucOuiSubtype; /* GO Nego Req/Rsp/Cfm, P2P Invittion Req/Rsp, Device Discoverability Req/Rsp */
  79. UINT_8 ucDialogToken; /* Dialog Token. */
  80. UINT_8 aucInfoElem[1]; /* P2P IE, WSC IE. */
  81. } __KAL_ATTRIB_PACKED__ P2P_PUBLIC_ACTION_FRAME_T, *P_P2P_PUBLIC_ACTION_FRAME_T;
  82. /* P2P 4.2.9.1 - General Action Frame Format. */
  83. typedef struct _P2P_ACTION_FRAME_T {
  84. /* MAC header */
  85. UINT_16 u2FrameCtrl; /* Frame Control */
  86. UINT_16 u2Duration; /* Duration */
  87. UINT_8 aucDestAddr[MAC_ADDR_LEN]; /* DA */
  88. UINT_8 aucSrcAddr[MAC_ADDR_LEN]; /* SA */
  89. UINT_8 aucBSSID[MAC_ADDR_LEN]; /* BSSID */
  90. UINT_16 u2SeqCtrl; /* Sequence Control */
  91. /* P2P Action Frame Body */
  92. UINT_8 ucCategory; /* 0x7F */
  93. UINT_8 aucOui[3]; /* 0x50, 0x6F, 0x9A */
  94. UINT_8 ucOuiType; /* 0x09 */
  95. UINT_8 ucOuiSubtype; /* */
  96. UINT_8 ucDialogToken;
  97. UINT_8 aucInfoElem[1];
  98. } __KAL_ATTRIB_PACKED__ P2P_ACTION_FRAME_T, *P_P2P_ACTION_FRAME_T;
  99. /* P2P C.1 GAS Public Action Initial Request Frame Format */
  100. typedef struct _GAS_PUBLIC_ACTION_INITIAL_REQUEST_FRAME_T {
  101. /* MAC header */
  102. UINT_16 u2FrameCtrl; /* Frame Control */
  103. UINT_16 u2Duration; /* Duration */
  104. UINT_8 aucDestAddr[MAC_ADDR_LEN]; /* DA */
  105. UINT_8 aucSrcAddr[MAC_ADDR_LEN]; /* SA */
  106. UINT_8 aucBSSID[MAC_ADDR_LEN]; /* BSSID */
  107. UINT_16 u2SeqCtrl; /* Sequence Control */
  108. /* P2P Public Action Frame Body */
  109. UINT_8 ucCategory; /* Category, 0x04 */
  110. UINT_8 ucAction; /* Action Value, 0x09 */
  111. UINT_8 ucDialogToken; /* Dialog Token. */
  112. UINT_8 aucInfoElem[1]; /* Advertisement IE. */
  113. } __KAL_ATTRIB_PACKED__ GAS_PUBLIC_ACTION_INITIAL_REQUEST_FRAME_T, *P_GAS_PUBLIC_ACTION_INITIAL_REQUEST_FRAME_T;
  114. /* P2P C.2 GAS Public Action Initial Response Frame Format */
  115. typedef struct _GAS_PUBLIC_ACTION_INITIAL_RESPONSE_FRAME_T {
  116. /* MAC header */
  117. UINT_16 u2FrameCtrl; /* Frame Control */
  118. UINT_16 u2Duration; /* Duration */
  119. UINT_8 aucDestAddr[MAC_ADDR_LEN]; /* DA */
  120. UINT_8 aucSrcAddr[MAC_ADDR_LEN]; /* SA */
  121. UINT_8 aucBSSID[MAC_ADDR_LEN]; /* BSSID */
  122. UINT_16 u2SeqCtrl; /* Sequence Control */
  123. /* P2P Public Action Frame Body */
  124. UINT_8 ucCategory; /* Category, 0x04 */
  125. UINT_8 ucAction; /* Action Value, 0x09 */
  126. UINT_8 ucDialogToken; /* Dialog Token. */
  127. UINT_16 u2StatusCode; /* Initial Response. */
  128. UINT_16 u2ComebackDelay; /* Initial Response. *//* In unit of TU. */
  129. UINT_8 aucInfoElem[1]; /* Advertisement IE. */
  130. } __KAL_ATTRIB_PACKED__ GAS_PUBLIC_ACTION_INITIAL_RESPONSE_FRAME_T, *P_GAS_PUBLIC_ACTION_INITIAL_RESPONSE_FRAME_T;
  131. /* P2P C.3-1 GAS Public Action Comeback Request Frame Format */
  132. typedef struct _GAS_PUBLIC_ACTION_COMEBACK_REQUEST_FRAME_T {
  133. /* MAC header */
  134. UINT_16 u2FrameCtrl; /* Frame Control */
  135. UINT_16 u2Duration; /* Duration */
  136. UINT_8 aucDestAddr[MAC_ADDR_LEN]; /* DA */
  137. UINT_8 aucSrcAddr[MAC_ADDR_LEN]; /* SA */
  138. UINT_8 aucBSSID[MAC_ADDR_LEN]; /* BSSID */
  139. UINT_16 u2SeqCtrl; /* Sequence Control */
  140. /* P2P Public Action Frame Body */
  141. UINT_8 ucCategory; /* Category, 0x04 */
  142. UINT_8 ucAction; /* Action Value, 0x09 */
  143. UINT_8 ucDialogToken; /* Dialog Token. */
  144. } __KAL_ATTRIB_PACKED__ GAS_PUBLIC_ACTION_COMEBACK_REQUEST_FRAME_T, *P_GAS_PUBLIC_ACTION_COMEBACK_REQUEST_FRAME_T;
  145. /* P2P C.3-2 GAS Public Action Comeback Response Frame Format */
  146. typedef struct _GAS_PUBLIC_ACTION_COMEBACK_RESPONSE_FRAME_T {
  147. /* MAC header */
  148. UINT_16 u2FrameCtrl; /* Frame Control */
  149. UINT_16 u2Duration; /* Duration */
  150. UINT_8 aucDestAddr[MAC_ADDR_LEN]; /* DA */
  151. UINT_8 aucSrcAddr[MAC_ADDR_LEN]; /* SA */
  152. UINT_8 aucBSSID[MAC_ADDR_LEN]; /* BSSID */
  153. UINT_16 u2SeqCtrl; /* Sequence Control */
  154. /* P2P Public Action Frame Body */
  155. UINT_8 ucCategory; /* Category, 0x04 */
  156. UINT_8 ucAction; /* Action Value, 0x09 */
  157. UINT_8 ucDialogToken; /* Dialog Token. */
  158. UINT_16 u2StatusCode; /* Comeback Response. */
  159. UINT_8 ucFragmentID; /*Comeback Response. */
  160. UINT_16 u2ComebackDelay; /* Comeback Response. */
  161. UINT_8 aucInfoElem[1]; /* Advertisement IE. */
  162. } __KAL_ATTRIB_PACKED__ GAS_PUBLIC_ACTION_COMEBACK_RESPONSE_FRAME_T, *P_GAS_PUBLIC_ACTION_COMEBACK_RESPONSE_FRAME_T;
  163. typedef struct _P2P_SD_VENDER_SPECIFIC_CONTENT_T {
  164. /* Service Discovery Vendor-specific Content. */
  165. UINT_8 ucOuiSubtype; /* 0x09 */
  166. UINT_16 u2ServiceUpdateIndicator;
  167. UINT_8 aucServiceTLV[1];
  168. } __KAL_ATTRIB_PACKED__ P2P_SD_VENDER_SPECIFIC_CONTENT_T, *P_P2P_SD_VENDER_SPECIFIC_CONTENT_T;
  169. typedef struct _P2P_SERVICE_REQUEST_TLV_T {
  170. UINT_16 u2Length;
  171. UINT_8 ucServiceProtocolType;
  172. UINT_8 ucServiceTransID;
  173. UINT_8 aucQueryData[1];
  174. } __KAL_ATTRIB_PACKED__ P2P_SERVICE_REQUEST_TLV_T, *P_P2P_SERVICE_REQUEST_TLV_T;
  175. typedef struct _P2P_SERVICE_RESPONSE_TLV_T {
  176. UINT_16 u2Length;
  177. UINT_8 ucServiceProtocolType;
  178. UINT_8 ucServiceTransID;
  179. UINT_8 ucStatusCode;
  180. UINT_8 aucResponseData[1];
  181. } __KAL_ATTRIB_PACKED__ P2P_SERVICE_RESPONSE_TLV_T, *P_P2P_SERVICE_RESPONSE_TLV_T;
  182. #endif