138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* 238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Copyright (C) 1999-2013, Broadcom Corporation 338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Permission to use, copy, modify, and/or distribute this software for any 538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * purpose with or without fee is hereby granted, provided that the above 638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * copyright notice and this permission notice appear in all copies. 738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 1038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 1138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 1238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 1338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 1438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 1538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 1638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Fundamental types and constants relating to WFA P2P (aka WiFi Direct) 1738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 1838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * $Id: p2p.h 384536 2013-02-12 04:13:09Z $ 1938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */ 2038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 2138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef _P2P_H_ 2238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define _P2P_H_ 2338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 2438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef _TYPEDEFS_H_ 2538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#include <typedefs.h> 2638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif 2738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#include <wlioctl.h> 2838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#include <proto/802.11.h> 2938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 3038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* This marks the start of a packed structure section. */ 3138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#include <packed_section_start.h> 3238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 3338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 3438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WiFi P2P OUI values */ 3538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_OUI WFA_OUI /* WiFi P2P OUI */ 3638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_VER WFA_OUI_TYPE_P2P /* P2P version: 9=WiFi P2P v1.0 */ 3738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 3838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_IE_ID 0xdd /* P2P IE element ID */ 3938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 4038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WiFi P2P IE */ 4138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2p_ie { 4238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 id; /* IE ID: 0xDD */ 4338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 len; /* IE length */ 4438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 OUI[3]; /* WiFi P2P specific OUI: P2P_OUI */ 4538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 oui_type; /* Identifies P2P version: P2P_VER */ 4638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 subelts[1]; /* variable length subelements */ 4738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 4838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2p_ie wifi_p2p_ie_t; 4938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 5038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_IE_FIXED_LEN 6 5138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 5238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_ATTR_ID_OFF 0 5338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_ATTR_LEN_OFF 1 5438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_ATTR_DATA_OFF 3 5538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 5638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_ATTR_ID_LEN 1 /* ID filed length */ 5738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_ATTR_LEN_LEN 2 /* length field length */ 5838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_ATTR_HDR_LEN 3 /* ID + 2-byte length field spec 1.02 */ 5938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 6038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* P2P IE Subelement IDs from WiFi P2P Technical Spec 1.00 */ 6138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_SEID_STATUS 0 /* Status */ 6238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_SEID_MINOR_RC 1 /* Minor Reason Code */ 6338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_SEID_P2P_INFO 2 /* P2P Capability (capabilities info) */ 6438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_SEID_DEV_ID 3 /* P2P Device ID */ 6538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_SEID_INTENT 4 /* Group Owner Intent */ 6638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_SEID_CFG_TIMEOUT 5 /* Configuration Timeout */ 6738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_SEID_CHANNEL 6 /* Listen channel */ 6838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_SEID_GRP_BSSID 7 /* P2P Group BSSID */ 6938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_SEID_XT_TIMING 8 /* Extended Listen Timing */ 7038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_SEID_INTINTADDR 9 /* Intended P2P Interface Address */ 7138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_SEID_P2P_MGBTY 10 /* P2P Manageability */ 7238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_SEID_CHAN_LIST 11 /* Channel List */ 7338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_SEID_ABSENCE 12 /* Notice of Absence */ 7438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_SEID_DEV_INFO 13 /* Device Info */ 7538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_SEID_GROUP_INFO 14 /* Group Info */ 7638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_SEID_GROUP_ID 15 /* Group ID */ 7738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_SEID_P2P_IF 16 /* P2P Interface */ 7838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_SEID_OP_CHANNEL 17 /* Operating Channel */ 7938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_SEID_INVITE_FLAGS 18 /* Invitation Flags */ 8038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_SEID_VNDR 221 /* Vendor-specific subelement */ 8138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 8238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_SE_VS_ID_SERVICES 0x1b /* BRCM proprietary subel: L2 Services */ 8338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 8438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 8538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WiFi P2P IE subelement: P2P Capability (capabilities info) */ 8638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2p_info_se_s { 8738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 eltId; /* SE ID: P2P_SEID_P2P_INFO */ 8838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 len[2]; /* SE length not including eltId, len fields */ 8938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 dev; /* Device Capability Bitmap */ 9038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 group; /* Group Capability Bitmap */ 9138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 9238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2p_info_se_s wifi_p2p_info_se_t; 9338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 9438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* P2P Capability subelement's Device Capability Bitmap bit values */ 9538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_CAPSE_DEV_SERVICE_DIS 0x1 /* Service Discovery */ 9638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_CAPSE_DEV_CLIENT_DIS 0x2 /* Client Discoverability */ 9738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_CAPSE_DEV_CONCURRENT 0x4 /* Concurrent Operation */ 9838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_CAPSE_DEV_INFRA_MAN 0x8 /* P2P Infrastructure Managed */ 9938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_CAPSE_DEV_LIMIT 0x10 /* P2P Device Limit */ 10038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_CAPSE_INVITE_PROC 0x20 /* P2P Invitation Procedure */ 10138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 10238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* P2P Capability subelement's Group Capability Bitmap bit values */ 10338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_CAPSE_GRP_OWNER 0x1 /* P2P Group Owner */ 10438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_CAPSE_PERSIST_GRP 0x2 /* Persistent P2P Group */ 10538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_CAPSE_GRP_LIMIT 0x4 /* P2P Group Limit */ 10638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_CAPSE_GRP_INTRA_BSS 0x8 /* Intra-BSS Distribution */ 10738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_CAPSE_GRP_X_CONNECT 0x10 /* Cross Connection */ 10838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_CAPSE_GRP_PERSISTENT 0x20 /* Persistent Reconnect */ 10938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_CAPSE_GRP_FORMATION 0x40 /* Group Formation */ 11038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 11138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 11238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WiFi P2P IE subelement: Group Owner Intent */ 11338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2p_intent_se_s { 11438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 eltId; /* SE ID: P2P_SEID_INTENT */ 11538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 len[2]; /* SE length not including eltId, len fields */ 11638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 intent; /* Intent Value 0...15 (0=legacy 15=master only) */ 11738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 11838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2p_intent_se_s wifi_p2p_intent_se_t; 11938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 12038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WiFi P2P IE subelement: Configuration Timeout */ 12138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2p_cfg_tmo_se_s { 12238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 eltId; /* SE ID: P2P_SEID_CFG_TIMEOUT */ 12338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 len[2]; /* SE length not including eltId, len fields */ 12438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 go_tmo; /* GO config timeout in units of 10 ms */ 12538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 client_tmo; /* Client config timeout in units of 10 ms */ 12638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 12738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2p_cfg_tmo_se_s wifi_p2p_cfg_tmo_se_t; 12838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 12938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WiFi P2P IE subelement: Listen Channel */ 13038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2p_listen_channel_se_s { 13138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 eltId; /* SE ID: P2P_SEID_CHANNEL */ 13238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 len[2]; /* SE length not including eltId, len fields */ 13338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 country[3]; /* Country String */ 13438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 op_class; /* Operating Class */ 13538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 channel; /* Channel */ 13638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 13738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2p_listen_channel_se_s wifi_p2p_listen_channel_se_t; 13838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 13938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WiFi P2P IE subelement: P2P Group BSSID */ 14038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2p_grp_bssid_se_s { 14138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 eltId; /* SE ID: P2P_SEID_GRP_BSSID */ 14238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 len[2]; /* SE length not including eltId, len fields */ 14338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 mac[6]; /* P2P group bssid */ 14438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 14538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2p_grp_bssid_se_s wifi_p2p_grp_bssid_se_t; 14638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 14738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WiFi P2P IE subelement: P2P Group ID */ 14838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2p_grp_id_se_s { 14938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 eltId; /* SE ID: P2P_SEID_GROUP_ID */ 15038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 len[2]; /* SE length not including eltId, len fields */ 15138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 mac[6]; /* P2P device address */ 15238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 ssid[1]; /* ssid. device id. variable length */ 15338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 15438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2p_grp_id_se_s wifi_p2p_grp_id_se_t; 15538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 15638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WiFi P2P IE subelement: P2P Interface */ 15738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2p_intf_se_s { 15838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 eltId; /* SE ID: P2P_SEID_P2P_IF */ 15938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 len[2]; /* SE length not including eltId, len fields */ 16038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 mac[6]; /* P2P device address */ 16138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 ifaddrs; /* P2P Interface Address count */ 16238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 ifaddr[1][6]; /* P2P Interface Address list */ 16338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 16438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2p_intf_se_s wifi_p2p_intf_se_t; 16538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 16638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WiFi P2P IE subelement: Status */ 16738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2p_status_se_s { 16838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 eltId; /* SE ID: P2P_SEID_STATUS */ 16938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 len[2]; /* SE length not including eltId, len fields */ 17038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 status; /* Status Code: P2P_STATSE_* */ 17138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 17238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2p_status_se_s wifi_p2p_status_se_t; 17338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 17438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Status subelement Status Code definitions */ 17538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_STATSE_SUCCESS 0 17638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* Success */ 17738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_STATSE_FAIL_INFO_CURR_UNAVAIL 1 17838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* Failed, information currently unavailable */ 17938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_STATSE_PASSED_UP P2P_STATSE_FAIL_INFO_CURR_UNAVAIL 18038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* Old name for above in P2P spec 1.08 and older */ 18138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_STATSE_FAIL_INCOMPAT_PARAMS 2 18238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* Failed, incompatible parameters */ 18338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_STATSE_FAIL_LIMIT_REACHED 3 18438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* Failed, limit reached */ 18538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_STATSE_FAIL_INVALID_PARAMS 4 18638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* Failed, invalid parameters */ 18738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_STATSE_FAIL_UNABLE_TO_ACCOM 5 18838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* Failed, unable to accomodate request */ 18938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_STATSE_FAIL_PROTO_ERROR 6 19038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* Failed, previous protocol error or disruptive behaviour */ 19138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_STATSE_FAIL_NO_COMMON_CHAN 7 19238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* Failed, no common channels */ 19338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_STATSE_FAIL_UNKNOWN_GROUP 8 19438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* Failed, unknown P2P Group */ 19538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_STATSE_FAIL_INTENT 9 19638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* Failed, both peers indicated Intent 15 in GO Negotiation */ 19738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_STATSE_FAIL_INCOMPAT_PROVIS 10 19838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* Failed, incompatible provisioning method */ 19938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_STATSE_FAIL_USER_REJECT 11 20038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* Failed, rejected by user */ 20138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 20238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WiFi P2P IE attribute: Extended Listen Timing */ 20338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2p_ext_se_s { 20438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 eltId; /* ID: P2P_SEID_EXT_TIMING */ 20538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 len[2]; /* length not including eltId, len fields */ 20638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 avail[2]; /* availibility period */ 20738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 interval[2]; /* availibility interval */ 20838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 20938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2p_ext_se_s wifi_p2p_ext_se_t; 21038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 21138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_EXT_MIN 10 /* minimum 10ms */ 21238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 21338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WiFi P2P IE subelement: Intended P2P Interface Address */ 21438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2p_intintad_se_s { 21538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 eltId; /* SE ID: P2P_SEID_INTINTADDR */ 21638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 len[2]; /* SE length not including eltId, len fields */ 21738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 mac[6]; /* intended P2P interface MAC address */ 21838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 21938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2p_intintad_se_s wifi_p2p_intintad_se_t; 22038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 22138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WiFi P2P IE subelement: Channel */ 22238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2p_channel_se_s { 22338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 eltId; /* SE ID: P2P_SEID_STATUS */ 22438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 len[2]; /* SE length not including eltId, len fields */ 22538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 band; /* Regulatory Class (band) */ 22638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 channel; /* Channel */ 22738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 22838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2p_channel_se_s wifi_p2p_channel_se_t; 22938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 23038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 23138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Channel Entry structure within the Channel List SE */ 23238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2p_chanlist_entry_s { 23338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 band; /* Regulatory Class (band) */ 23438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 num_channels; /* # of channels in the channel list */ 23538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 channels[WL_NUMCHANNELS]; /* Channel List */ 23638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 23738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2p_chanlist_entry_s wifi_p2p_chanlist_entry_t; 23838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WIFI_P2P_CHANLIST_SE_MAX_ENTRIES 2 23938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 24038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WiFi P2P IE subelement: Channel List */ 24138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2p_chanlist_se_s { 24238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 eltId; /* SE ID: P2P_SEID_CHAN_LIST */ 24338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 len[2]; /* SE length not including eltId, len fields */ 24438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 country[3]; /* Country String */ 24538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 num_entries; /* # of channel entries */ 24638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt wifi_p2p_chanlist_entry_t entries[WIFI_P2P_CHANLIST_SE_MAX_ENTRIES]; 24738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* Channel Entry List */ 24838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 24938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2p_chanlist_se_s wifi_p2p_chanlist_se_t; 25038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 25138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WiFi Primary Device Type structure */ 25238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2p_pri_devtype_s { 25338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint16 cat_id; /* Category ID */ 25438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 OUI[3]; /* WFA OUI: 0x0050F2 */ 25538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 oui_type; /* WPS_OUI_TYPE */ 25638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint16 sub_cat_id; /* Sub Category ID */ 25738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 25838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2p_pri_devtype_s wifi_p2p_pri_devtype_t; 25938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 26038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WiFi P2P IE's Device Info subelement */ 26138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2p_devinfo_se_s { 26238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 eltId; /* SE ID: P2P_SEID_DEVINFO */ 26338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 len[2]; /* SE length not including eltId, len fields */ 26438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 mac[6]; /* P2P Device MAC address */ 26538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint16 wps_cfg_meths; /* Config Methods: reg_prototlv.h WPS_CONFMET_* */ 26638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 pri_devtype[8]; /* Primary Device Type */ 26738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 26838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2p_devinfo_se_s wifi_p2p_devinfo_se_t; 26938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 27038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_DEV_TYPE_LEN 8 27138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 27238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WiFi P2P IE's Group Info subelement Client Info Descriptor */ 27338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2p_cid_fixed_s { 27438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 len; 27538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 devaddr[ETHER_ADDR_LEN]; /* P2P Device Address */ 27638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 ifaddr[ETHER_ADDR_LEN]; /* P2P Interface Address */ 27738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 devcap; /* Device Capability */ 27838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 cfg_meths[2]; /* Config Methods: reg_prototlv.h WPS_CONFMET_* */ 27938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 pridt[P2P_DEV_TYPE_LEN]; /* Primary Device Type */ 28038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 secdts; /* Number of Secondary Device Types */ 28138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 28238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2p_cid_fixed_s wifi_p2p_cid_fixed_t; 28338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 28438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WiFi P2P IE's Device ID subelement */ 28538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2p_devid_se_s { 28638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 eltId; 28738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 len[2]; 28838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt struct ether_addr addr; /* P2P Device MAC address */ 28938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 29038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2p_devid_se_s wifi_p2p_devid_se_t; 29138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 29238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WiFi P2P IE subelement: P2P Manageability */ 29338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2p_mgbt_se_s { 29438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 eltId; /* SE ID: P2P_SEID_P2P_MGBTY */ 29538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 len[2]; /* SE length not including eltId, len fields */ 29638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 mg_bitmap; /* manageability bitmap */ 29738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 29838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2p_mgbt_se_s wifi_p2p_mgbt_se_t; 29938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* mg_bitmap field bit values */ 30038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_MGBTSE_P2PDEVMGMT_FLAG 0x1 /* AP supports Managed P2P Device */ 30138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 30238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WiFi P2P IE subelement: Group Info */ 30338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2p_grpinfo_se_s { 30438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 eltId; /* SE ID: P2P_SEID_GROUP_INFO */ 30538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 len[2]; /* SE length not including eltId, len fields */ 30638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 30738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2p_grpinfo_se_s wifi_p2p_grpinfo_se_t; 30838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 30938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WiFi IE subelement: Operating Channel */ 31038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2p_op_channel_se_s { 31138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 eltId; /* SE ID: P2P_SEID_OP_CHANNEL */ 31238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 len[2]; /* SE length not including eltId, len fields */ 31338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 country[3]; /* Country String */ 31438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 op_class; /* Operating Class */ 31538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 channel; /* Channel */ 31638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 31738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2p_op_channel_se_s wifi_p2p_op_channel_se_t; 31838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 31938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WiFi IE subelement: INVITATION FLAGS */ 32038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2p_invite_flags_se_s { 32138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 eltId; /* SE ID: P2P_SEID_INVITE_FLAGS */ 32238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 len[2]; /* SE length not including eltId, len fields */ 32338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 flags; /* Flags */ 32438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 32538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2p_invite_flags_se_s wifi_p2p_invite_flags_se_t; 32638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 32738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WiFi P2P Action Frame */ 32838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2p_action_frame { 32938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 category; /* P2P_AF_CATEGORY */ 33038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 OUI[3]; /* OUI - P2P_OUI */ 33138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 type; /* OUI Type - P2P_VER */ 33238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 subtype; /* OUI Subtype - P2P_AF_* */ 33338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 dialog_token; /* nonzero, identifies req/resp tranaction */ 33438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 elts[1]; /* Variable length information elements. Max size = 33538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * ACTION_FRAME_SIZE - sizeof(this structure) - 1 33638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */ 33738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 33838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2p_action_frame wifi_p2p_action_frame_t; 33938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_AF_CATEGORY 0x7f 34038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 34138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_AF_FIXED_LEN 7 34238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 34338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WiFi P2P Action Frame OUI Subtypes */ 34438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_AF_NOTICE_OF_ABSENCE 0 /* Notice of Absence */ 34538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_AF_PRESENCE_REQ 1 /* P2P Presence Request */ 34638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_AF_PRESENCE_RSP 2 /* P2P Presence Response */ 34738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_AF_GO_DISC_REQ 3 /* GO Discoverability Request */ 34838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 34938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 35038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WiFi P2P Public Action Frame */ 35138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2p_pub_act_frame { 35238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 category; /* P2P_PUB_AF_CATEGORY */ 35338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 action; /* P2P_PUB_AF_ACTION */ 35438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 oui[3]; /* P2P_OUI */ 35538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 oui_type; /* OUI type - P2P_VER */ 35638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 subtype; /* OUI subtype - P2P_TYPE_* */ 35738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 dialog_token; /* nonzero, identifies req/rsp transaction */ 35838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 elts[1]; /* Variable length information elements. Max size = 35938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * ACTION_FRAME_SIZE - sizeof(this structure) - 1 36038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */ 36138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 36238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2p_pub_act_frame wifi_p2p_pub_act_frame_t; 36338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_PUB_AF_FIXED_LEN 8 36438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_PUB_AF_CATEGORY 0x04 36538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_PUB_AF_ACTION 0x09 36638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 36738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WiFi P2P Public Action Frame OUI Subtypes */ 36838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_PAF_GON_REQ 0 /* Group Owner Negotiation Req */ 36938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_PAF_GON_RSP 1 /* Group Owner Negotiation Rsp */ 37038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_PAF_GON_CONF 2 /* Group Owner Negotiation Confirm */ 37138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_PAF_INVITE_REQ 3 /* P2P Invitation Request */ 37238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_PAF_INVITE_RSP 4 /* P2P Invitation Response */ 37338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_PAF_DEVDIS_REQ 5 /* Device Discoverability Request */ 37438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_PAF_DEVDIS_RSP 6 /* Device Discoverability Response */ 37538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_PAF_PROVDIS_REQ 7 /* Provision Discovery Request */ 37638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_PAF_PROVDIS_RSP 8 /* Provision Discovery Response */ 37738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_PAF_SUBTYPE_INVALID 255 /* Invalid Subtype */ 37838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 37938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* TODO: Stop using these obsolete aliases for P2P_PAF_GON_* */ 38038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_TYPE_MNREQ P2P_PAF_GON_REQ 38138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_TYPE_MNRSP P2P_PAF_GON_RSP 38238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_TYPE_MNCONF P2P_PAF_GON_CONF 38338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 38438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WiFi P2P IE subelement: Notice of Absence */ 38538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2p_noa_desc { 38638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 cnt_type; /* Count/Type */ 38738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint32 duration; /* Duration */ 38838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint32 interval; /* Interval */ 38938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint32 start; /* Start Time */ 39038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 39138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2p_noa_desc wifi_p2p_noa_desc_t; 39238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 39338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2p_noa_se { 39438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 eltId; /* Subelement ID */ 39538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 len[2]; /* Length */ 39638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 index; /* Index */ 39738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 ops_ctw_parms; /* CTWindow and OppPS Parameters */ 39838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt wifi_p2p_noa_desc_t desc[1]; /* Notice of Absence Descriptor(s) */ 39938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 40038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2p_noa_se wifi_p2p_noa_se_t; 40138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 40238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_NOA_SE_FIXED_LEN 5 40338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 40438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_NOA_SE_MAX_DESC 2 /* max NoA descriptors in presence request */ 40538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 40638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* cnt_type field values */ 40738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_NOA_DESC_CNT_RESERVED 0 /* reserved and should not be used */ 40838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_NOA_DESC_CNT_REPEAT 255 /* continuous schedule */ 40938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_NOA_DESC_TYPE_PREFERRED 1 /* preferred values */ 41038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_NOA_DESC_TYPE_ACCEPTABLE 2 /* acceptable limits */ 41138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 41238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* ctw_ops_parms field values */ 41338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_NOA_CTW_MASK 0x7f 41438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_NOA_OPS_MASK 0x80 41538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_NOA_OPS_SHIFT 7 41638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 41738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2P_CTW_MIN 10 /* minimum 10TU */ 41838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 41938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* 42038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * P2P Service Discovery related 42138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */ 42238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2PSD_ACTION_CATEGORY 0x04 42338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* Public action frame */ 42438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2PSD_ACTION_ID_GAS_IREQ 0x0a 42538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* Action value for GAS Initial Request AF */ 42638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2PSD_ACTION_ID_GAS_IRESP 0x0b 42738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* Action value for GAS Initial Response AF */ 42838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2PSD_ACTION_ID_GAS_CREQ 0x0c 42938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* Action value for GAS Comback Request AF */ 43038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2PSD_ACTION_ID_GAS_CRESP 0x0d 43138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* Action value for GAS Comback Response AF */ 43238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2PSD_AD_EID 0x6c 43338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* Advertisement Protocol IE ID */ 43438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2PSD_ADP_TUPLE_QLMT_PAMEBI 0x00 43538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* Query Response Length Limit 7 bits plus PAME-BI 1 bit */ 43638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2PSD_ADP_PROTO_ID 0x00 43738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* Advertisement Protocol ID. Always 0 for P2P SD */ 43838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2PSD_GAS_OUI P2P_OUI 43938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* WFA OUI */ 44038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2PSD_GAS_OUI_SUBTYPE P2P_VER 44138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* OUI Subtype for GAS IE */ 44238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2PSD_GAS_NQP_INFOID 0xDDDD 44338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* NQP Query Info ID: 56797 */ 44438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define P2PSD_GAS_COMEBACKDEALY 0x00 44538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* Not used in the Native GAS protocol */ 44638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 44738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Service Protocol Type */ 44838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef enum p2psd_svc_protype { 44938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt SVC_RPOTYPE_ALL = 0, 45038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt SVC_RPOTYPE_BONJOUR = 1, 45138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt SVC_RPOTYPE_UPNP = 2, 45238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt SVC_RPOTYPE_WSD = 3, 45338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt SVC_RPOTYPE_VENDOR = 255 45438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} p2psd_svc_protype_t; 45538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 45638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Service Discovery response status code */ 45738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef enum { 45838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt P2PSD_RESP_STATUS_SUCCESS = 0, 45938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt P2PSD_RESP_STATUS_PROTYPE_NA = 1, 46038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt P2PSD_RESP_STATUS_DATA_NA = 2, 46138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt P2PSD_RESP_STATUS_BAD_REQUEST = 3 46238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} p2psd_resp_status_t; 46338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 46438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Advertisement Protocol IE tuple field */ 46538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2psd_adp_tpl { 46638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 llm_pamebi; /* Query Response Length Limit bit 0-6, set to 0 plus 46738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Pre-Associated Message Exchange BSSID Independent bit 7, set to 0 46838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */ 46938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 adp_id; /* Advertisement Protocol ID: 0 for NQP Native Query Protocol */ 47038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 47138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2psd_adp_tpl wifi_p2psd_adp_tpl_t; 47238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 47338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Advertisement Protocol IE */ 47438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2psd_adp_ie { 47538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 id; /* IE ID: 0x6c - 108 */ 47638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 len; /* IE length */ 47738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt wifi_p2psd_adp_tpl_t adp_tpl; /* Advertisement Protocol Tuple field. Only one 47838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * tuple is defined for P2P Service Discovery 47938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */ 48038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 48138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2psd_adp_ie wifi_p2psd_adp_ie_t; 48238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 48338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* NQP Vendor-specific Content */ 48438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2psd_nqp_query_vsc { 48538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 oui_subtype; /* OUI Subtype: 0x09 */ 48638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint16 svc_updi; /* Service Update Indicator */ 48738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 svc_tlvs[1]; /* wifi_p2psd_qreq_tlv_t type for service request, 48838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * wifi_p2psd_qresp_tlv_t type for service response 48938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */ 49038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 49138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2psd_nqp_query_vsc wifi_p2psd_nqp_query_vsc_t; 49238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 49338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Service Request TLV */ 49438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2psd_qreq_tlv { 49538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint16 len; /* Length: 5 plus size of Query Data */ 49638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 svc_prot; /* Service Protocol Type */ 49738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 svc_tscid; /* Service Transaction ID */ 49838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 query_data[1]; /* Query Data, passed in from above Layer 2 */ 49938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 50038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2psd_qreq_tlv wifi_p2psd_qreq_tlv_t; 50138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 50238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Query Request Frame, defined in generic format, instead of NQP specific */ 50338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2psd_qreq_frame { 50438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint16 info_id; /* Info ID: 0xDDDD */ 50538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint16 len; /* Length of service request TLV, 5 plus the size of request data */ 50638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 oui[3]; /* WFA OUI: 0x0050F2 */ 50738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 qreq_vsc[1]; /* Vendor-specific Content: wifi_p2psd_nqp_query_vsc_t type for NQP */ 50838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 50938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 51038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2psd_qreq_frame wifi_p2psd_qreq_frame_t; 51138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 51238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* GAS Initial Request AF body, "elts" in wifi_p2p_pub_act_frame */ 51338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2psd_gas_ireq_frame { 51438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt wifi_p2psd_adp_ie_t adp_ie; /* Advertisement Protocol IE */ 51538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint16 qreq_len; /* Query Request Length */ 51638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 qreq_frm[1]; /* Query Request Frame wifi_p2psd_qreq_frame_t */ 51738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 51838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2psd_gas_ireq_frame wifi_p2psd_gas_ireq_frame_t; 51938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 52038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Service Response TLV */ 52138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2psd_qresp_tlv { 52238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint16 len; /* Length: 5 plus size of Query Data */ 52338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 svc_prot; /* Service Protocol Type */ 52438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 svc_tscid; /* Service Transaction ID */ 52538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 status; /* Value defined in Table 57 of P2P spec. */ 52638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 query_data[1]; /* Response Data, passed in from above Layer 2 */ 52738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 52838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2psd_qresp_tlv wifi_p2psd_qresp_tlv_t; 52938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 53038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Query Response Frame, defined in generic format, instead of NQP specific */ 53138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2psd_qresp_frame { 53238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint16 info_id; /* Info ID: 0xDDDD */ 53338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint16 len; /* Lenth of service response TLV, 6 plus the size of resp data */ 53438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 oui[3]; /* WFA OUI: 0x0050F2 */ 53538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 qresp_vsc[1]; /* Vendor-specific Content: wifi_p2psd_qresp_tlv_t type for NQP */ 53638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 53738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 53838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2psd_qresp_frame wifi_p2psd_qresp_frame_t; 53938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 54038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* GAS Initial Response AF body, "elts" in wifi_p2p_pub_act_frame */ 54138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2psd_gas_iresp_frame { 54238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint16 status; /* Value defined in Table 7-23 of IEEE P802.11u */ 54338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint16 cb_delay; /* GAS Comeback Delay */ 54438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt wifi_p2psd_adp_ie_t adp_ie; /* Advertisement Protocol IE */ 54538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint16 qresp_len; /* Query Response Length */ 54638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 qresp_frm[1]; /* Query Response Frame wifi_p2psd_qresp_frame_t */ 54738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 54838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2psd_gas_iresp_frame wifi_p2psd_gas_iresp_frame_t; 54938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 55038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* GAS Comeback Response AF body, "elts" in wifi_p2p_pub_act_frame */ 55138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2psd_gas_cresp_frame { 55238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint16 status; /* Value defined in Table 7-23 of IEEE P802.11u */ 55338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 fragment_id; /* Fragmentation ID */ 55438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint16 cb_delay; /* GAS Comeback Delay */ 55538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt wifi_p2psd_adp_ie_t adp_ie; /* Advertisement Protocol IE */ 55638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint16 qresp_len; /* Query Response Length */ 55738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 qresp_frm[1]; /* Query Response Frame wifi_p2psd_qresp_frame_t */ 55838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 55938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2psd_gas_cresp_frame wifi_p2psd_gas_cresp_frame_t; 56038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 56138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Wi-Fi GAS Public Action Frame */ 56238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry ShmidtBWL_PRE_PACKED_STRUCT struct wifi_p2psd_gas_pub_act_frame { 56338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 category; /* 0x04 Public Action Frame */ 56438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 action; /* 0x6c Advertisement Protocol */ 56538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 dialog_token; /* nonzero, identifies req/rsp transaction */ 56638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint8 query_data[1]; /* Query Data. wifi_p2psd_gas_ireq_frame_t 56738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * or wifi_p2psd_gas_iresp_frame_t format 56838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */ 56938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT; 57038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wifi_p2psd_gas_pub_act_frame wifi_p2psd_gas_pub_act_frame_t; 57138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 57238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* This marks the end of a packed structure section. */ 57338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#include <packed_section_end.h> 57438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 57538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* _P2P_H_ */ 576