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, *P_GAS_PUBLIC_ACTION_INITIAL_REQUEST_FRAME_T;
141 /* P2P C.2 GAS Public Action Initial Response Frame Format */
142 typedef struct _GAS_PUBLIC_ACTION_INITIAL_RESPONSE_FRAME_T {
144 UINT_16 u2FrameCtrl; /* Frame Control */
145 UINT_16 u2Duration; /* Duration */
146 UINT_8 aucDestAddr[MAC_ADDR_LEN]; /* DA */
147 UINT_8 aucSrcAddr[MAC_ADDR_LEN]; /* SA */
148 UINT_8 aucBSSID[MAC_ADDR_LEN]; /* BSSID */
149 UINT_16 u2SeqCtrl; /* Sequence Control */
150 /* P2P Public Action Frame Body */
151 UINT_8 ucCategory; /* Category, 0x04 */
152 UINT_8 ucAction; /* Action Value, 0x09 */
153 UINT_8 ucDialogToken; /* Dialog Token. */
154 UINT_16 u2StatusCode; /* Initial Response. */
155 UINT_16 u2ComebackDelay; /* Initial Response. */ /* In unit of TU. */
156 UINT_8 aucInfoElem[1]; /* Advertisement IE. */
157 } __KAL_ATTRIB_PACKED__ GAS_PUBLIC_ACTION_INITIAL_RESPONSE_FRAME_T, *P_GAS_PUBLIC_ACTION_INITIAL_RESPONSE_FRAME_T;
160 /* P2P C.3-1 GAS Public Action Comeback Request Frame Format */
161 typedef struct _GAS_PUBLIC_ACTION_COMEBACK_REQUEST_FRAME_T {
163 UINT_16 u2FrameCtrl; /* Frame Control */
164 UINT_16 u2Duration; /* Duration */
165 UINT_8 aucDestAddr[MAC_ADDR_LEN]; /* DA */
166 UINT_8 aucSrcAddr[MAC_ADDR_LEN]; /* SA */
167 UINT_8 aucBSSID[MAC_ADDR_LEN]; /* BSSID */
168 UINT_16 u2SeqCtrl; /* Sequence Control */
169 /* P2P Public Action Frame Body */
170 UINT_8 ucCategory; /* Category, 0x04 */
171 UINT_8 ucAction; /* Action Value, 0x09 */
172 UINT_8 ucDialogToken; /* Dialog Token. */
173 } __KAL_ATTRIB_PACKED__ GAS_PUBLIC_ACTION_COMEBACK_REQUEST_FRAME_T, *P_GAS_PUBLIC_ACTION_COMEBACK_REQUEST_FRAME_T;
175 /* P2P C.3-2 GAS Public Action Comeback Response Frame Format */
176 typedef struct _GAS_PUBLIC_ACTION_COMEBACK_RESPONSE_FRAME_T {
178 UINT_16 u2FrameCtrl; /* Frame Control */
179 UINT_16 u2Duration; /* Duration */
180 UINT_8 aucDestAddr[MAC_ADDR_LEN]; /* DA */
181 UINT_8 aucSrcAddr[MAC_ADDR_LEN]; /* SA */
182 UINT_8 aucBSSID[MAC_ADDR_LEN]; /* BSSID */
183 UINT_16 u2SeqCtrl; /* Sequence Control */
184 /* P2P Public Action Frame Body */
185 UINT_8 ucCategory; /* Category, 0x04 */
186 UINT_8 ucAction; /* Action Value, 0x09 */
187 UINT_8 ucDialogToken; /* Dialog Token. */
188 UINT_16 u2StatusCode; /* Comeback Response. */
189 UINT_8 ucFragmentID; /*Comeback Response. */
190 UINT_16 u2ComebackDelay; /* Comeback Response. */
191 UINT_8 aucInfoElem[1]; /* Advertisement IE. */
192 } __KAL_ATTRIB_PACKED__ GAS_PUBLIC_ACTION_COMEBACK_RESPONSE_FRAME_T, *P_GAS_PUBLIC_ACTION_COMEBACK_RESPONSE_FRAME_T;
197 typedef struct _P2P_SD_VENDER_SPECIFIC_CONTENT_T {
198 /* Service Discovery Vendor-specific Content. */
199 UINT_8 ucOuiSubtype; // 0x09
200 UINT_16 u2ServiceUpdateIndicator;
201 UINT_8 aucServiceTLV[1];
202 } __KAL_ATTRIB_PACKED__ P2P_SD_VENDER_SPECIFIC_CONTENT_T, *P_P2P_SD_VENDER_SPECIFIC_CONTENT_T;
205 typedef struct _P2P_SERVICE_REQUEST_TLV_T {
207 UINT_8 ucServiceProtocolType;
208 UINT_8 ucServiceTransID;
209 UINT_8 aucQueryData[1];
210 } __KAL_ATTRIB_PACKED__ P2P_SERVICE_REQUEST_TLV_T, *P_P2P_SERVICE_REQUEST_TLV_T;
214 typedef struct _P2P_SERVICE_RESPONSE_TLV_T {
216 UINT_8 ucServiceProtocolType;
217 UINT_8 ucServiceTransID;
219 UINT_8 aucResponseData[1];
220 } __KAL_ATTRIB_PACKED__ P2P_SERVICE_RESPONSE_TLV_T, *P_P2P_SERVICE_RESPONSE_TLV_T;