2 ** $Id: //Department/DaVinci/TRUNK/WiFi_P2P_Driver/include/nic/p2p_mac.h#2 $
6 \brief Brief description.
18 /*******************************************************************************
19 * C O M P I L E R F L A G S
20 ********************************************************************************
23 /*******************************************************************************
24 * E X T E R N A L R E F E R E N C E S
25 ********************************************************************************
28 /*******************************************************************************
30 ********************************************************************************
33 #define ACTION_PUBLIC_WIFI_DIRECT 9
34 #define ACTION_GAS_INITIAL_REQUEST 10
35 #define ACTION_GAS_INITIAL_RESPONSE 11
36 #define ACTION_GAS_COMEBACK_REQUEST 12
37 #define ACTION_GAS_COMEBACK_RESPONSE 13
40 /* P2P 4.2.8.1 - P2P Public Action Frame Type. */
41 #define P2P_PUBLIC_ACTION_GO_NEGO_REQ 0
42 #define P2P_PUBLIC_ACTION_GO_NEGO_RSP 1
43 #define P2P_PUBLIC_ACTION_GO_NEGO_CFM 2
44 #define P2P_PUBLIC_ACTION_INVITATION_REQ 3
45 #define P2P_PUBLIC_ACTION_INVITATION_RSP 4
46 #define P2P_PUBLIC_ACTION_DEV_DISCOVER_REQ 5
47 #define P2P_PUBLIC_ACTION_DEV_DISCOVER_RSP 6
48 #define P2P_PUBLIC_ACTION_PROV_DISCOVERY_REQ 7
49 #define P2P_PUBLIC_ACTION_PROV_DISCOVERY_RSP 8
51 /* P2P 4.2.9.1 - P2P Action Frame Type */
52 #define P2P_ACTION_NOTICE_OF_ABSENCE 0
53 #define P2P_ACTION_P2P_PRESENCE_REQ 1
54 #define P2P_ACTION_P2P_PRESENCE_RSP 2
55 #define P2P_ACTION_GO_DISCOVER_REQ 3
57 #define P2P_PUBLIC_ACTION_FRAME_LEN (WLAN_MAC_MGMT_HEADER_LEN+8)
58 #define P2P_ACTION_FRAME_LEN (WLAN_MAC_MGMT_HEADER_LEN+7)
61 /*******************************************************************************
63 ********************************************************************************
66 /*******************************************************************************
68 ********************************************************************************
71 /*******************************************************************************
73 ********************************************************************************
76 /*******************************************************************************
77 * P R I V A T E D A T A
78 ********************************************************************************
81 /*******************************************************************************
82 * F U N C T I O N D E C L A R A T I O N S
83 ********************************************************************************
87 /* P2P 4.2.8.2 P2P Public Action Frame Format */
88 typedef struct _P2P_PUBLIC_ACTION_FRAME_T
{
90 UINT_16 u2FrameCtrl
; /* Frame Control */
91 UINT_16 u2Duration
; /* Duration */
92 UINT_8 aucDestAddr
[MAC_ADDR_LEN
]; /* DA */
93 UINT_8 aucSrcAddr
[MAC_ADDR_LEN
]; /* SA */
94 UINT_8 aucBSSID
[MAC_ADDR_LEN
]; /* BSSID */
95 UINT_16 u2SeqCtrl
; /* Sequence Control */
96 /* P2P Public Action Frame Body */
97 UINT_8 ucCategory
; /* Category, 0x04 */
98 UINT_8 ucAction
; /* Action Value, 0x09 */
99 UINT_8 aucOui
[3]; /* 0x50, 0x6F, 0x9A */
100 UINT_8 ucOuiType
; /* 0x09 */
101 UINT_8 ucOuiSubtype
; /* GO Nego Req/Rsp/Cfm, P2P Invittion Req/Rsp, Device Discoverability Req/Rsp */
102 UINT_8 ucDialogToken
; /* Dialog Token. */
103 UINT_8 aucInfoElem
[1]; /* P2P IE, WSC IE. */
104 } __KAL_ATTRIB_PACKED__ P2P_PUBLIC_ACTION_FRAME_T
, *P_P2P_PUBLIC_ACTION_FRAME_T
;
107 /* P2P 4.2.9.1 - General Action Frame Format. */
108 typedef struct _P2P_ACTION_FRAME_T
{
110 UINT_16 u2FrameCtrl
; /* Frame Control */
111 UINT_16 u2Duration
; /* Duration */
112 UINT_8 aucDestAddr
[MAC_ADDR_LEN
]; /* DA */
113 UINT_8 aucSrcAddr
[MAC_ADDR_LEN
]; /* SA */
114 UINT_8 aucBSSID
[MAC_ADDR_LEN
]; /* BSSID */
115 UINT_16 u2SeqCtrl
; /* Sequence Control */
116 /* P2P Action Frame Body */
117 UINT_8 ucCategory
; /* 0x7F */
118 UINT_8 aucOui
[3]; /* 0x50, 0x6F, 0x9A */
119 UINT_8 ucOuiType
; /* 0x09 */
120 UINT_8 ucOuiSubtype
; /* */
121 UINT_8 ucDialogToken
;
122 UINT_8 aucInfoElem
[1];
123 } __KAL_ATTRIB_PACKED__ P2P_ACTION_FRAME_T
, *P_P2P_ACTION_FRAME_T
;
125 /* P2P C.1 GAS Public Action Initial Request Frame Format */
126 typedef struct _GAS_PUBLIC_ACTION_INITIAL_REQUEST_FRAME_T
{
128 UINT_16 u2FrameCtrl
; /* Frame Control */
129 UINT_16 u2Duration
; /* Duration */
130 UINT_8 aucDestAddr
[MAC_ADDR_LEN
]; /* DA */
131 UINT_8 aucSrcAddr
[MAC_ADDR_LEN
]; /* SA */
132 UINT_8 aucBSSID
[MAC_ADDR_LEN
]; /* BSSID */
133 UINT_16 u2SeqCtrl
; /* Sequence Control */
134 /* P2P Public Action Frame Body */
135 UINT_8 ucCategory
; /* Category, 0x04 */
136 UINT_8 ucAction
; /* Action Value, 0x09 */
137 UINT_8 ucDialogToken
; /* Dialog Token. */
138 UINT_8 aucInfoElem
[1]; /* Advertisement IE. */
139 } __KAL_ATTRIB_PACKED__ GAS_PUBLIC_ACTION_INITIAL_REQUEST_FRAME_T
,
140 *P_GAS_PUBLIC_ACTION_INITIAL_REQUEST_FRAME_T
;
142 /* P2P C.2 GAS Public Action Initial Response Frame Format */
143 typedef struct _GAS_PUBLIC_ACTION_INITIAL_RESPONSE_FRAME_T
{
145 UINT_16 u2FrameCtrl
; /* Frame Control */
146 UINT_16 u2Duration
; /* Duration */
147 UINT_8 aucDestAddr
[MAC_ADDR_LEN
]; /* DA */
148 UINT_8 aucSrcAddr
[MAC_ADDR_LEN
]; /* SA */
149 UINT_8 aucBSSID
[MAC_ADDR_LEN
]; /* BSSID */
150 UINT_16 u2SeqCtrl
; /* Sequence Control */
151 /* P2P Public Action Frame Body */
152 UINT_8 ucCategory
; /* Category, 0x04 */
153 UINT_8 ucAction
; /* Action Value, 0x09 */
154 UINT_8 ucDialogToken
; /* Dialog Token. */
155 UINT_16 u2StatusCode
; /* Initial Response. */
156 UINT_16 u2ComebackDelay
; /* Initial Response. *//* In unit of TU. */
157 UINT_8 aucInfoElem
[1]; /* Advertisement IE. */
158 } __KAL_ATTRIB_PACKED__ GAS_PUBLIC_ACTION_INITIAL_RESPONSE_FRAME_T
,
159 *P_GAS_PUBLIC_ACTION_INITIAL_RESPONSE_FRAME_T
;
162 /* P2P C.3-1 GAS Public Action Comeback Request Frame Format */
163 typedef struct _GAS_PUBLIC_ACTION_COMEBACK_REQUEST_FRAME_T
{
165 UINT_16 u2FrameCtrl
; /* Frame Control */
166 UINT_16 u2Duration
; /* Duration */
167 UINT_8 aucDestAddr
[MAC_ADDR_LEN
]; /* DA */
168 UINT_8 aucSrcAddr
[MAC_ADDR_LEN
]; /* SA */
169 UINT_8 aucBSSID
[MAC_ADDR_LEN
]; /* BSSID */
170 UINT_16 u2SeqCtrl
; /* Sequence Control */
171 /* P2P Public Action Frame Body */
172 UINT_8 ucCategory
; /* Category, 0x04 */
173 UINT_8 ucAction
; /* Action Value, 0x09 */
174 UINT_8 ucDialogToken
; /* Dialog Token. */
175 } __KAL_ATTRIB_PACKED__ GAS_PUBLIC_ACTION_COMEBACK_REQUEST_FRAME_T
,
176 *P_GAS_PUBLIC_ACTION_COMEBACK_REQUEST_FRAME_T
;
178 /* P2P C.3-2 GAS Public Action Comeback Response Frame Format */
179 typedef struct _GAS_PUBLIC_ACTION_COMEBACK_RESPONSE_FRAME_T
{
181 UINT_16 u2FrameCtrl
; /* Frame Control */
182 UINT_16 u2Duration
; /* Duration */
183 UINT_8 aucDestAddr
[MAC_ADDR_LEN
]; /* DA */
184 UINT_8 aucSrcAddr
[MAC_ADDR_LEN
]; /* SA */
185 UINT_8 aucBSSID
[MAC_ADDR_LEN
]; /* BSSID */
186 UINT_16 u2SeqCtrl
; /* Sequence Control */
187 /* P2P Public Action Frame Body */
188 UINT_8 ucCategory
; /* Category, 0x04 */
189 UINT_8 ucAction
; /* Action Value, 0x09 */
190 UINT_8 ucDialogToken
; /* Dialog Token. */
191 UINT_16 u2StatusCode
; /* Comeback Response. */
192 UINT_8 ucFragmentID
; /*Comeback Response. */
193 UINT_16 u2ComebackDelay
; /* Comeback Response. */
194 UINT_8 aucInfoElem
[1]; /* Advertisement IE. */
195 } __KAL_ATTRIB_PACKED__ GAS_PUBLIC_ACTION_COMEBACK_RESPONSE_FRAME_T
,
196 *P_GAS_PUBLIC_ACTION_COMEBACK_RESPONSE_FRAME_T
;
201 typedef struct _P2P_SD_VENDER_SPECIFIC_CONTENT_T
{
202 /* Service Discovery Vendor-specific Content. */
203 UINT_8 ucOuiSubtype
; /* 0x09 */
204 UINT_16 u2ServiceUpdateIndicator
;
205 UINT_8 aucServiceTLV
[1];
206 } __KAL_ATTRIB_PACKED__ P2P_SD_VENDER_SPECIFIC_CONTENT_T
, *P_P2P_SD_VENDER_SPECIFIC_CONTENT_T
;
209 typedef struct _P2P_SERVICE_REQUEST_TLV_T
{
211 UINT_8 ucServiceProtocolType
;
212 UINT_8 ucServiceTransID
;
213 UINT_8 aucQueryData
[1];
214 } __KAL_ATTRIB_PACKED__ P2P_SERVICE_REQUEST_TLV_T
, *P_P2P_SERVICE_REQUEST_TLV_T
;
218 typedef struct _P2P_SERVICE_RESPONSE_TLV_T
{
220 UINT_8 ucServiceProtocolType
;
221 UINT_8 ucServiceTransID
;
223 UINT_8 aucResponseData
[1];
224 } __KAL_ATTRIB_PACKED__ P2P_SERVICE_RESPONSE_TLV_T
, *P_P2P_SERVICE_RESPONSE_TLV_T
;