| /* |
| * Copyright (C) 2016 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #ifndef __NAN_H__ |
| #define __NAN_H__ |
| |
| #include <net/if.h> |
| #include <stdbool.h> |
| #include "wifi_hal.h" |
| |
| #ifdef __cplusplus |
| extern "C" |
| { |
| #endif /* __cplusplus */ |
| |
| /***************************************************************************** |
| * Neighbour Aware Network Service Structures and Functions |
| *****************************************************************************/ |
| |
| /* |
| Definitions |
| All multi-byte fields within all NAN protocol stack messages are assumed to be in Little Endian order. |
| */ |
| |
| typedef int NanVersion; |
| typedef u16 transaction_id; |
| typedef u32 NanDataPathId; |
| |
| #define NAN_MAC_ADDR_LEN 6 |
| #define NAN_MAJOR_VERSION 4 |
| #define NAN_MINOR_VERSION 0 |
| #define NAN_MICRO_VERSION 0 |
| #define NAN_MAX_SOCIAL_CHANNELS 3 |
| |
| /* NAN Maximum Lengths */ |
| #define NAN_MAX_SERVICE_NAME_LEN 255 |
| #define NAN_MAX_MATCH_FILTER_LEN 255 |
| #define NAN_MAX_SERVICE_SPECIFIC_INFO_LEN 1024 |
| #define NAN_MAX_VSA_DATA_LEN 1024 |
| #define NAN_MAX_MESH_DATA_LEN 32 |
| #define NAN_MAX_INFRA_DATA_LEN 32 |
| #define NAN_MAX_CLUSTER_ATTRIBUTE_LEN 255 |
| #define NAN_MAX_SUBSCRIBE_MAX_ADDRESS 42 |
| #define NAN_MAX_FAM_CHANNELS 32 |
| #define NAN_MAX_POSTDISCOVERY_LEN 5 |
| #define NAN_MAX_FRAME_DATA_LEN 504 |
| #define NAN_DP_MAX_APP_INFO_LEN 512 |
| #define NAN_ERROR_STR_LEN 255 |
| #define NAN_PMK_INFO_LEN 32 |
| #define NAN_MAX_SCID_BUF_LEN 1024 |
| #define NAN_MAX_SDEA_SERVICE_SPECIFIC_INFO_LEN 2048 |
| #define NAN_SECURITY_MIN_PASSPHRASE_LEN 8 |
| #define NAN_SECURITY_MAX_PASSPHRASE_LEN 63 |
| #define NAN_MAX_CHANNEL_INFO_SUPPORTED 4 |
| #define NAN_IDENTITY_KEY_LEN 16 |
| #define NAN_IDENTITY_TAG_LEN 8 |
| #define NAN_IDENTITY_NONCE_LEN 8 |
| #define NAN_MAX_MATCH_IDENTITY_LEN 1024 |
| /* |
| Definition of various NanResponseType |
| */ |
| typedef enum { |
| NAN_RESPONSE_ENABLED = 0, |
| NAN_RESPONSE_DISABLED = 1, |
| NAN_RESPONSE_PUBLISH = 2, |
| NAN_RESPONSE_PUBLISH_CANCEL = 3, |
| NAN_RESPONSE_TRANSMIT_FOLLOWUP = 4, |
| NAN_RESPONSE_SUBSCRIBE = 5, |
| NAN_RESPONSE_SUBSCRIBE_CANCEL = 6, |
| NAN_RESPONSE_STATS = 7, |
| NAN_RESPONSE_CONFIG = 8, |
| NAN_RESPONSE_TCA = 9, |
| NAN_RESPONSE_ERROR = 10, |
| NAN_RESPONSE_BEACON_SDF_PAYLOAD = 11, |
| NAN_GET_CAPABILITIES = 12, |
| NAN_DP_INTERFACE_CREATE = 13, |
| NAN_DP_INTERFACE_DELETE = 14, |
| NAN_DP_INITIATOR_RESPONSE = 15, |
| NAN_DP_RESPONDER_RESPONSE = 16, |
| NAN_DP_END = 17, |
| NAN_PAIRING_INITIATOR_RESPONSE = 18, |
| NAN_PAIRING_RESPONDER_RESPONSE = 19, |
| NAN_BOOTSTRAPPING_INITIATOR_RESPONSE = 20, |
| NAN_BOOTSTRAPPING_RESPONDER_RESPONSE = 21, |
| NAN_PAIRING_END = 22, |
| NAN_SUSPEND_REQUEST_RESPONSE = 23, |
| NAN_RESUME_REQUEST_RESPONSE = 24 |
| } NanResponseType; |
| |
| /* NAN Publish Types */ |
| typedef enum { |
| NAN_PUBLISH_TYPE_UNSOLICITED = 0, |
| NAN_PUBLISH_TYPE_SOLICITED, |
| NAN_PUBLISH_TYPE_UNSOLICITED_SOLICITED |
| } NanPublishType; |
| |
| /* NAN Transmit Priorities */ |
| typedef enum { |
| NAN_TX_PRIORITY_NORMAL = 0, |
| NAN_TX_PRIORITY_HIGH |
| } NanTxPriority; |
| |
| /* NAN Statistics Request ID Codes */ |
| typedef enum { |
| NAN_STATS_ID_DE_PUBLISH = 0, |
| NAN_STATS_ID_DE_SUBSCRIBE, |
| NAN_STATS_ID_DE_MAC, |
| NAN_STATS_ID_DE_TIMING_SYNC, |
| NAN_STATS_ID_DE_DW, |
| NAN_STATS_ID_DE |
| } NanStatsType; |
| |
| /* NAN Protocol Event ID Codes */ |
| typedef enum { |
| NAN_EVENT_ID_DISC_MAC_ADDR = 0, |
| NAN_EVENT_ID_STARTED_CLUSTER, |
| NAN_EVENT_ID_JOINED_CLUSTER |
| } NanDiscEngEventType; |
| |
| /* NAN Data Path type */ |
| typedef enum { |
| NAN_DATA_PATH_UNICAST_MSG = 0, |
| NAN_DATA_PATH_MULTICAST_MSG |
| } NdpType; |
| |
| /* NAN Ranging Configuration */ |
| typedef enum { |
| NAN_RANGING_DISABLE = 0, |
| NAN_RANGING_ENABLE |
| } NanRangingState; |
| |
| /* TCA Type */ |
| typedef enum { |
| NAN_TCA_ID_CLUSTER_SIZE = 0 |
| } NanTcaType; |
| |
| /* pairing request type*/ |
| typedef enum { |
| NAN_PAIRING_SETUP = 0, |
| NAN_PAIRING_VERIFICATION = 1 |
| } NanPairingRequestType; |
| |
| /* Nan AKM type */ |
| typedef enum { |
| SAE = 0, |
| PASN = 1 |
| } NanAkm; |
| |
| /* NAN Channel Info */ |
| typedef struct { |
| u32 channel; |
| u32 bandwidth; |
| u32 nss; |
| } NanChannelInfo; |
| |
| /* |
| Various NAN Protocol Response code |
| */ |
| typedef enum { |
| /* NAN Protocol Response Codes */ |
| NAN_STATUS_SUCCESS = 0, |
| /* NAN Discovery Engine/Host driver failures */ |
| NAN_STATUS_INTERNAL_FAILURE = 1, |
| /* NAN OTA failures */ |
| NAN_STATUS_PROTOCOL_FAILURE = 2, |
| /* if the publish/subscribe id is invalid */ |
| NAN_STATUS_INVALID_PUBLISH_SUBSCRIBE_ID = 3, |
| /* If we run out of resources allocated */ |
| NAN_STATUS_NO_RESOURCE_AVAILABLE = 4, |
| /* if invalid params are passed */ |
| NAN_STATUS_INVALID_PARAM = 5, |
| /* if the requestor instance id is invalid */ |
| NAN_STATUS_INVALID_REQUESTOR_INSTANCE_ID = 6, |
| /* if the ndp id is invalid */ |
| NAN_STATUS_INVALID_NDP_ID = 7, |
| /* if NAN is enabled when wifi is turned off */ |
| NAN_STATUS_NAN_NOT_ALLOWED = 8, |
| /* if over the air ack is not received */ |
| NAN_STATUS_NO_OTA_ACK = 9, |
| /* If NAN is already enabled and we are try to re-enable the same */ |
| NAN_STATUS_ALREADY_ENABLED = 10, |
| /* If followup message internal queue is full */ |
| NAN_STATUS_FOLLOWUP_QUEUE_FULL = 11, |
| /* Unsupported concurrency session enabled, NAN disabled notified */ |
| NAN_STATUS_UNSUPPORTED_CONCURRENCY_NAN_DISABLED = 12, |
| /* if the pairing id is invalid */ |
| NAN_STATUS_INVALID_PAIRING_ID = 13, |
| /* if the bootstrapping id is invalid */ |
| NAN_STATUS_INVALID_BOOTSTRAPPING_ID = 14, |
| /* If same request is received again */ |
| NAN_STATUS_REDUNDANT_REQUEST = 15, |
| /* If current request is not supported */ |
| NAN_STATUS_NOT_SUPPORTED = 16, |
| /* If no Wifi Aware connection is active */ |
| NAN_STATUS_NO_CONNECTION = 17, |
| } NanStatusType; |
| |
| /* NAN Transmit Types */ |
| typedef enum { |
| NAN_TX_TYPE_BROADCAST = 0, |
| NAN_TX_TYPE_UNICAST |
| } NanTxType; |
| |
| /* NAN Subscribe Type */ |
| typedef enum { |
| NAN_SUBSCRIBE_TYPE_PASSIVE = 0, |
| NAN_SUBSCRIBE_TYPE_ACTIVE |
| } NanSubscribeType; |
| |
| /* NAN Service Response Filter Attribute Bit */ |
| typedef enum { |
| NAN_SRF_ATTR_BLOOM_FILTER = 0, |
| NAN_SRF_ATTR_PARTIAL_MAC_ADDR |
| } NanSRFType; |
| |
| /* NAN Service Response Filter Include Bit */ |
| typedef enum { |
| NAN_SRF_INCLUDE_DO_NOT_RESPOND = 0, |
| NAN_SRF_INCLUDE_RESPOND |
| } NanSRFIncludeType; |
| |
| /* NAN Match indication type */ |
| typedef enum { |
| NAN_MATCH_ALG_MATCH_ONCE = 0, |
| NAN_MATCH_ALG_MATCH_CONTINUOUS, |
| NAN_MATCH_ALG_MATCH_NEVER |
| } NanMatchAlg; |
| |
| /* NAN Transmit Window Type */ |
| typedef enum { |
| NAN_TRANSMIT_IN_DW = 0, |
| NAN_TRANSMIT_IN_FAW |
| } NanTransmitWindowType; |
| |
| /* NAN SRF State in Subscribe */ |
| typedef enum { |
| NAN_DO_NOT_USE_SRF = 0, |
| NAN_USE_SRF |
| } NanSRFState; |
| |
| /* NAN Include SSI in MatchInd */ |
| typedef enum { |
| NAN_SSI_NOT_REQUIRED_IN_MATCH_IND = 0, |
| NAN_SSI_REQUIRED_IN_MATCH_IND |
| } NanSsiInMatchInd; |
| |
| /* NAN DP security Configuration */ |
| typedef enum { |
| NAN_DP_CONFIG_NO_SECURITY = 0, |
| NAN_DP_CONFIG_SECURITY |
| } NanDataPathSecurityCfgStatus; |
| |
| typedef enum { |
| NAN_QOS_NOT_REQUIRED = 0, |
| NAN_QOS_REQUIRED |
| } NanQosCfgStatus; |
| |
| |
| /* Data request Responder's response */ |
| typedef enum { |
| NAN_DP_REQUEST_ACCEPT = 0, |
| NAN_DP_REQUEST_REJECT |
| } NanDataPathResponseCode; |
| |
| /* Pairing request Responder's response */ |
| typedef enum { |
| NAN_PAIRING_REQUEST_ACCEPT = 0, |
| NAN_PAIRING_REQUEST_REJECT |
| } NanPairingResponseCode; |
| |
| /* Pairing bootstrapping Responder's response */ |
| typedef enum { |
| NAN_BOOTSTRAPPING_REQUEST_ACCEPT = 0, |
| NAN_BOOTSTRAPPING_REQUEST_REJECT = 1, |
| NAN_BOOTSTRAPPING_REQUEST_COMEBACK = 2 |
| } NanBootstrappingResponseCode; |
| |
| /* NAN DP channel config options */ |
| typedef enum { |
| NAN_DP_CHANNEL_NOT_REQUESTED = 0, |
| NAN_DP_REQUEST_CHANNEL_SETUP, |
| NAN_DP_FORCE_CHANNEL_SETUP |
| } NanDataPathChannelCfg; |
| |
| /* Enable/Disable NAN Ranging Auto response */ |
| typedef enum { |
| NAN_RANGING_AUTO_RESPONSE_ENABLE = 1, |
| NAN_RANGING_AUTO_RESPONSE_DISABLE |
| } NanRangingAutoResponse; |
| |
| /* Enable/Disable NAN service range report */ |
| typedef enum { |
| NAN_DISABLE_RANGE_REPORT = 1, |
| NAN_ENABLE_RANGE_REPORT |
| } NanRangeReport; |
| |
| /* NAN Range Response */ |
| typedef enum { |
| NAN_RANGE_REQUEST_ACCEPT = 1, |
| NAN_RANGE_REQUEST_REJECT, |
| NAN_RANGE_REQUEST_CANCEL |
| } NanRangeResponse; |
| |
| /* NAN Security Key Input Type*/ |
| typedef enum { |
| NAN_SECURITY_KEY_INPUT_PMK = 1, |
| NAN_SECURITY_KEY_INPUT_PASSPHRASE |
| } NanSecurityKeyInputType; |
| |
| typedef struct { |
| /* pmk length */ |
| u32 pmk_len; |
| /* |
| PMK: Info is optional in Discovery phase. |
| PMK info can be passed during |
| the NDP session. |
| */ |
| u8 pmk[NAN_PMK_INFO_LEN]; |
| } NanSecurityPmk; |
| |
| typedef struct { |
| /* passphrase length */ |
| u32 passphrase_len; |
| /* |
| passphrase info is optional in Discovery phase. |
| passphrase info can be passed during |
| the NDP session. |
| */ |
| u8 passphrase[NAN_SECURITY_MAX_PASSPHRASE_LEN]; |
| } NanSecurityPassPhrase; |
| |
| typedef struct { |
| NanSecurityKeyInputType key_type; |
| union { |
| NanSecurityPmk pmk_info; |
| NanSecurityPassPhrase passphrase_info; |
| } body; |
| } NanSecurityKeyInfo; |
| |
| /* NAN Security Cipher Suites Mask */ |
| #define NAN_CIPHER_SUITE_SHARED_KEY_NONE 0x00 |
| #define NAN_CIPHER_SUITE_SHARED_KEY_128_MASK 0x01 |
| #define NAN_CIPHER_SUITE_SHARED_KEY_256_MASK 0x02 |
| #define NAN_CIPHER_SUITE_PUBLIC_KEY_2WDH_128_MASK 0x04 |
| #define NAN_CIPHER_SUITE_PUBLIC_KEY_2WDH_256_MASK 0x08 |
| #define NAN_CIPHER_SUITE_PUBLIC_KEY_PASN_128_MASK 0x40 |
| #define NAN_CIPHER_SUITE_PUBLIC_KEY_PASN_256_MASK 0x80 |
| |
| /* NAN ranging indication condition MASKS */ |
| #define NAN_RANGING_INDICATE_CONTINUOUS_MASK 0x01 |
| #define NAN_RANGING_INDICATE_INGRESS_MET_MASK 0x02 |
| #define NAN_RANGING_INDICATE_EGRESS_MET_MASK 0x04 |
| |
| /* NAN schedule update reason MASKS */ |
| #define NAN_SCHEDULE_UPDATE_NSS_MASK 0x01 |
| #define NAN_SCHEDULE_UPDATE_CHANNEL_MASK 0x02 |
| |
| /* NAN pairing bootstrapping method */ |
| #define NAN_PAIRING_BOOTSTRAPPING_OPPORTUNISTIC_MASK 0x01 |
| #define NAN_PAIRING_BOOTSTRAPPING_PIN_CODE_DISPLAY_MASK 0x02 |
| #define NAN_PAIRING_BOOTSTRAPPING_PASSPHRASE_DISPLAY_MASK 0x04 |
| #define NAN_PAIRING_BOOTSTRAPPING_QR_DISPLAY_MASK 0x08 |
| #define NAN_PAIRING_BOOTSTRAPPING_NFC_TAG_MASK 0x10 |
| #define NAN_PAIRING_BOOTSTRAPPING_PIN_CODE_KEYPAD_MASK 0x20 |
| #define NAN_PAIRING_BOOTSTRAPPING_PASSPHRASE_KEYPAD_MASK 0x40 |
| #define NAN_PAIRING_BOOTSTRAPPING_QR_SCAN_MASK 0x80 |
| #define NAN_PAIRING_BOOTSTRAPPING_NFC_READER_MASK 0x100 |
| #define NAN_PAIRING_BOOTSTRAPPING_SERVICE_MANAGED_MASK 0x4000 |
| #define NAN_PAIRING_BOOTSTRAPPING_HANDSHAKE_SHIP_MASK 0x8000 |
| |
| /* |
| Structure to set the Service Descriptor Extension |
| Attribute (SDEA) passed as part of NanPublishRequest/ |
| NanSubscribeRequest/NanMatchInd. |
| */ |
| typedef struct { |
| /* |
| Optional configuration of Data Path Enable request. |
| configure flag determines whether configuration needs |
| to be passed or not. |
| */ |
| u8 config_nan_data_path; |
| NdpType ndp_type; |
| /* |
| NAN secuirty required flag to indicate |
| if the security is enabled or disabled |
| */ |
| NanDataPathSecurityCfgStatus security_cfg; |
| /* |
| NAN ranging required flag to indicate |
| if ranging is enabled on disabled |
| */ |
| NanRangingState ranging_state; |
| /* |
| Enable/Disable Ranging report, |
| when configured NanRangeReportInd received |
| */ |
| NanRangeReport range_report; |
| /* |
| NAN QOS required flag to indicate |
| if QOS is required or not. |
| */ |
| NanQosCfgStatus qos_cfg; |
| /* |
| Config to set FSD with Gas bit |
| in the SDEA Control Field. |
| */ |
| u8 config_fsd_gas; |
| u8 enable_fsd_gas; |
| |
| /* |
| Config to set FSD Required bit |
| in the SDEA Control Field. |
| */ |
| u8 config_fsd_req; |
| u8 enable_fsd_req; |
| |
| /* |
| Config to set gtk protection bit |
| in the SDEA Control Field. |
| */ |
| u8 gtk_protection; |
| } NanSdeaCtrlParams; |
| |
| /* |
| Nan Ranging Peer Info in MatchInd |
| */ |
| typedef struct { |
| /* |
| Distance to the NAN device with the MAC address indicated |
| with ranged mac address. |
| */ |
| u32 range_measurement_mm; |
| /* Ranging event matching the configuration of continuous/ingress/egress. */ |
| u32 ranging_event_type; |
| } NanRangeInfo; |
| |
| /* Nan/NDP Capabilites info */ |
| typedef struct { |
| u32 max_concurrent_nan_clusters; |
| u32 max_publishes; |
| u32 max_subscribes; |
| u32 max_service_name_len; |
| u32 max_match_filter_len; |
| u32 max_total_match_filter_len; |
| u32 max_service_specific_info_len; |
| u32 max_vsa_data_len; |
| u32 max_mesh_data_len; |
| u32 max_ndi_interfaces; |
| u32 max_ndp_sessions; |
| u32 max_app_info_len; |
| u32 max_queued_transmit_followup_msgs; |
| u32 ndp_supported_bands; |
| u32 cipher_suites_supported; |
| u32 max_scid_len; |
| bool is_ndp_security_supported; |
| u32 max_sdea_service_specific_info_len; |
| u32 max_subscribe_address; |
| u32 ndpe_attr_supported; |
| bool is_instant_mode_supported; |
| bool is_6g_supported; |
| bool is_he_supported; |
| bool is_pairing_supported; |
| bool is_set_cluster_id_supported; |
| bool is_suspension_supported; |
| } NanCapabilities; |
| |
| /* |
| Nan accept policy: Per service basis policy |
| Based on this policy(ALL/NONE), responder side |
| will send ACCEPT/REJECT |
| */ |
| typedef enum { |
| NAN_SERVICE_ACCEPT_POLICY_NONE = 0, |
| /* Default value */ |
| NAN_SERVICE_ACCEPT_POLICY_ALL |
| } NanServiceAcceptPolicy; |
| |
| /* |
| Host can send Vendor specific attributes which the Discovery Engine can |
| enclose in Beacons and/or Service Discovery frames transmitted. |
| Below structure is used to populate that. |
| */ |
| typedef struct { |
| /* |
| 0 = transmit only in the next discovery window |
| 1 = transmit in next 16 discovery window |
| */ |
| u8 payload_transmit_flag; |
| /* |
| Below flags will determine in which all frames |
| the vendor specific attributes should be included |
| */ |
| u8 tx_in_discovery_beacon; |
| u8 tx_in_sync_beacon; |
| u8 tx_in_service_discovery; |
| /* Organizationally Unique Identifier */ |
| u32 vendor_oui; |
| /* |
| vendor specific attribute to be transmitted |
| vsa_len : Length of the vsa data. |
| */ |
| u32 vsa_len; |
| u8 vsa[NAN_MAX_VSA_DATA_LEN]; |
| } NanTransmitVendorSpecificAttribute; |
| |
| |
| /* |
| Discovery Engine will forward any Vendor Specific Attributes |
| which it received as part of this structure. |
| */ |
| /* Mask to determine on which frames attribute was received */ |
| #define RX_DISCOVERY_BEACON_MASK 0x01 |
| #define RX_SYNC_BEACON_MASK 0x02 |
| #define RX_SERVICE_DISCOVERY_MASK 0x04 |
| typedef struct { |
| /* |
| Frames on which this vendor specific attribute |
| was received. Mask defined above |
| */ |
| u8 vsa_received_on; |
| /* Organizationally Unique Identifier */ |
| u32 vendor_oui; |
| /* vendor specific attribute */ |
| u32 attr_len; |
| u8 vsa[NAN_MAX_VSA_DATA_LEN]; |
| } NanReceiveVendorSpecificAttribute; |
| |
| /* |
| NAN Beacon SDF Payload Received structure |
| Discovery engine sends the details of received Beacon or |
| Service Discovery Frames as part of this structure. |
| */ |
| typedef struct { |
| /* Frame data */ |
| u32 frame_len; |
| u8 frame_data[NAN_MAX_FRAME_DATA_LEN]; |
| } NanBeaconSdfPayloadReceive; |
| |
| /* |
| Host can set the Periodic scan parameters for each of the |
| 3(6, 44, 149) Social channels. Only these channels are allowed |
| any other channels are rejected |
| */ |
| typedef enum { |
| NAN_CHANNEL_24G_BAND = 0, |
| NAN_CHANNEL_5G_BAND_LOW, |
| NAN_CHANNEL_5G_BAND_HIGH |
| } NanChannelIndex; |
| |
| /* |
| Structure to set the Social Channel Scan parameters |
| passed as part of NanEnableRequest/NanConfigRequest |
| */ |
| typedef struct { |
| /* |
| Dwell time of each social channel in milliseconds |
| NanChannelIndex corresponds to the respective channel |
| If time set to 0 then the FW default time will be used. |
| */ |
| u8 dwell_time[NAN_MAX_SOCIAL_CHANNELS]; // default value 200 msec |
| |
| /* |
| Scan period of each social channel in seconds |
| NanChannelIndex corresponds to the respective channel |
| If time set to 0 then the FW default time will be used. |
| */ |
| u16 scan_period[NAN_MAX_SOCIAL_CHANNELS]; // default value 20 sec |
| } NanSocialChannelScanParams; |
| |
| /* |
| Host can send Post Connectivity Capability attributes |
| to be included in Service Discovery frames transmitted |
| as part of this structure. |
| */ |
| typedef struct { |
| /* |
| 0 = transmit only in the next discovery window |
| 1 = transmit in next 16 discovery window |
| */ |
| u8 payload_transmit_flag; |
| /* 1 - Wifi Direct supported 0 - Not supported */ |
| u8 is_wfd_supported; |
| /* 1 - Wifi Direct Services supported 0 - Not supported */ |
| u8 is_wfds_supported; |
| /* 1 - TDLS supported 0 - Not supported */ |
| u8 is_tdls_supported; |
| /* 1 - IBSS supported 0 - Not supported */ |
| u8 is_ibss_supported; |
| /* 1 - Mesh supported 0 - Not supported */ |
| u8 is_mesh_supported; |
| /* |
| 1 - NAN Device currently connect to WLAN Infra AP |
| 0 - otherwise |
| */ |
| u8 wlan_infra_field; |
| } NanTransmitPostConnectivityCapability; |
| |
| /* |
| Discovery engine providing the post connectivity capability |
| received. |
| */ |
| typedef struct { |
| /* 1 - Wifi Direct supported 0 - Not supported */ |
| u8 is_wfd_supported; |
| /* 1 - Wifi Direct Services supported 0 - Not supported */ |
| u8 is_wfds_supported; |
| /* 1 - TDLS supported 0 - Not supported */ |
| u8 is_tdls_supported; |
| /* 1 - IBSS supported 0 - Not supported */ |
| u8 is_ibss_supported; |
| /* 1 - Mesh supported 0 - Not supported */ |
| u8 is_mesh_supported; |
| /* |
| 1 - NAN Device currently connect to WLAN Infra AP |
| 0 - otherwise |
| */ |
| u8 wlan_infra_field; |
| } NanReceivePostConnectivityCapability; |
| |
| /* |
| Indicates the availability interval duration associated with the |
| Availability Intervals Bitmap field |
| */ |
| typedef enum { |
| NAN_DURATION_16MS = 0, |
| NAN_DURATION_32MS = 1, |
| NAN_DURATION_64MS = 2 |
| } NanAvailDuration; |
| |
| /* Further availability per channel information */ |
| typedef struct { |
| /* Defined above */ |
| NanAvailDuration entry_control; |
| /* |
| 1 byte field indicating the frequency band the NAN Device |
| will be available as defined in IEEE Std. 802.11-2012 |
| Annex E Table E-4 Global Operating Classes |
| */ |
| u8 class_val; |
| /* |
| 1 byte field indicating the channel the NAN Device |
| will be available. |
| */ |
| u8 channel; |
| /* |
| Map Id - 4 bit field which identifies the Further |
| availability map attribute. |
| */ |
| u8 mapid; |
| /* |
| divides the time between the beginnings of consecutive Discovery |
| Windows of a given NAN cluster into consecutive time intervals |
| of equal durations. The time interval duration is specified by |
| the Availability Interval Duration subfield of the Entry Control |
| field. |
| |
| A Nan device that sets the i-th bit of the Availability |
| Intervals Bitmap to 1 shall be present during the corresponding |
| i-th time interval in the operation channel indicated by the |
| Operating Class and Channel Number fields in the same Availability Entry. |
| |
| A Nan device that sets the i-th bit of the Availability Intervals Bitmap to |
| 0 may be present during the corresponding i-th time interval in the operation |
| channel indicated by the Operating Class and Channel Number fields in the same |
| Availability Entry. |
| |
| The size of the Bitmap is dependent upon the Availability Interval Duration |
| chosen in the Entry Control Field. The size can be either 1, 2 or 4 bytes long |
| |
| - Duration field is equal to 0, only AIB[0] is valid |
| - Duration field is equal to 1, only AIB [0] and AIB [1] is valid |
| - Duration field is equal to 2, AIB [0], AIB [1], AIB [2] and AIB [3] are valid |
| */ |
| u32 avail_interval_bitmap; |
| } NanFurtherAvailabilityChannel; |
| |
| /* |
| Further availability map which can be sent and received from |
| Discovery engine |
| */ |
| typedef struct { |
| /* |
| Number of channels indicates the number of channel |
| entries which is part of fam |
| */ |
| u8 numchans; |
| NanFurtherAvailabilityChannel famchan[NAN_MAX_FAM_CHANNELS]; |
| } NanFurtherAvailabilityMap; |
| |
| /* |
| Host can send Post-Nan Discovery attributes which the Discovery Engine can |
| enclose in Service Discovery frames |
| */ |
| /* Possible connection types in Post NAN Discovery attributes */ |
| typedef enum { |
| NAN_CONN_WLAN_INFRA = 0, |
| NAN_CONN_P2P_OPER = 1, |
| NAN_CONN_WLAN_IBSS = 2, |
| NAN_CONN_WLAN_MESH = 3, |
| NAN_CONN_FURTHER_SERVICE_AVAILABILITY = 4, |
| NAN_CONN_WLAN_RANGING = 5 |
| } NanConnectionType; |
| |
| /* Possible device roles in Post NAN Discovery attributes */ |
| typedef enum { |
| NAN_WLAN_INFRA_AP = 0, |
| NAN_WLAN_INFRA_STA = 1, |
| NAN_P2P_OPER_GO = 2, |
| NAN_P2P_OPER_DEV = 3, |
| NAN_P2P_OPER_CLI = 4 |
| } NanDeviceRole; |
| |
| /* Configuration params of NAN Ranging */ |
| typedef struct { |
| /* |
| Interval in milli sec between two ranging measurements. |
| If the Awake DW intervals in NanEnable/Config are larger |
| than the ranging intervals priority is given to Awake DW |
| Intervals. Only on a match the ranging is initiated for the |
| peer |
| */ |
| u32 ranging_interval_msec; |
| /* |
| Flags indicating the type of ranging event to be notified |
| NAN_RANGING_INDICATE_ MASKS are used to set these. |
| BIT0 - Continuous Ranging event notification. |
| BIT1 - Ingress distance is <=. |
| BIT2 - Egress distance is >=. |
| */ |
| u32 config_ranging_indications; |
| /* Ingress distance in millimeters (optional) */ |
| u32 distance_ingress_mm; |
| /* Egress distance in millmilliimeters (optional) */ |
| u32 distance_egress_mm; |
| } NanRangingCfg; |
| |
| /* NAN Ranging request's response */ |
| typedef struct { |
| /* Publish Id of an earlier Publisher */ |
| u16 publish_id; |
| /* |
| A 32 bit Requestor instance Id which is sent to the Application. |
| This Id will be used in subsequent RangeResponse on Subscribe side. |
| */ |
| u32 requestor_instance_id; |
| /* Peer MAC addr of Range Requestor */ |
| u8 peer_addr[NAN_MAC_ADDR_LEN]; |
| /* Response indicating ACCEPT/REJECT/CANCEL of Range Request */ |
| NanRangeResponse ranging_response; |
| } NanRangeResponseCfg; |
| |
| /* Structure of Post NAN Discovery attribute */ |
| typedef struct { |
| /* Connection type of the host */ |
| NanConnectionType type; |
| /* |
| Device role of the host based on |
| the connection type |
| */ |
| NanDeviceRole role; |
| /* |
| Flag to send the information as a single shot or repeated |
| for next 16 discovery windows |
| 0 - Single_shot |
| 1 - next 16 discovery windows |
| */ |
| u8 transmit_freq; |
| /* Duration of the availability bitmask */ |
| NanAvailDuration duration; |
| /* Availability interval bitmap based on duration */ |
| u32 avail_interval_bitmap; |
| /* |
| Mac address depending on the conn type and device role |
| -------------------------------------------------- |
| | Conn Type | Device Role | Mac address Usage | |
| -------------------------------------------------- |
| | WLAN_INFRA | AP/STA | BSSID of the AP | |
| -------------------------------------------------- |
| | P2P_OPER | GO | GO's address | |
| -------------------------------------------------- |
| | P2P_OPER | P2P_DEVICE | Address of who | |
| | | | would become GO | |
| -------------------------------------------------- |
| | WLAN_IBSS | NA | BSSID | |
| -------------------------------------------------- |
| | WLAN_MESH | NA | BSSID | |
| -------------------------------------------------- |
| */ |
| u8 addr[NAN_MAC_ADDR_LEN]; |
| /* |
| Mandatory mesh id value if connection type is WLAN_MESH |
| Mesh id contains 0-32 octet identifier and should be |
| as per IEEE Std.802.11-2012 spec. |
| */ |
| u16 mesh_id_len; |
| u8 mesh_id[NAN_MAX_MESH_DATA_LEN]; |
| /* |
| Optional infrastructure SSID if conn_type is set to |
| NAN_CONN_WLAN_INFRA |
| */ |
| u16 infrastructure_ssid_len; |
| u8 infrastructure_ssid_val[NAN_MAX_INFRA_DATA_LEN]; |
| } NanTransmitPostDiscovery; |
| |
| /* |
| Discovery engine providing the structure of Post NAN |
| Discovery |
| */ |
| typedef struct { |
| /* Connection type of the host */ |
| NanConnectionType type; |
| /* |
| Device role of the host based on |
| the connection type |
| */ |
| NanDeviceRole role; |
| /* Duration of the availability bitmask */ |
| NanAvailDuration duration; |
| /* Availability interval bitmap based on duration */ |
| u32 avail_interval_bitmap; |
| /* |
| Map Id - 4 bit field which identifies the Further |
| availability map attribute. |
| */ |
| u8 mapid; |
| /* |
| Mac address depending on the conn type and device role |
| -------------------------------------------------- |
| | Conn Type | Device Role | Mac address Usage | |
| -------------------------------------------------- |
| | WLAN_INFRA | AP/STA | BSSID of the AP | |
| -------------------------------------------------- |
| | P2P_OPER | GO | GO's address | |
| -------------------------------------------------- |
| | P2P_OPER | P2P_DEVICE | Address of who | |
| | | | would become GO | |
| -------------------------------------------------- |
| | WLAN_IBSS | NA | BSSID | |
| -------------------------------------------------- |
| | WLAN_MESH | NA | BSSID | |
| -------------------------------------------------- |
| */ |
| u8 addr[NAN_MAC_ADDR_LEN]; |
| /* |
| Mandatory mesh id value if connection type is WLAN_MESH |
| Mesh id contains 0-32 octet identifier and should be |
| as per IEEE Std.802.11-2012 spec. |
| */ |
| u16 mesh_id_len; |
| u8 mesh_id[NAN_MAX_MESH_DATA_LEN]; |
| /* |
| Optional infrastructure SSID if conn_type is set to |
| NAN_CONN_WLAN_INFRA |
| */ |
| u16 infrastructure_ssid_len; |
| u8 infrastructure_ssid_val[NAN_MAX_INFRA_DATA_LEN]; |
| } NanReceivePostDiscovery; |
| |
| /* |
| NAN device level configuration of SDF and Sync beacons in both |
| 2.4/5GHz bands |
| */ |
| typedef struct { |
| /* Configure 2.4GHz DW Band */ |
| u8 config_2dot4g_dw_band; |
| /* |
| Indicates the interval for Sync beacons and SDF's in 2.4GHz band. |
| Valid values of DW Interval are: 1, 2, 3, 4 and 5, 0 is reserved. |
| The SDF includes in OTA when enabled. The publish/subscribe period |
| values don't override the device level configurations. |
| */ |
| u32 dw_2dot4g_interval_val; // default value 1 |
| /* Configure 5GHz DW Band */ |
| u8 config_5g_dw_band; |
| /* |
| Indicates the interval for Sync beacons and SDF's in 5GHz band |
| Valid values of DW Interval are: 1, 2, 3, 4 and 5, 0 no wake up for |
| any interval. The SDF includes in OTA when enabled. The publish/subscribe |
| period values don't override the device level configurations. |
| */ |
| u32 dw_5g_interval_val; // default value 1 when 5G is enabled |
| } NanConfigDW; |
| |
| /* |
| Enable Request Message Structure |
| The NanEnableReq message instructs the Discovery Engine to enter an operational state |
| */ |
| typedef struct { |
| /* Mandatory parameters below */ |
| u8 master_pref; // default value 0x02 |
| /* |
| A cluster_low value matching cluster_high indicates a request to join |
| a cluster with that value. If the requested cluster is not found the |
| device will start its own cluster. |
| */ |
| u16 cluster_low; // default value 0 |
| u16 cluster_high; // default value 0xFFFF |
| |
| /* |
| Optional configuration of Enable request. |
| Each of the optional parameters have configure flag which |
| determine whether configuration is to be passed or not. |
| */ |
| u8 config_support_5g; |
| u8 support_5g_val; // default value 0; turned off by default |
| /* |
| BIT 0 is used to specify to include Service IDs in Sync/Discovery beacons |
| 0 - Do not include SIDs in any beacons |
| 1 - Include SIDs in all beacons. |
| Rest 7 bits are count field which allows control over the number of SIDs |
| included in the Beacon. 0 means to include as many SIDs that fit into |
| the maximum allow Beacon frame size |
| */ |
| u8 config_sid_beacon; |
| u8 sid_beacon_val; // default value 0x01 |
| /* |
| The rssi values below should be specified without sign. |
| For eg: -70dBm should be specified as 70. |
| */ |
| u8 config_2dot4g_rssi_close; |
| u8 rssi_close_2dot4g_val; // default value -60 dBm |
| |
| u8 config_2dot4g_rssi_middle; |
| u8 rssi_middle_2dot4g_val; // default value -70 dBm |
| |
| u8 config_2dot4g_rssi_proximity; |
| u8 rssi_proximity_2dot4g_val;// default value -60dBm |
| |
| u8 config_hop_count_limit; |
| u8 hop_count_limit_val; // default value 0x02 |
| |
| /* |
| Defines 2.4G channel access support |
| 0 - No Support |
| 1 - Supported |
| */ |
| u8 config_2dot4g_support; |
| u8 support_2dot4g_val; // default value 0x01 |
| /* |
| Defines 2.4G channels will be used for sync/discovery beacons |
| 0 - 2.4G channels not used for beacons |
| 1 - 2.4G channels used for beacons |
| */ |
| u8 config_2dot4g_beacons; |
| u8 beacon_2dot4g_val; // default value 1 |
| /* |
| Defines 2.4G channels will be used for Service Discovery frames |
| 0 - 2.4G channels not used for Service Discovery frames |
| 1 - 2.4G channels used for Service Discovery frames |
| */ |
| u8 config_2dot4g_sdf; |
| u8 sdf_2dot4g_val; // default value 1 |
| /* |
| Defines 5G channels will be used for sync/discovery beacons |
| 0 - 5G channels not used for beacons |
| 1 - 5G channels used for beacons |
| */ |
| u8 config_5g_beacons; |
| u8 beacon_5g_val; // default value 1 when 5G is enabled |
| /* |
| Defines 5G channels will be used for Service Discovery frames |
| 0 - 5G channels not used for Service Discovery frames |
| 1 - 5G channels used for Service Discovery frames |
| */ |
| u8 config_5g_sdf; |
| u8 sdf_5g_val; // default value is 0 when 5G is enabled |
| /* |
| 1 byte value which defines the RSSI in |
| dBm for a close by Peer in 5 Ghz channels. |
| The rssi values should be specified without sign. |
| For eg: -70dBm should be specified as 70. |
| */ |
| u8 config_5g_rssi_close; |
| u8 rssi_close_5g_val; // default value -60dBm when 5G is enabled |
| /* |
| 1 byte value which defines the RSSI value in |
| dBm for a close by Peer in 5 Ghz channels. |
| The rssi values should be specified without sign. |
| For eg: -70dBm should be specified as 70. |
| */ |
| u8 config_5g_rssi_middle; |
| u8 rssi_middle_5g_val; // default value -75dBm when 5G is enabled |
| /* |
| 1 byte value which defines the RSSI filter |
| threshold. Any Service Descriptors received above this |
| value that are configured for RSSI filtering will be dropped. |
| The rssi values should be specified without sign. |
| For eg: -70dBm should be specified as 70. |
| */ |
| u8 config_5g_rssi_close_proximity; |
| u8 rssi_close_proximity_5g_val; // default value -60dBm when 5G is enabled |
| /* |
| 1 byte quantity which defines the window size over |
| which the “average RSSI” will be calculated over. |
| */ |
| u8 config_rssi_window_size; |
| u8 rssi_window_size_val; // default value 0x08 |
| /* |
| The 24 bit Organizationally Unique ID + the 8 bit Network Id. |
| */ |
| u8 config_oui; |
| u32 oui_val; // default value {0x51, 0x6F, 0x9A, 0x01, 0x00, 0x00} |
| /* |
| NAN Interface Address, If not configured the Discovery Engine |
| will generate a 6 byte Random MAC. |
| */ |
| u8 config_intf_addr; |
| u8 intf_addr_val[NAN_MAC_ADDR_LEN]; |
| /* |
| If set to 1, the Discovery Engine will enclose the Cluster |
| Attribute only sent in Beacons in a Vendor Specific Attribute |
| and transmit in a Service Descriptor Frame. |
| */ |
| u8 config_cluster_attribute_val; |
| /* |
| The periodicity in seconds between full scan’s to find any new |
| clusters available in the area. A Full scan should not be done |
| more than every 10 seconds and should not be done less than every |
| 30 seconds. |
| */ |
| u8 config_scan_params; |
| NanSocialChannelScanParams scan_params_val; |
| /* |
| 1 byte quantity which forces the Random Factor to a particular |
| value for all transmitted Sync/Discovery beacons |
| */ |
| u8 config_random_factor_force; |
| u8 random_factor_force_val; // default value off and set to 0x00 |
| /* |
| 1 byte quantity which forces the HC for all transmitted Sync and |
| Discovery Beacon NO matter the real HC being received over the |
| air. |
| */ |
| u8 config_hop_count_force; |
| u8 hop_count_force_val; // default value 0x00 |
| |
| /* channel frequency in MHz to enable Nan on */ |
| u8 config_24g_channel; |
| wifi_channel channel_24g_val; // default value channel 0x6 |
| |
| u8 config_5g_channel; |
| wifi_channel channel_5g_val; // default value channel 44 or 149 regulatory |
| // domain |
| /* Configure 2.4/5GHz DW */ |
| NanConfigDW config_dw; |
| |
| /* |
| By default discovery MAC address randomization is enabled |
| and default interval value is 30 minutes i.e. 1800 seconds. |
| The value 0 is used to disable MAC addr randomization. |
| */ |
| u8 config_disc_mac_addr_randomization; |
| u32 disc_mac_addr_rand_interval_sec; // default value 1800 sec |
| |
| /* |
| Set/Enable corresponding bits to disable Discovery indications: |
| BIT0 - Disable Discovery MAC Address Event. |
| BIT1 - Disable Started Cluster Event. |
| BIT2 - Disable Joined Cluster Event. |
| */ |
| u8 discovery_indication_cfg; // default value 0x0 |
| /* |
| BIT 0 is used to specify to include Service IDs in Sync/Discovery beacons |
| 0 - Do not include SIDs in any beacons |
| 1 - Include SIDs in all beacons. |
| Rest 7 bits are count field which allows control over the number of SIDs |
| included in the Beacon. 0 means to include as many SIDs that fit into |
| the maximum allow Beacon frame size |
| */ |
| u8 config_subscribe_sid_beacon; |
| u32 subscribe_sid_beacon_val; // default value 0x0 |
| /* |
| Discovery Beacon Interval config. |
| Default value is 128 msec in 2G DW and 176 msec in 2G/5G DW. |
| When 0 value is passed it is reset to default value of 128 or 176 msec. |
| */ |
| u8 config_discovery_beacon_int; |
| u32 discovery_beacon_interval; |
| /* |
| Enable Number of Spatial Streams. |
| This is NAN Power Optimization feature for NAN discovery. |
| */ |
| u8 config_nss; |
| // default value is implementation specific and passing 0 sets it to default |
| u32 nss; |
| /* |
| Enable device level NAN Ranging feature. |
| 0 - Disable |
| 1 - Enable |
| */ |
| u8 config_enable_ranging; |
| u32 enable_ranging; |
| /* |
| Enable/Disable DW Early termination. |
| 0 - Disable |
| 1 - Enable |
| */ |
| u8 config_dw_early_termination; |
| u32 enable_dw_termination; |
| /* |
| Indicate whether to use NDPE attribute to bring-up TCP/IP connection. |
| If config_ndpe_attr is not configured, the default behavior is |
| not using NDPE attr, and the capability is not advertised. |
| 0 - Not use |
| 1 - Use |
| */ |
| u8 config_ndpe_attr; |
| u32 use_ndpe_attr; |
| /* |
| Enable NAN v3.1 instant communication mode. |
| 0 - Disable |
| 1 - Enable |
| */ |
| u8 config_enable_instant_mode; |
| u32 enable_instant_mode; |
| /* |
| Config NAN v3.1 instant communication channel frequency selected over NFC/OOB method. |
| If dual band is supported default channel is 149 or 44 as per regulatory domain, |
| else channel 6 (send frequency in MHz). |
| Sometimes depending on country code retrictions, even 149/44 may be restricted |
| in those cases instant channel will be operational only in 2.4GHz. |
| Use wifi_get_usable_channels() API to get supported bands/channels before |
| Instant mode NFC handshake is triggered |
| */ |
| u8 config_instant_mode_channel; |
| wifi_channel instant_mode_channel; |
| |
| /* |
| Enable/Disable unsync service discovery. |
| 0 - Disable |
| 1 - Enable |
| */ |
| u8 config_unsync_srvdsc; |
| u8 enable_unsync_srvdsc; |
| |
| /* |
| Configure regulatory information. |
| */ |
| u8 config_reg_info; |
| u8 reg_info_val; |
| } NanEnableRequest; |
| |
| /* |
| NAN pairing config. |
| */ |
| typedef struct { |
| |
| /* |
| Enable Nan pairing setup |
| */ |
| u32 enable_pairing_setup; |
| |
| /* |
| Enable cache NIK/NPK after Nan pairing setup |
| */ |
| u32 enable_pairing_cache; |
| |
| /* |
| Enable Nan pairing verification with cached NIK/NPK |
| */ |
| u32 enable_pairing_verification; |
| |
| /* |
| The set of supported bootstrapping methods. |
| */ |
| u16 supported_bootstrapping_methods; |
| } NanPairingConfig; |
| |
| /* |
| Publish Msg Structure |
| Message is used to request the DE to publish the Service Name |
| using the parameters passed into the Discovery Window |
| */ |
| typedef struct { |
| u16 publish_id;/* id 0 means new publish, any other id is existing publish */ |
| u16 ttl; /* how many seconds to run for. 0 means forever until canceled */ |
| /* |
| period: Awake DW Interval for publish(service) |
| Indicates the interval between two Discovery Windows in which |
| the device supporting the service is awake to transmit or |
| receive the Service Discovery frames. |
| Valid values of Awake DW Interval are: 1, 2, 4, 8 and 16, value 0 will |
| default to 1. |
| */ |
| u16 period; |
| NanPublishType publish_type;/* 0= unsolicited, solicited = 1, 2= both */ |
| NanTxType tx_type; /* 0 = broadcast, 1= unicast if solicited publish */ |
| u8 publish_count; /* number of OTA Publish, 0 means forever until canceled */ |
| u16 service_name_len; /* length of service name */ |
| u8 service_name[NAN_MAX_SERVICE_NAME_LEN];/* UTF-8 encoded string identifying the service */ |
| /* |
| Field which specifies how the matching indication to host is controlled. |
| 0 - Match and Indicate Once |
| 1 - Match and Indicate continuous |
| 2 - Match and Indicate never. This means don't indicate the match to the host. |
| 3 - Reserved |
| */ |
| NanMatchAlg publish_match_indicator; |
| |
| /* |
| Sequence of values |
| NAN Device that has invoked a Subscribe method corresponding to this Publish method |
| */ |
| u16 service_specific_info_len; |
| u8 service_specific_info[NAN_MAX_SERVICE_SPECIFIC_INFO_LEN]; |
| |
| /* |
| Ordered sequence of <length, value> pairs which specify further response conditions |
| beyond the service name used to filter subscribe messages to respond to. |
| This is only needed when the PT is set to NAN_SOLICITED or NAN_SOLICITED_UNSOLICITED. |
| */ |
| u16 rx_match_filter_len; |
| u8 rx_match_filter[NAN_MAX_MATCH_FILTER_LEN]; |
| |
| /* |
| Ordered sequence of <length, value> pairs to be included in the Discovery Frame. |
| If present it is always sent in a Discovery Frame |
| */ |
| u16 tx_match_filter_len; |
| u8 tx_match_filter[NAN_MAX_MATCH_FILTER_LEN]; |
| |
| /* |
| flag which specifies that the Publish should use the configured RSSI |
| threshold and the received RSSI in order to filter requests |
| 0 – ignore the configured RSSI threshold when running a Service |
| Descriptor attribute or Service ID List Attribute through the DE matching logic. |
| 1 – use the configured RSSI threshold when running a Service |
| Descriptor attribute or Service ID List Attribute through the DE matching logic. |
| |
| */ |
| u8 rssi_threshold_flag; |
| |
| /* |
| 8-bit bitmap which allows the Host to associate this publish |
| with a particular Post-NAN Connectivity attribute |
| which has been sent down in a NanConfigureRequest/NanEnableRequest |
| message. If the DE fails to find a configured Post-NAN |
| connectivity attributes referenced by the bitmap, |
| the DE will return an error code to the Host. |
| If the Publish is configured to use a Post-NAN Connectivity |
| attribute and the Host does not refresh the Post-NAN Connectivity |
| attribute the Publish will be canceled and the Host will be sent |
| a PublishTerminatedIndication message. |
| */ |
| u8 connmap; |
| /* |
| Set/Enable corresponding bits to disable any indications that follow a publish. |
| BIT0 - Disable publish termination indication. |
| BIT1 - Disable match expired indication. |
| BIT2 - Disable followUp indication received (OTA). |
| BIT3 - Disable publishReplied indication. |
| */ |
| u8 recv_indication_cfg; |
| /* |
| Nan accept policy for the specific service(publish) |
| */ |
| NanServiceAcceptPolicy service_responder_policy; |
| /* NAN Cipher Suite Type */ |
| u32 cipher_type; |
| /* |
| Nan Security Key Info is optional in Discovery phase. |
| PMK or passphrase info can be passed during |
| the NDP session. |
| */ |
| NanSecurityKeyInfo key_info; |
| |
| /* Security Context Identifiers length */ |
| u32 scid_len; |
| /* |
| Security Context Identifier attribute contains PMKID |
| shall be included in NDP setup and response messages. |
| Security Context Identifier, Identifies the Security |
| Context. For NAN Shared Key Cipher Suite, this field |
| contains the 16 octet PMKID identifying the PMK used |
| for setting up the Secure Data Path. |
| */ |
| u8 scid[NAN_MAX_SCID_BUF_LEN]; |
| |
| /* NAN configure service discovery extended attributes */ |
| NanSdeaCtrlParams sdea_params; |
| |
| /* NAN Ranging configuration */ |
| NanRangingCfg ranging_cfg; |
| |
| /* Enable/disable NAN serivce Ranging auto response mode */ |
| NanRangingAutoResponse ranging_auto_response; |
| |
| /* |
| When the ranging_auto_response_cfg is not set, NanRangeRequestInd is |
| received. Nan Range Response to Peer MAC Addr is notified to indicate |
| ACCEPT/REJECT/CANCEL to the requestor. |
| */ |
| NanRangeResponseCfg range_response_cfg; |
| |
| /* |
| Sequence of values indicating the service specific info in SDEA |
| */ |
| u16 sdea_service_specific_info_len; |
| u8 sdea_service_specific_info[NAN_MAX_SDEA_SERVICE_SPECIFIC_INFO_LEN]; |
| |
| /* |
| The Identity key for pairing, used to generate NIRA |
| */ |
| u8 nan_identity_key[NAN_IDENTITY_KEY_LEN]; |
| |
| /* |
| The config for Nan pairing |
| */ |
| NanPairingConfig nan_pairing_config; |
| |
| /* |
| Specifies whether suspension can be possible in this publish session. |
| The request would fail if enable_suspendability is true but |
| is_suspension_supported is false in NanCapabilities. |
| */ |
| bool enable_suspendability; |
| |
| /* s3 capabilities */ |
| u16 s3_capabilities; |
| |
| /* cipher capabilities */ |
| u8 cipher_capabilities; |
| } NanPublishRequest; |
| |
| /* |
| Publish Cancel Msg Structure |
| The PublishServiceCancelReq Message is used to request the DE to stop publishing |
| the Service Name identified by the Publish Id in the message. |
| */ |
| typedef struct { |
| u16 publish_id; |
| } NanPublishCancelRequest; |
| |
| /* |
| NAN Subscribe Structure |
| The SubscribeServiceReq message is sent to the Discovery Engine |
| whenever the Upper layers would like to listen for a Service Name |
| */ |
| typedef struct { |
| u16 subscribe_id; /* id 0 means new subscribe, non zero is existing subscribe */ |
| u16 ttl; /* how many seconds to run for. 0 means forever until canceled */ |
| /* |
| period: Awake DW Interval for subscribe(service) |
| Indicates the interval between two Discovery Windows in which |
| the device supporting the service is awake to transmit or |
| receive the Service Discovery frames. |
| Valid values of Awake DW Interval are: 1, 2, 4, 8 and 16, value 0 will |
| default to 1. |
| */ |
| u16 period; |
| |
| /* Flag which specifies how the Subscribe request shall be processed. */ |
| NanSubscribeType subscribe_type; /* 0 - PASSIVE , 1- ACTIVE */ |
| |
| /* Flag which specifies on Active Subscribes how the Service Response Filter attribute is populated.*/ |
| NanSRFType serviceResponseFilter; /* 0 - Bloom Filter, 1 - MAC Addr */ |
| |
| /* Flag which specifies how the Service Response Filter Include bit is populated.*/ |
| NanSRFIncludeType serviceResponseInclude; /* 0=Do not respond if in the Address Set, 1= Respond */ |
| |
| /* Flag which specifies if the Service Response Filter should be used when creating Subscribes.*/ |
| NanSRFState useServiceResponseFilter; /* 0=Do not send the Service Response Filter,1= send */ |
| |
| /* |
| Flag which specifies if the Service Specific Info is needed in |
| the Publish message before creating the MatchIndication |
| */ |
| NanSsiInMatchInd ssiRequiredForMatchIndication; /* 0=Not needed, 1= Required */ |
| |
| /* |
| Field which specifies how the matching indication to host is controlled. |
| 0 - Match and Indicate Once |
| 1 - Match and Indicate continuous |
| 2 - Match and Indicate never. This means don't indicate the match to the host. |
| 3 - Reserved |
| */ |
| NanMatchAlg subscribe_match_indicator; |
| |
| /* |
| The number of Subscribe Matches which should occur |
| before the Subscribe request is automatically terminated. |
| */ |
| u8 subscribe_count; /* If this value is 0 this field is not used by the DE.*/ |
| |
| u16 service_name_len;/* length of service name */ |
| u8 service_name[NAN_MAX_SERVICE_NAME_LEN]; /* UTF-8 encoded string identifying the service */ |
| |
| /* Sequence of values which further specify the published service beyond the service name*/ |
| u16 service_specific_info_len; |
| u8 service_specific_info[NAN_MAX_SERVICE_SPECIFIC_INFO_LEN]; |
| |
| /* |
| Ordered sequence of <length, value> pairs used to filter out received publish discovery messages. |
| This can be sent both for a Passive or an Active Subscribe |
| */ |
| u16 rx_match_filter_len; |
| u8 rx_match_filter[NAN_MAX_MATCH_FILTER_LEN]; |
| |
| /* |
| Ordered sequence of <length, value> pairs included in the |
| Discovery Frame when an Active Subscribe is used. |
| */ |
| u16 tx_match_filter_len; |
| u8 tx_match_filter[NAN_MAX_MATCH_FILTER_LEN]; |
| |
| /* |
| Flag which specifies that the Subscribe should use the configured RSSI |
| threshold and the received RSSI in order to filter requests |
| 0 – ignore the configured RSSI threshold when running a Service |
| Descriptor attribute or Service ID List Attribute through the DE matching logic. |
| 1 – use the configured RSSI threshold when running a Service |
| Descriptor attribute or Service ID List Attribute through the DE matching logic. |
| |
| */ |
| u8 rssi_threshold_flag; |
| |
| /* |
| 8-bit bitmap which allows the Host to associate this Active |
| Subscribe with a particular Post-NAN Connectivity attribute |
| which has been sent down in a NanConfigureRequest/NanEnableRequest |
| message. If the DE fails to find a configured Post-NAN |
| connectivity attributes referenced by the bitmap, |
| the DE will return an error code to the Host. |
| If the Subscribe is configured to use a Post-NAN Connectivity |
| attribute and the Host does not refresh the Post-NAN Connectivity |
| attribute the Subscribe will be canceled and the Host will be sent |
| a SubscribeTerminatedIndication message. |
| */ |
| u8 connmap; |
| /* |
| NAN Interface Address, conforming to the format as described in |
| 8.2.4.3.2 of IEEE Std. 802.11-2012. |
| */ |
| u8 num_intf_addr_present; |
| u8 intf_addr[NAN_MAX_SUBSCRIBE_MAX_ADDRESS][NAN_MAC_ADDR_LEN]; |
| /* |
| Set/Enable corresponding bits to disable indications that follow a subscribe. |
| BIT0 - Disable subscribe termination indication. |
| BIT1 - Disable match expired indication. |
| BIT2 - Disable followUp indication received (OTA). |
| */ |
| u8 recv_indication_cfg; |
| |
| /* NAN Cipher Suite Type */ |
| u32 cipher_type; |
| /* |
| Nan Security Key Info is optional in Discovery phase. |
| PMK or passphrase info can be passed during |
| the NDP session. |
| */ |
| NanSecurityKeyInfo key_info; |
| |
| /* Security Context Identifiers length */ |
| u32 scid_len; |
| /* |
| Security Context Identifier attribute contains PMKID |
| shall be included in NDP setup and response messages. |
| Security Context Identifier, Identifies the Security |
| Context. For NAN Shared Key Cipher Suite, this field |
| contains the 16 octet PMKID identifying the PMK used |
| for setting up the Secure Data Path. |
| */ |
| u8 scid[NAN_MAX_SCID_BUF_LEN]; |
| |
| /* NAN configure service discovery extended attributes */ |
| NanSdeaCtrlParams sdea_params; |
| |
| /* NAN Ranging configuration */ |
| NanRangingCfg ranging_cfg; |
| |
| /* Enable/disable NAN serivce Ranging auto response mode */ |
| NanRangingAutoResponse ranging_auto_response; |
| |
| /* |
| When the ranging_auto_response_cfg is not set, NanRangeRequestInd is |
| received. Nan Range Response to Peer MAC Addr is notified to indicate |
| ACCEPT/REJECT/CANCEL to the requestor. |
| */ |
| NanRangeResponseCfg range_response_cfg; |
| |
| /* |
| Sequence of values indicating the service specific info in SDEA |
| */ |
| u16 sdea_service_specific_info_len; |
| u8 sdea_service_specific_info[NAN_MAX_SDEA_SERVICE_SPECIFIC_INFO_LEN]; |
| /* |
| The Identity key for pairing, used to generate NIRA |
| */ |
| u8 nan_identity_key[NAN_IDENTITY_KEY_LEN]; |
| |
| /* |
| The config for Nan pairing |
| */ |
| NanPairingConfig nan_pairing_config; |
| |
| /* |
| Specifies whether suspension can be possible in this subscribe session. |
| The request would fail if enable_suspendability is true but |
| is_suspension_supported is false in NanCapabilities. |
| */ |
| bool enable_suspendability; |
| |
| /* cipher capabilities */ |
| u8 cipher_capabilities; |
| } NanSubscribeRequest; |
| |
| /* |
| NAN Subscribe Cancel Structure |
| The SubscribeCancelReq Message is used to request the DE to stop looking for the Service Name. |
| */ |
| typedef struct { |
| u16 subscribe_id; |
| } NanSubscribeCancelRequest; |
| |
| /* |
| Transmit follow up Structure |
| The TransmitFollowupReq message is sent to the DE to allow the sending of the Service_Specific_Info |
| to a particular MAC address. |
| */ |
| typedef struct { |
| /* Publish or Subscribe Id of an earlier Publish/Subscribe */ |
| u16 publish_subscribe_id; |
| |
| /* |
| This Id is the Requestor Instance that is passed as |
| part of earlier MatchInd/FollowupInd message. |
| */ |
| u32 requestor_instance_id; |
| u8 addr[NAN_MAC_ADDR_LEN]; /* Unicast address */ |
| NanTxPriority priority; /* priority of the request 2=high */ |
| NanTransmitWindowType dw_or_faw; /* 0= send in a DW, 1=send in FAW */ |
| |
| /* |
| Sequence of values which further specify the published service beyond |
| the service name. |
| */ |
| u16 service_specific_info_len; |
| u8 service_specific_info[NAN_MAX_SERVICE_SPECIFIC_INFO_LEN]; |
| /* |
| Set/Enable corresponding bits to disable responses after followUp. |
| BIT0 - Disable followUp response from FW. |
| */ |
| u8 recv_indication_cfg; |
| |
| /* |
| Sequence of values indicating the service specific info in SDEA |
| */ |
| u16 sdea_service_specific_info_len; |
| u8 sdea_service_specific_info[NAN_MAX_SDEA_SERVICE_SPECIFIC_INFO_LEN]; |
| |
| /* |
| Add shared key descriptor attribute to the Followup request when the |
| flag is set |
| */ |
| u8 shared_key_desc_flag; |
| } NanTransmitFollowupRequest; |
| |
| /* |
| Stats Request structure |
| The Discovery Engine can be queried at runtime by the Host processor for statistics |
| concerning various parts of the Discovery Engine. |
| */ |
| typedef struct { |
| NanStatsType stats_type; /* NAN Statistics Request Type */ |
| u8 clear; /* 0= Do not clear the stats and return the current contents , 1= Clear the associated stats */ |
| } NanStatsRequest; |
| |
| /* |
| Suspend Request Structure |
| The SuspendRequest message is used to request that the specified session is suspended. |
| The session can be resumed using the NanResumeRequest message. |
| */ |
| typedef struct { |
| u16 publish_subscribe_id; |
| } NanSuspendRequest; |
| |
| /* |
| Resume Request Structure |
| The ResumeRequest message is used to request that the specified session is resumed. |
| */ |
| typedef struct { |
| u16 publish_subscribe_id; |
| } NanResumeRequest; |
| |
| /* |
| Config Structure |
| The NanConfigurationReq message is sent by the Host to the |
| Discovery Engine in order to configure the Discovery Engine during runtime. |
| */ |
| typedef struct { |
| u8 config_sid_beacon; |
| u8 sid_beacon; |
| u8 config_rssi_proximity; |
| u8 rssi_proximity; // default value -60dBm |
| u8 config_master_pref; |
| u8 master_pref; // default value 0x02 |
| /* |
| 1 byte value which defines the RSSI filter threshold. |
| Any Service Descriptors received above this value |
| that are configured for RSSI filtering will be dropped. |
| The rssi values should be specified without sign. |
| For eg: -70dBm should be specified as 70. |
| */ |
| u8 config_5g_rssi_close_proximity; |
| u8 rssi_close_proximity_5g_val; // default value -60dBm |
| /* |
| Optional configuration of Configure request. |
| Each of the optional parameters have configure flag which |
| determine whether configuration is to be passed or not. |
| */ |
| /* |
| 1 byte quantity which defines the window size over |
| which the “average RSSI” will be calculated over. |
| */ |
| u8 config_rssi_window_size; |
| u8 rssi_window_size_val; // default value 0x08 |
| /* |
| If set to 1, the Discovery Engine will enclose the Cluster |
| Attribute only sent in Beacons in a Vendor Specific Attribute |
| and transmit in a Service Descriptor Frame. |
| */ |
| u8 config_cluster_attribute_val; |
| /* |
| The periodicity in seconds between full scan’s to find any new |
| clusters available in the area. A Full scan should not be done |
| more than every 10 seconds and should not be done less than every |
| 30 seconds. |
| */ |
| u8 config_scan_params; |
| NanSocialChannelScanParams scan_params_val; |
| /* |
| 1 byte quantity which forces the Random Factor to a particular |
| value for all transmitted Sync/Discovery beacons |
| */ |
| u8 config_random_factor_force; |
| u8 random_factor_force_val; // default value 0x00 |
| /* |
| 1 byte quantity which forces the HC for all transmitted Sync and |
| Discovery Beacon NO matter the real HC being received over the |
| air. |
| */ |
| u8 config_hop_count_force; |
| u8 hop_count_force_val; // default value of 0 |
| /* NAN Post Connectivity Capability */ |
| u8 config_conn_capability; |
| NanTransmitPostConnectivityCapability conn_capability_val; |
| /* NAN Post Discover Capability */ |
| u8 num_config_discovery_attr; |
| NanTransmitPostDiscovery discovery_attr_val[NAN_MAX_POSTDISCOVERY_LEN]; |
| /* NAN Further availability Map */ |
| u8 config_fam; |
| NanFurtherAvailabilityMap fam_val; |
| /* Configure 2.4/5GHz DW */ |
| NanConfigDW config_dw; |
| /* |
| By default discovery MAC address randomization is enabled |
| and default interval value is 30 minutes i.e. 1800 seconds. |
| The value 0 is used to disable MAC addr randomization. |
| */ |
| u8 config_disc_mac_addr_randomization; |
| u32 disc_mac_addr_rand_interval_sec; // default value of 30 minutes |
| |
| /* |
| Set/Enable corresponding bits to disable Discovery indications: |
| BIT0 - Disable Discovery MAC Address Event. |
| BIT1 - Disable Started Cluster Event. |
| BIT2 - Disable Joined Cluster Event. |
| */ |
| u8 discovery_indication_cfg; // default value of 0 |
| /* |
| BIT 0 is used to specify to include Service IDs in Sync/Discovery beacons |
| 0 - Do not include SIDs in any beacons |
| 1 - Include SIDs in all beacons. |
| Rest 7 bits are count field which allows control over the number of SIDs |
| included in the Beacon. 0 means to include as many SIDs that fit into |
| the maximum allow Beacon frame size |
| */ |
| u8 config_subscribe_sid_beacon; |
| u32 subscribe_sid_beacon_val; // default value 0x0 |
| /* |
| Discovery Beacon Interval config. |
| Default value is 128 msec in 2G DW and 176 msec in 2G/5G DW. |
| When 0 value is passed it is reset to default value of 128 or 176 msec. |
| */ |
| u8 config_discovery_beacon_int; |
| u32 discovery_beacon_interval; |
| /* |
| Enable Number of Spatial Streams. |
| This is NAN Power Optimization feature for NAN discovery. |
| */ |
| u8 config_nss; |
| // default value is implementation specific and passing 0 sets it to default |
| u32 nss; |
| /* |
| Enable device level NAN Ranging feature. |
| 0 - Disable |
| 1 - Enable |
| */ |
| u8 config_enable_ranging; |
| u32 enable_ranging; |
| /* |
| Enable/Disable DW Early termination. |
| 0 - Disable |
| 1 - Enable |
| */ |
| u8 config_dw_early_termination; |
| u32 enable_dw_termination; |
| /* |
| Indicate whether to use NDPE attribute to bring-up TCP/IP connection |
| If config_ndpe_attr is not configured, the default behavior is |
| not using NDPE attr, and the capability is not advertised. |
| 0 - Not use |
| 1 - Use |
| */ |
| u8 config_ndpe_attr; |
| u32 use_ndpe_attr; |
| /* |
| Enable NAN v3.1 instant communication mode. |
| 0 - Disable |
| 1 - Enable |
| */ |
| u8 config_enable_instant_mode; |
| u32 enable_instant_mode; |
| /* |
| Config NAN v3.1 instant communication channel selected over NFC/OOB method. |
| If dual band is supported default channel is 149 or 44 as per regulatory domain, |
| else channel 6 (send frequency in MHz). |
| Sometimes depending on country code retrictions, even 149/44 may be restricted |
| in those cases instant channel will be operational only in 2.4GHz. |
| Use wifi_get_usable_channels() API to get supported bands/channels before |
| Instant mode NFC handshake is triggered |
| */ |
| u8 config_instant_mode_channel; |
| wifi_channel instant_mode_channel; |
| /* |
| Config cluster ID with the cluster ID selected over NFC/OOB method. |
| */ |
| u8 config_cluster_id; |
| u16 cluster_id_val; // default value 0x0 |
| } NanConfigRequest; |
| |
| /* |
| TCA Structure |
| The Discovery Engine can be configured to send up Events whenever a configured |
| Threshold Crossing Alert (TCA) Type crosses an integral threshold in a particular direction. |
| */ |
| typedef struct { |
| NanTcaType tca_type; /* Nan Protocol Threshold Crossing Alert (TCA) Codes */ |
| |
| /* flag which control whether or not an event is generated for the Rising direction */ |
| u8 rising_direction_evt_flag; /* 0 - no event, 1 - event */ |
| |
| /* flag which control whether or not an event is generated for the Falling direction */ |
| u8 falling_direction_evt_flag;/* 0 - no event, 1 - event */ |
| |
| /* flag which requests a previous TCA request to be cleared from the DE */ |
| u8 clear;/*0= Do not clear the TCA, 1=Clear the TCA */ |
| |
| /* 32 bit value which represents the threshold to be used.*/ |
| u32 threshold; |
| } NanTCARequest; |
| |
| /* |
| Beacon Sdf Payload Structure |
| The Discovery Engine can be configured to publish vendor specific attributes as part of |
| beacon or service discovery frame transmitted as part of this request.. |
| */ |
| typedef struct { |
| /* |
| NanVendorAttribute will have the Vendor Specific Attribute which the |
| vendor wants to publish as part of Discovery or Sync or Service discovery frame |
| */ |
| NanTransmitVendorSpecificAttribute vsa; |
| } NanBeaconSdfPayloadRequest; |
| |
| /* Publish statistics. */ |
| typedef struct |
| { |
| u32 validPublishServiceReqMsgs; |
| u32 validPublishServiceRspMsgs; |
| u32 validPublishServiceCancelReqMsgs; |
| u32 validPublishServiceCancelRspMsgs; |
| u32 validPublishRepliedIndMsgs; |
| u32 validPublishTerminatedIndMsgs; |
| u32 validActiveSubscribes; |
| u32 validMatches; |
| u32 validFollowups; |
| u32 invalidPublishServiceReqMsgs; |
| u32 invalidPublishServiceCancelReqMsgs; |
| u32 invalidActiveSubscribes; |
| u32 invalidMatches; |
| u32 invalidFollowups; |
| u32 publishCount; |
| u32 publishNewMatchCount; |
| u32 pubsubGlobalNewMatchCount; |
| } NanPublishStats; |
| |
| /* Subscribe statistics. */ |
| typedef struct |
| { |
| u32 validSubscribeServiceReqMsgs; |
| u32 validSubscribeServiceRspMsgs; |
| u32 validSubscribeServiceCancelReqMsgs; |
| u32 validSubscribeServiceCancelRspMsgs; |
| u32 validSubscribeTerminatedIndMsgs; |
| u32 validSubscribeMatchIndMsgs; |
| u32 validSubscribeUnmatchIndMsgs; |
| u32 validSolicitedPublishes; |
| u32 validMatches; |
| u32 validFollowups; |
| u32 invalidSubscribeServiceReqMsgs; |
| u32 invalidSubscribeServiceCancelReqMsgs; |
| u32 invalidSubscribeFollowupReqMsgs; |
| u32 invalidSolicitedPublishes; |
| u32 invalidMatches; |
| u32 invalidFollowups; |
| u32 subscribeCount; |
| u32 bloomFilterIndex; |
| u32 subscribeNewMatchCount; |
| u32 pubsubGlobalNewMatchCount; |
| } NanSubscribeStats; |
| |
| /* NAN DW Statistics*/ |
| typedef struct |
| { |
| /* RX stats */ |
| u32 validFrames; |
| u32 validActionFrames; |
| u32 validBeaconFrames; |
| u32 ignoredActionFrames; |
| u32 ignoredBeaconFrames; |
| u32 invalidFrames; |
| u32 invalidActionFrames; |
| u32 invalidBeaconFrames; |
| u32 invalidMacHeaders; |
| u32 invalidPafHeaders; |
| u32 nonNanBeaconFrames; |
| |
| u32 earlyActionFrames; |
| u32 inDwActionFrames; |
| u32 lateActionFrames; |
| |
| /* TX stats */ |
| u32 framesQueued; |
| u32 totalTRSpUpdates; |
| u32 completeByTRSp; |
| u32 completeByTp75DW; |
| u32 completeByTendDW; |
| u32 lateActionFramesTx; |
| } NanDWStats; |
| |
| /* NAN MAC Statistics. */ |
| typedef struct |
| { |
| /* RX stats */ |
| u32 validFrames; |
| u32 validActionFrames; |
| u32 validBeaconFrames; |
| u32 ignoredActionFrames; |
| u32 ignoredBeaconFrames; |
| u32 invalidFrames; |
| u32 invalidActionFrames; |
| u32 invalidBeaconFrames; |
| u32 invalidMacHeaders; |
| u32 invalidPafHeaders; |
| u32 nonNanBeaconFrames; |
| |
| u32 earlyActionFrames; |
| u32 inDwActionFrames; |
| u32 lateActionFrames; |
| |
| /* TX stats */ |
| u32 framesQueued; |
| u32 totalTRSpUpdates; |
| u32 completeByTRSp; |
| u32 completeByTp75DW; |
| u32 completeByTendDW; |
| u32 lateActionFramesTx; |
| |
| u32 twIncreases; |
| u32 twDecreases; |
| u32 twChanges; |
| u32 twHighwater; |
| u32 bloomFilterIndex; |
| } NanMacStats; |
| |
| /* NAN Sync Statistics*/ |
| typedef struct |
| { |
| u64 currTsf; |
| u64 myRank; |
| u64 currAmRank; |
| u64 lastAmRank; |
| u32 currAmBTT; |
| u32 lastAmBTT; |
| u8 currAmHopCount; |
| u8 currRole; |
| u16 currClusterId; |
| |
| u64 timeSpentInCurrRole; |
| u64 totalTimeSpentAsMaster; |
| u64 totalTimeSpentAsNonMasterSync; |
| u64 totalTimeSpentAsNonMasterNonSync; |
| u32 transitionsToAnchorMaster; |
| u32 transitionsToMaster; |
| u32 transitionsToNonMasterSync; |
| u32 transitionsToNonMasterNonSync; |
| u32 amrUpdateCount; |
| u32 amrUpdateRankChangedCount; |
| u32 amrUpdateBTTChangedCount; |
| u32 amrUpdateHcChangedCount; |
| u32 amrUpdateNewDeviceCount; |
| u32 amrExpireCount; |
| u32 mergeCount; |
| u32 beaconsAboveHcLimit; |
| u32 beaconsBelowRssiThresh; |
| u32 beaconsIgnoredNoSpace; |
| u32 beaconsForOurCluster; |
| u32 beaconsForOtherCluster; |
| u32 beaconCancelRequests; |
| u32 beaconCancelFailures; |
| u32 beaconUpdateRequests; |
| u32 beaconUpdateFailures; |
| u32 syncBeaconTxAttempts; |
| u32 syncBeaconTxFailures; |
| u32 discBeaconTxAttempts; |
| u32 discBeaconTxFailures; |
| u32 amHopCountExpireCount; |
| u32 ndpChannelFreq; |
| u32 ndpChannelFreq2; |
| u32 schedUpdateChannelFreq; |
| } NanSyncStats; |
| |
| /* NAN Misc DE Statistics */ |
| typedef struct |
| { |
| u32 validErrorRspMsgs; |
| u32 validTransmitFollowupReqMsgs; |
| u32 validTransmitFollowupRspMsgs; |
| u32 validFollowupIndMsgs; |
| u32 validConfigurationReqMsgs; |
| u32 validConfigurationRspMsgs; |
| u32 validStatsReqMsgs; |
| u32 validStatsRspMsgs; |
| u32 validEnableReqMsgs; |
| u32 validEnableRspMsgs; |
| u32 validDisableReqMsgs; |
| u32 validDisableRspMsgs; |
| u32 validDisableIndMsgs; |
| u32 validEventIndMsgs; |
| u32 validTcaReqMsgs; |
| u32 validTcaRspMsgs; |
| u32 validTcaIndMsgs; |
| u32 invalidTransmitFollowupReqMsgs; |
| u32 invalidConfigurationReqMsgs; |
| u32 invalidStatsReqMsgs; |
| u32 invalidEnableReqMsgs; |
| u32 invalidDisableReqMsgs; |
| u32 invalidTcaReqMsgs; |
| } NanDeStats; |
| |
| /* Publish Response Message structure */ |
| typedef struct { |
| u16 publish_id; |
| } NanPublishResponse; |
| |
| /* Subscribe Response Message structure */ |
| typedef struct { |
| u16 subscribe_id; |
| } NanSubscribeResponse; |
| |
| /* |
| Stats Response Message structure |
| The Discovery Engine response to a request by the Host for statistics. |
| */ |
| typedef struct { |
| NanStatsType stats_type; |
| union { |
| NanPublishStats publish_stats; |
| NanSubscribeStats subscribe_stats; |
| NanMacStats mac_stats; |
| NanSyncStats sync_stats; |
| NanDeStats de_stats; |
| NanDWStats dw_stats; |
| } data; |
| } NanStatsResponse; |
| |
| /* Response returned for Initiators Data request */ |
| typedef struct { |
| /* |
| Unique token Id generated on the initiator |
| side used for a NDP session between two NAN devices |
| */ |
| NanDataPathId ndp_instance_id; |
| } NanDataPathRequestResponse; |
| |
| /* Response returned for Initiators pairing request */ |
| typedef struct { |
| /* |
| Unique token Id generated on the initiator |
| side used for a pairing session between two NAN devices |
| */ |
| u32 paring_instance_id; |
| } NanPairingRequestResponse; |
| |
| /* Response returned for Initiators bootstrapping request */ |
| typedef struct { |
| /* |
| Unique token Id generated on the initiator |
| side used for a bootstrapping session between two NAN devices |
| */ |
| u32 bootstrapping_instance_id; |
| } NanBootstrappingRequestResponse; |
| |
| /* |
| NAN Response messages |
| */ |
| typedef struct { |
| NanStatusType status; /* contains the result code */ |
| char nan_error[NAN_ERROR_STR_LEN]; /* Describe the NAN error type */ |
| NanResponseType response_type; /* NanResponseType Definitions */ |
| union { |
| NanPublishResponse publish_response; |
| NanSubscribeResponse subscribe_response; |
| NanStatsResponse stats_response; |
| NanDataPathRequestResponse data_request_response; |
| NanCapabilities nan_capabilities; |
| NanPairingRequestResponse pairing_request_response; |
| NanBootstrappingRequestResponse bootstrapping_request_response; |
| } body; |
| } NanResponseMsg; |
| |
| /* |
| Publish Replied Indication |
| The PublishRepliedInd Message is sent by the DE when an Active Subscribe is |
| received over the air and it matches a Solicited PublishServiceReq which had |
| been created with the replied_event_flag set. |
| */ |
| typedef struct { |
| /* |
| A 32 bit Requestor Instance Id which is sent to the Application. |
| This Id will be sent in any subsequent UnmatchInd/FollowupInd |
| messages |
| */ |
| u32 requestor_instance_id; |
| u8 addr[NAN_MAC_ADDR_LEN]; |
| /* |
| If RSSI filtering was configured in NanPublishRequest then this |
| field will contain the received RSSI value. 0 if not |
| */ |
| u8 rssi_value; |
| } NanPublishRepliedInd; |
| |
| /* |
| Publish Terminated |
| The PublishTerminatedInd message is sent by the DE whenever a Publish |
| terminates from a user-specified timeout or a unrecoverable error in the DE. |
| */ |
| typedef struct { |
| /* Id returned during the initial Publish */ |
| u16 publish_id; |
| /* |
| For all user configured termination NAN_STATUS_SUCCESS |
| and no other reasons expected from firmware. |
| */ |
| NanStatusType reason; |
| char nan_reason[NAN_ERROR_STR_LEN]; /* Describe the NAN reason type */ |
| } NanPublishTerminatedInd; |
| |
| /* The NIRA used to identify the pairing devices*/ |
| typedef struct { |
| u8 nonce[NAN_IDENTITY_NONCE_LEN]; |
| u8 tag[NAN_IDENTITY_TAG_LEN]; |
| } NanIdentityResolutionAttribute; |
| |
| /* |
| Match Indication |
| The MatchInd message is sent once per responding MAC address whenever |
| the Discovery Engine detects a match for a previous SubscribeServiceReq |
| or PublishServiceReq. |
| */ |
| typedef struct { |
| /* Publish or Subscribe Id of an earlier Publish/Subscribe */ |
| u16 publish_subscribe_id; |
| /* |
| A 32 bit Requestor Instance Id which is sent to the Application. |
| This Id will be sent in any subsequent UnmatchInd/FollowupInd |
| messages |
| */ |
| u32 requestor_instance_id; |
| u8 addr[NAN_MAC_ADDR_LEN]; |
| |
| /* |
| Sequence of octets which were received in a Discovery Frame matching the |
| Subscribe Request. |
| */ |
| u16 service_specific_info_len; |
| u8 service_specific_info[NAN_MAX_SERVICE_SPECIFIC_INFO_LEN]; |
| |
| /* |
| Ordered sequence of <length, value> pairs received in the Discovery Frame |
| matching the Subscribe Request. |
| */ |
| u16 sdf_match_filter_len; |
| u8 sdf_match_filter[NAN_MAX_MATCH_FILTER_LEN]; |
| |
| /* |
| flag to indicate if the Match occurred in a Beacon Frame or in a |
| Service Discovery Frame. |
| 0 - Match occured in a Service Discovery Frame |
| 1 - Match occured in a Beacon Frame |
| */ |
| u8 match_occured_flag; |
| |
| /* |
| flag to indicate FW is out of resource and that it can no longer |
| track this Service Name. The Host still need to send the received |
| Match_Handle but duplicate MatchInd messages may be received on |
| this Handle until the resource frees up. |
| 0 - FW is caching this match |
| 1 - FW is unable to cache this match |
| */ |
| u8 out_of_resource_flag; |
| |
| /* |
| If RSSI filtering was configured in NanSubscribeRequest then this |
| field will contain the received RSSI value. 0 if not. |
| All rssi values should be specified without sign. |
| For eg: -70dBm should be specified as 70. |
| */ |
| u8 rssi_value; |
| |
| /* |
| optional attributes. Each optional attribute is associated with a flag |
| which specifies whether the attribute is valid or not |
| */ |
| /* NAN Post Connectivity Capability received */ |
| u8 is_conn_capability_valid; |
| NanReceivePostConnectivityCapability conn_capability; |
| |
| /* NAN Post Discover Capability */ |
| u8 num_rx_discovery_attr; |
| NanReceivePostDiscovery discovery_attr[NAN_MAX_POSTDISCOVERY_LEN]; |
| |
| /* NAN Further availability Map */ |
| u8 num_chans; |
| NanFurtherAvailabilityChannel famchan[NAN_MAX_FAM_CHANNELS]; |
| |
| /* NAN Cluster Attribute */ |
| u8 cluster_attribute_len; |
| u8 cluster_attribute[NAN_MAX_CLUSTER_ATTRIBUTE_LEN]; |
| |
| /* NAN Cipher Suite */ |
| u32 peer_cipher_type; |
| |
| /* Security Context Identifiers length */ |
| u32 scid_len; |
| /* |
| Security Context Identifier attribute contains PMKID |
| shall be included in NDP setup and response messages. |
| Security Context Identifier, Identifies the Security |
| Context. For NAN Shared Key Cipher Suite, this field |
| contains the 16 octet PMKID identifying the PMK used |
| for setting up the Secure Data Path. |
| */ |
| u8 scid[NAN_MAX_SCID_BUF_LEN]; |
| |
| /* Peer service discovery extended attributes */ |
| NanSdeaCtrlParams peer_sdea_params; |
| |
| /* |
| Ranging indication and NanMatchAlg are not tied. |
| Ex: NanMatchAlg can indicate Match_ONCE, but ranging |
| indications can be continuous. All ranging indications |
| depend on SDEA control parameters of ranging required for |
| continuous, and ingress/egress values in the ranging config. |
| Ranging indication data is notified if: |
| 1) Ranging required is enabled in SDEA. |
| range info notified continuous. |
| 2) if range_limit ingress/egress MASKS are enabled |
| notify once for ingress >= ingress_distance |
| and egress <= egress_distance, same for ingress_egress_both |
| 3) if the Awake DW intervals are higher than the ranging intervals, |
| priority is given to the device DW intervalsi. |
| */ |
| /* |
| Range Info includes: |
| 1) distance to the NAN device with the MAC address indicated |
| with ranged mac address. |
| 2) Ranging event matching the configuration of continuous/ingress/egress. |
| */ |
| NanRangeInfo range_info; |
| |
| /* |
| Sequence of values indicating the service specific info in SDEA |
| */ |
| u16 sdea_service_specific_info_len; |
| u8 sdea_service_specific_info[NAN_MAX_SDEA_SERVICE_SPECIFIC_INFO_LEN]; |
| |
| /* |
| The config for Nan pairing set by the peer |
| */ |
| NanPairingConfig peer_pairing_config; |
| |
| /* |
| The NIRA from peer for Nan pairing verification |
| */ |
| NanIdentityResolutionAttribute nira; |
| } NanMatchInd; |
| |
| /* |
| MatchExpired Indication |
| The MatchExpiredInd message is sent whenever the Discovery Engine detects that |
| a previously Matched Service has been gone for too long. If the previous |
| MatchInd message for this Publish/Subscribe Id had the out_of_resource_flag |
| set then this message will not be received |
| */ |
| typedef struct { |
| /* Publish or Subscribe Id of an earlier Publish/Subscribe */ |
| u16 publish_subscribe_id; |
| /* |
| 32 bit value sent by the DE in a previous |
| MatchInd/FollowupInd to the application. |
| */ |
| u32 requestor_instance_id; |
| } NanMatchExpiredInd; |
| |
| /* |
| Subscribe Terminated |
| The SubscribeTerminatedInd message is sent by the DE whenever a |
| Subscribe terminates from a user-specified timeout or a unrecoverable error in the DE. |
| */ |
| typedef struct { |
| /* Id returned during initial Subscribe */ |
| u16 subscribe_id; |
| /* |
| For all user configured termination NAN_STATUS_SUCCESS |
| and no other reasons expected from firmware. |
| */ |
| NanStatusType reason; |
| char nan_reason[NAN_ERROR_STR_LEN]; /* Describe the NAN reason type */ |
| } NanSubscribeTerminatedInd; |
| |
| /* |
| Followup Indication Message |
| The FollowupInd message is sent by the DE to the Host whenever it receives a |
| Followup message from another peer. |
| */ |
| typedef struct { |
| /* Publish or Subscribe Id of an earlier Publish/Subscribe */ |
| u16 publish_subscribe_id; |
| /* |
| A 32 bit Requestor instance Id which is sent to the Application. |
| This Id will be used in subsequent UnmatchInd/FollowupInd messages. |
| */ |
| u32 requestor_instance_id; |
| u8 addr[NAN_MAC_ADDR_LEN]; |
| |
| /* Flag which the DE uses to decide if received in a DW or a FAW*/ |
| u8 dw_or_faw; /* 0=Received in a DW, 1 = Received in a FAW*/ |
| |
| /* |
| Sequence of values which further specify the published service beyond |
| the service name |
| */ |
| u16 service_specific_info_len; |
| u8 service_specific_info[NAN_MAX_SERVICE_SPECIFIC_INFO_LEN]; |
| |
| /* |
| Sequence of values indicating the service specific info in SDEA |
| */ |
| u16 sdea_service_specific_info_len; |
| u8 sdea_service_specific_info[NAN_MAX_SDEA_SERVICE_SPECIFIC_INFO_LEN]; |
| } NanFollowupInd; |
| |
| /* |
| Event data notifying the Mac address of the Discovery engine. |
| which is reported as one of the Discovery engine event |
| */ |
| typedef struct { |
| u8 addr[NAN_MAC_ADDR_LEN]; |
| } NanMacAddressEvent; |
| |
| /* |
| Event data notifying the Cluster address of the cluster |
| which is reported as one of the Discovery engine event |
| */ |
| typedef struct { |
| u8 addr[NAN_MAC_ADDR_LEN]; |
| } NanClusterEvent; |
| |
| /* |
| Discovery Engine Event Indication |
| The Discovery Engine can inform the Host when significant events occur |
| The data following the EventId is dependent upon the EventId type. |
| In other words, each new event defined will carry a different |
| structure of information back to the host. |
| */ |
| typedef struct { |
| NanDiscEngEventType event_type; /* NAN Protocol Event Codes */ |
| union { |
| /* |
| MacAddressEvent which will have 6 byte mac address |
| of the Discovery engine. |
| */ |
| NanMacAddressEvent mac_addr; |
| /* |
| Cluster Event Data which will be obtained when the |
| device starts a new cluster or joins a cluster. |
| The event data will have 6 byte octet string of the |
| cluster started or joined. |
| */ |
| NanClusterEvent cluster; |
| } data; |
| } NanDiscEngEventInd; |
| |
| /* Cluster size TCA event*/ |
| typedef struct { |
| /* size of the cluster*/ |
| u32 cluster_size; |
| } NanTcaClusterEvent; |
| |
| /* |
| NAN TCA Indication |
| The Discovery Engine can inform the Host when significant events occur. |
| The data following the TcaId is dependent upon the TcaId type. |
| In other words, each new event defined will carry a different structure |
| of information back to the host. |
| */ |
| typedef struct { |
| NanTcaType tca_type; |
| /* flag which defines if the configured Threshold has risen above the threshold */ |
| u8 rising_direction_evt_flag; /* 0 - no event, 1 - event */ |
| |
| /* flag which defines if the configured Threshold has fallen below the threshold */ |
| u8 falling_direction_evt_flag;/* 0 - no event, 1 - event */ |
| union { |
| /* |
| This event in obtained when the cluser size threshold |
| is crossed. Event will have the cluster size |
| */ |
| NanTcaClusterEvent cluster; |
| } data; |
| } NanTCAInd; |
| |
| /* |
| NAN Disabled Indication |
| The NanDisableInd message indicates to the upper layers that the Discovery |
| Engine has flushed all state and has been shutdown. When this message is received |
| the DE is guaranteed to have left the NAN cluster it was part of and will have terminated |
| any in progress Publishes or Subscribes. |
| */ |
| typedef struct { |
| /* |
| Following reasons expected: |
| NAN_STATUS_SUCCESS |
| NAN_STATUS_UNSUPPORTED_CONCURRENCY_NAN_DISABLED |
| */ |
| NanStatusType reason; |
| char nan_reason[NAN_ERROR_STR_LEN]; /* Describe the NAN reason type */ |
| } NanDisabledInd; |
| |
| /* |
| NAN Beacon or SDF Payload Indication |
| The NanBeaconSdfPayloadInd message indicates to the upper layers that information |
| elements were received either in a Beacon or SDF which needs to be delivered |
| outside of a Publish/Subscribe Handle. |
| */ |
| typedef struct { |
| /* The MAC address of the peer which sent the attributes.*/ |
| u8 addr[NAN_MAC_ADDR_LEN]; |
| /* |
| Optional attributes. Each optional attribute is associated with a flag |
| which specifies whether the attribute is valid or not |
| */ |
| /* NAN Receive Vendor Specific Attribute*/ |
| u8 is_vsa_received; |
| NanReceiveVendorSpecificAttribute vsa; |
| |
| /* NAN Beacon or SDF Payload Received*/ |
| u8 is_beacon_sdf_payload_received; |
| NanBeaconSdfPayloadReceive data; |
| } NanBeaconSdfPayloadInd; |
| |
| /* |
| Event Indication notifying the |
| transmit followup in progress |
| */ |
| typedef struct { |
| transaction_id id; |
| /* |
| Following reason codes returned: |
| NAN_STATUS_SUCCESS |
| NAN_STATUS_NO_OTA_ACK |
| NAN_STATUS_PROTOCOL_FAILURE |
| */ |
| NanStatusType reason; |
| char nan_reason[NAN_ERROR_STR_LEN]; /* Describe the NAN reason type */ |
| } NanTransmitFollowupInd; |
| |
| /* |
| Data request Initiator/Responder |
| app/service related info |
| */ |
| typedef struct { |
| u16 ndp_app_info_len; |
| u8 ndp_app_info[NAN_DP_MAX_APP_INFO_LEN]; |
| } NanDataPathAppInfo; |
| |
| /* QoS configuration */ |
| typedef enum { |
| NAN_DP_CONFIG_NO_QOS = 0, |
| NAN_DP_CONFIG_QOS |
| } NanDataPathQosCfg; |
| |
| /* Configuration params of Data request Initiator/Responder */ |
| typedef struct { |
| /* Status Indicating Security/No Security */ |
| NanDataPathSecurityCfgStatus security_cfg; |
| NanDataPathQosCfg qos_cfg; |
| } NanDataPathCfg; |
| |
| /* Nan Data Path Initiator requesting a data session */ |
| typedef struct { |
| /* |
| Unique Instance Id identifying the Responder's service. |
| This is same as publish_id notified on the subscribe side |
| in a publish/subscribe scenario |
| */ |
| u32 requestor_instance_id; /* Value 0 for no publish/subscribe */ |
| |
| /* Config flag for channel request */ |
| NanDataPathChannelCfg channel_request_type; |
| /* Channel frequency in MHz to start data-path */ |
| wifi_channel channel; |
| /* |
| Discovery MAC addr of the publisher/peer |
| */ |
| u8 peer_disc_mac_addr[NAN_MAC_ADDR_LEN]; |
| /* |
| Interface name on which this NDP session is to be started. |
| This will be the same interface name provided during interface |
| create. |
| */ |
| char ndp_iface[IFNAMSIZ+1]; |
| /* Initiator/Responder Security/QoS configuration */ |
| NanDataPathCfg ndp_cfg; |
| /* App/Service information of the Initiator */ |
| NanDataPathAppInfo app_info; |
| /* NAN Cipher Suite Type */ |
| u32 cipher_type; |
| /* |
| Nan Security Key Info is optional in Discovery phase. |
| PMK or passphrase info can be passed during |
| the NDP session. |
| */ |
| NanSecurityKeyInfo key_info; |
| /* length of service name */ |
| u32 service_name_len; |
| /* |
| UTF-8 encoded string identifying the service name. |
| The service name field is only used if a Nan discovery |
| is not associated with the NDP (out-of-band discovery). |
| */ |
| u8 service_name[NAN_MAX_SERVICE_NAME_LEN]; |
| |
| /* Security Context Identifiers length */ |
| u32 scid_len; |
| /* |
| Security Context Identifier attribute contains PMKID |
| shall be included in NDP setup and response messages. |
| Security Context Identifier, Identifies the Security |
| Context. For NAN Shared Key Cipher Suite, this field |
| contains the 16 octet PMKID identifying the PMK used |
| for setting up the Secure Data Path. |
| */ |
| u8 scid[NAN_MAX_SCID_BUF_LEN]; |
| |
| /* Publish or Subscribe Id of an earlier Publish/Subscribe */ |
| u16 publish_subscribe_id; |
| |
| /* configure CSIA (Cipher Suite Information attribute) capability to specify GTK, IGTK, BIGTK |
| are supported or not |
| */ |
| u8 csia_capabilities; |
| |
| /* configure GTK(Group Transient Key) protection required or not */ |
| u8 gtk_protection; |
| |
| } NanDataPathInitiatorRequest; |
| |
| /* |
| Data struct to initiate a data response on the responder side |
| for an indication received with a data request |
| */ |
| typedef struct { |
| /* |
| Unique token Id generated on the initiator/responder |
| side used for a NDP session between two NAN devices |
| */ |
| NanDataPathId ndp_instance_id; |
| /* |
| Interface name on which this NDP session is to be started. |
| This will be the same interface name provided during interface |
| create. |
| */ |
| char ndp_iface[IFNAMSIZ+1]; |
| /* Initiator/Responder Security/QoS configuration */ |
| NanDataPathCfg ndp_cfg; |
| /* App/Service information of the responder */ |
| NanDataPathAppInfo app_info; |
| /* Response Code indicating ACCEPT/REJECT/DEFER */ |
| NanDataPathResponseCode rsp_code; |
| /* NAN Cipher Suite Type */ |
| u32 cipher_type; |
| /* |
| Nan Security Key Info is optional in Discovery phase. |
| PMK or passphrase info can be passed during |
| the NDP session. |
| */ |
| NanSecurityKeyInfo key_info; |
| /* length of service name */ |
| u32 service_name_len; |
| /* |
| UTF-8 encoded string identifying the service name. |
| The service name field is only used if a Nan discovery |
| is not associated with the NDP (out-of-band discovery). |
| */ |
| u8 service_name[NAN_MAX_SERVICE_NAME_LEN]; |
| |
| /* Security Context Identifiers length */ |
| u32 scid_len; |
| /* |
| Security Context Identifier attribute contains PMKID |
| shall be included in NDP setup and response messages. |
| Security Context Identifier, Identifies the Security |
| Context. For NAN Shared Key Cipher Suite, this field |
| contains the 16 octet PMKID identifying the PMK used |
| for setting up the Secure Data Path. |
| */ |
| u8 scid[NAN_MAX_SCID_BUF_LEN]; |
| |
| /* Publish or Subscribe Id of an earlier Publish/Subscribe */ |
| u16 publish_subscribe_id; |
| |
| /* |
| Discovery MAC addr of the publisher/peer |
| */ |
| u8 peer_disc_mac_addr[NAN_MAC_ADDR_LEN]; |
| |
| /* configure CSIA (Cipher Suite Information attribute) capability to specify GTK, IGTK, BIGTK |
| are supported or not |
| */ |
| u8 csia_capabilities; |
| |
| /* configure GTK(Group Transient Key) protection required or not */ |
| u8 gtk_protection; |
| } NanDataPathIndicationResponse; |
| |
| /* Sub slot parameters */ |
| typedef struct { |
| u8 entry_control; |
| u16 time_bitmap_control; |
| u32 time_bitmap; |
| } NanS3Params; |
| |
| /* NDP termination info */ |
| typedef struct { |
| u8 num_ndp_instances; |
| /* |
| Unique token Id generated on the initiator/responder side |
| used for a NDP session between two NAN devices |
| */ |
| NanDataPathId ndp_instance_id[]; |
| } NanDataPathEndRequest; |
| |
| /* |
| Event indication received on the |
| responder side when a Nan Data request or |
| NDP session is initiated on the Initiator side |
| */ |
| typedef struct { |
| /* |
| Unique Instance Id corresponding to a service/session. |
| This is similar to the publish_id generated on the |
| publisher side |
| */ |
| u16 service_instance_id; |
| /* Discovery MAC addr of the peer/initiator */ |
| u8 peer_disc_mac_addr[NAN_MAC_ADDR_LEN]; |
| /* |
| Unique token Id generated on the initiator/responder side |
| used for a NDP session between two NAN devices |
| */ |
| NanDataPathId ndp_instance_id; |
| /* Initiator/Responder Security/QoS configuration */ |
| NanDataPathCfg ndp_cfg; |
| /* App/Service information of the initiator */ |
| NanDataPathAppInfo app_info; |
| |
| /* Security Context Identifiers length */ |
| u32 scid_len; |
| /* |
| Security Context Identifier attribute contains PMKID |
| shall be included in NDP setup and response messages. |
| Security Context Identifier, Identifies the Security |
| Context. For NAN Shared Key Cipher Suite, this field |
| contains the 16 octet PMKID identifying the PMK used |
| for setting up the Secure Data Path. |
| */ |
| u8 scid[NAN_MAX_SCID_BUF_LEN]; |
| |
| /* configure CSIA (Cipher Suite Information attribute) capability to specify GTK, IGTK, BIGTK |
| are supported or not |
| */ |
| u8 csia_capabilities; |
| |
| /* configure GTK(Group Transient Key) protection required or not */ |
| u8 gtk_protection; |
| } NanDataPathRequestInd; |
| |
| /* |
| Event indication of data confirm is received on both |
| initiator and responder side confirming a NDP session |
| */ |
| typedef struct { |
| /* |
| Unique token Id generated on the initiator/responder side |
| used for a NDP session between two NAN devices |
| */ |
| NanDataPathId ndp_instance_id; |
| /* |
| NDI mac address of the peer |
| (required to derive target ipv6 address) |
| */ |
| u8 peer_ndi_mac_addr[NAN_MAC_ADDR_LEN]; |
| /* App/Service information of Initiator/Responder */ |
| NanDataPathAppInfo app_info; |
| /* Response code indicating ACCEPT/REJECT/DEFER */ |
| NanDataPathResponseCode rsp_code; |
| /* |
| Reason code indicating the cause for REJECT. |
| NAN_STATUS_SUCCESS and NAN_STATUS_PROTOCOL_FAILURE are |
| expected reason codes. |
| */ |
| NanStatusType reason_code; |
| /* Number of channels for which info is indicated */ |
| u32 num_channels; |
| /* |
| Data indicating the Channel list and BW of the channel. |
| */ |
| NanChannelInfo channel_info[NAN_MAX_CHANNEL_INFO_SUPPORTED]; |
| } NanDataPathConfirmInd; |
| |
| /* |
| Event indication of schedule update is received on both |
| initiator and responder when a schedule change occurs |
| */ |
| typedef struct { |
| /* |
| NMI mac address |
| */ |
| u8 peer_mac_addr[NAN_MAC_ADDR_LEN]; |
| /* |
| Reason code indicating the cause of schedule update. |
| BIT_0 NSS Update |
| BIT_1 Channel list update |
| */ |
| u32 schedule_update_reason_code; |
| /* Number of channels for which info is indicated */ |
| u32 num_channels; |
| /* |
| Data indicating the Channel list and BW of the channel. |
| */ |
| NanChannelInfo channel_info[NAN_MAX_CHANNEL_INFO_SUPPORTED]; |
| /* Number of NDP instance Ids */ |
| u8 num_ndp_instances; |
| /* |
| Unique token Id generated on the initiator/responder side |
| used for a NDP session between two NAN devices |
| */ |
| NanDataPathId ndp_instance_id[]; |
| } NanDataPathScheduleUpdateInd; |
| |
| /* |
| Event indication received on the |
| initiator/responder side terminating |
| a NDP session |
| */ |
| typedef struct { |
| u8 num_ndp_instances; |
| /* |
| Unique token Id generated on the initiator/responder side |
| used for a NDP session between two NAN devices |
| */ |
| NanDataPathId ndp_instance_id[]; |
| } NanDataPathEndInd; |
| |
| /* |
| Event indicating Range Request received on the |
| Published side. |
| */ |
| typedef struct { |
| u16 publish_id;/* id is existing publish */ |
| /* Range Requestor's MAC address */ |
| u8 range_req_intf_addr[NAN_MAC_ADDR_LEN]; |
| } NanRangeRequestInd; |
| |
| /* |
| Event indicating Range report on the |
| Published side. |
| */ |
| typedef struct { |
| u16 publish_id;/* id is existing publish */ |
| /* Range Requestor's MAC address */ |
| u8 range_req_intf_addr[NAN_MAC_ADDR_LEN]; |
| /* |
| Distance to the NAN device with the MAC address indicated |
| with ranged mac address. |
| */ |
| u32 range_measurement_mm; |
| } NanRangeReportInd; |
| |
| /* |
| NAN pairing initator request |
| */ |
| typedef struct { |
| /* |
| This Id is the Requestor Instance that is passed as |
| part of earlier MatchInd/FollowupInd message. |
| */ |
| u32 requestor_instance_id; |
| |
| /* |
| Discovery MAC addr of the publisher/peer |
| */ |
| u8 peer_disc_mac_addr[NAN_MAC_ADDR_LEN]; |
| |
| /* |
| Indicate the pairing session is of setup or verification |
| */ |
| NanPairingRequestType nan_pairing_request_type; |
| |
| /* |
| whether the pairing is opportunistic or password |
| */ |
| u8 is_opportunistic; |
| |
| /* |
| Security key info used for the pairing setup or verification |
| */ |
| NanSecurityKeyInfo key_info; |
| /* |
| AKM used for the pairing verification |
| */ |
| NanAkm akm; |
| |
| /* |
| Whether should cache the negotiated NIK/NPK for future verification |
| */ |
| u8 enable_pairing_cache; |
| |
| /* |
| The Identity key for pairing, can be used for pairing verification |
| */ |
| u8 nan_identity_key[NAN_IDENTITY_KEY_LEN]; |
| |
| /* |
| NAN Cipher Suite Type |
| */ |
| u32 cipher_type; |
| |
| } NanPairingRequest; |
| |
| /* |
| Data struct to initiate a pairing response on the responder side for an indication received with a |
| pairing request |
| */ |
| typedef struct { |
| |
| /* |
| Unique token Id generated on the initiator/responder side |
| used for a pairing session between two NAN devices |
| */ |
| u32 pairing_instance_id; |
| |
| /* |
| Indicate the pairing session is setup or verification |
| */ |
| NanPairingRequestType nan_pairing_request_type; |
| |
| /* Response Code indicating ACCEPT/REJECT */ |
| NanPairingResponseCode rsp_code; |
| |
| /* |
| whether the pairing is opportunistic or password |
| */ |
| u8 is_opportunistic; |
| |
| /* |
| Security key info used for the pairing setup or verification |
| */ |
| NanSecurityKeyInfo key_info; |
| |
| /* |
| AKM used for the pairing verification |
| */ |
| NanAkm akm; |
| |
| /* |
| Whether should cache the negotiated NIK/NPK for future verification |
| */ |
| u8 enable_pairing_cache; |
| |
| /* |
| The Identity key for pairing, can be used for pairing verification |
| */ |
| u8 nan_identity_key[NAN_IDENTITY_KEY_LEN]; |
| |
| /* |
| NAN Cipher Suite Type |
| */ |
| u32 cipher_type; |
| } NanPairingIndicationResponse; |
| |
| typedef struct { |
| /* |
| Unique token Id generated on the initiator/responder side |
| used for a pairing session between two NAN devices |
| */ |
| u32 pairing_instance_id; |
| } NanPairingEndRequest; |
| |
| /* |
| Event indication received on the responder side when a Nan pairing session is initiated on the |
| Initiator side |
| */ |
| typedef struct { |
| /* Publish instance id generated on Publisher side corresponding to a session */ |
| u16 publish_subscribe_id; |
| /* |
| This Id is the Requestor Instance that is passed as |
| part of earlier MatchInd/FollowupInd message. |
| */ |
| u32 requestor_instance_id; |
| /* |
| Unique Instance Id corresponding to a service/session. |
| This is similar to the publish_id generated on the |
| publisher side |
| */ |
| u32 pairing_instance_id; |
| /* Discovery MAC addr of the peer/initiator */ |
| u8 peer_disc_mac_addr[NAN_MAC_ADDR_LEN]; |
| /* Indicate the pairing session is setup or verification */ |
| NanPairingRequestType nan_pairing_request_type; |
| /* Whether should cache the negotiated NIK/NPK for future verification */ |
| u8 enable_pairing_cache; |
| /* The NIRA from peer for Nan pairing verification */ |
| NanIdentityResolutionAttribute nira; |
| } NanPairingRequestInd; |
| |
| /* |
| The security info negotiate after the pairing setup for caching |
| */ |
| typedef struct { |
| /* The inentity key of peer device*/ |
| u8 peer_nan_identity_key[NAN_IDENTITY_KEY_LEN]; |
| /* The inentity key of local device*/ |
| u8 local_nan_identity_key[NAN_IDENTITY_KEY_LEN]; |
| /* The PMK excahnge between two devices*/ |
| NanSecurityPmk npk; |
| /* The AKM used during the key exchange*/ |
| NanAkm akm; |
| /* NAN Cipher Suite Type */ |
| u32 cipher_type; |
| } NpkSecurityAssociation; |
| |
| /* |
| Event indication of pairing confirm is received on both |
| initiator and responder side confirming a pairing session |
| */ |
| typedef struct { |
| /* |
| Unique token Id generated on the initiator/responder side |
| used for a pairing session between two NAN devices |
| */ |
| u32 pairing_instance_id; |
| /* Response code indicating ACCEPT/REJECT */ |
| NanPairingResponseCode rsp_code; |
| /* |
| Reason code indicating the cause for REJECT. |
| NAN_STATUS_SUCCESS and NAN_STATUS_PROTOCOL_FAILURE are |
| expected reason codes. |
| */ |
| NanStatusType reason_code; |
| /* |
| Indicate the pairing session is setup or verification |
| */ |
| NanPairingRequestType nan_pairing_request_type; |
| /* Whether should cache the negotiated NIK/NPK for future verification */ |
| u8 enable_pairing_cache; |
| /* |
| The security association info negotiated in the pairing setup, used for future verification |
| */ |
| NpkSecurityAssociation npk_security_association; |
| } NanPairingConfirmInd; |
| |
| /* |
| NAN pairing bootstrapping initiator request |
| */ |
| typedef struct { |
| /* Publish or Subscribe Id of local Publish/Subscribe */ |
| u16 publish_subscribe_id; |
| |
| /* |
| This Id is the Requestor Instance that is passed as |
| part of earlier MatchInd/FollowupInd message. |
| */ |
| u32 requestor_instance_id; |
| |
| /* |
| Discovery MAC addr of the publisher/peer |
| */ |
| u8 peer_disc_mac_addr[NAN_MAC_ADDR_LEN]; |
| |
| /* Proposed bootstrapping method */ |
| u16 request_bootstrapping_method; |
| |
| /* |
| Sequence of values which further specify the published service beyond |
| the service name. |
| */ |
| u16 service_specific_info_len; |
| u8 service_specific_info[NAN_MAX_SERVICE_SPECIFIC_INFO_LEN]; |
| |
| /* |
| Sequence of values indicating the service specific info in SDEA |
| Used for service managed bootstrapping method |
| */ |
| u16 sdea_service_specific_info_len; |
| u8 sdea_service_specific_info[NAN_MAX_SDEA_SERVICE_SPECIFIC_INFO_LEN]; |
| |
| /* Indicates that this is comeback Bootstrapping request */ |
| u8 comeback; |
| |
| /* The length of cookie. */ |
| u32 cookie_length; |
| |
| /* Cookie for the follow up request */ |
| u8 cookie[]; |
| |
| } NanBootstrappingRequest; |
| /* |
| NAN pairing bootstrapping response from responder to a initate request |
| */ |
| typedef struct { |
| /* Publish or Subscribe Id of local Publish/Subscribe */ |
| u16 publish_subscribe_id; |
| |
| /* |
| This Id is the Peer Instance that is passed as |
| part of earlier MatchInd/FollowupInd message. |
| */ |
| u32 service_instance_id; |
| |
| /* Discovery MAC addr of the peer/initiator */ |
| u8 peer_disc_mac_addr[NAN_MAC_ADDR_LEN]; |
| |
| /* |
| Sequence of values which further specify the published service beyond |
| the service name. |
| */ |
| u16 service_specific_info_len; |
| u8 service_specific_info[NAN_MAX_SERVICE_SPECIFIC_INFO_LEN]; |
| |
| /* |
| Sequence of values indicating the service specific info in SDEA |
| Used for service managed bootstrapping method |
| */ |
| u16 sdea_service_specific_info_len; |
| u8 sdea_service_specific_info[NAN_MAX_SDEA_SERVICE_SPECIFIC_INFO_LEN]; |
| |
| /* Response Code indicating ACCEPT/REJECT */ |
| NanBootstrappingResponseCode rsp_code; |
| |
| /* The delay of bootstrapping in seconds */ |
| u32 come_back_delay; |
| |
| /* The length of cookie. */ |
| u32 cookie_length; |
| |
| /* Cookie for the follow up response */ |
| u8 cookie[]; |
| |
| } NanBootstrappingIndicationResponse; |
| |
| /* |
| Event indication received on the responder side when a Nan bootsrapping session is initiated on |
| the Initiator side |
| */ |
| typedef struct { |
| /* Publish or Subscribe Id of an earlier Publish/Subscribe */ |
| u16 publish_subscribe_id; |
| /* |
| Unique Instance Id corresponding to a service/session. |
| This is similar to the publish_id generated on the |
| publisher side |
| */ |
| u32 bootstrapping_instance_id; |
| /* |
| This Id is the Requestor Instance that is passed as |
| part of earlier MatchInd/FollowupInd message. |
| */ |
| u32 requestor_instance_id; |
| /* Discovery MAC addr of the peer/initiator */ |
| u8 peer_disc_mac_addr[NAN_MAC_ADDR_LEN]; |
| /* Proposed bootstrapping method from peer*/ |
| u16 request_bootstrapping_method; |
| |
| } NanBootstrappingRequestInd; |
| |
| /* |
| Event indication of bootstapping confirm is received on both |
| initiator side confirming a bootstrapping method |
| */ |
| typedef struct { |
| /* |
| Unique token Id generated on the initiator/responder side |
| used for a bootstrapping session between two NAN devices |
| */ |
| u32 bootstrapping_instance_id; |
| /* Response Code indicating ACCEPT/REJECT */ |
| NanBootstrappingResponseCode rsp_code; |
| /* |
| Reason code indicating the cause for REJECT. |
| NAN_STATUS_SUCCESS and NAN_STATUS_PROTOCOL_FAILURE are |
| expected reason codes. |
| */ |
| NanStatusType reason_code; |
| /* The delay of bootstrapping in seconds */ |
| u32 come_back_delay; |
| |
| /* The length of cookie. */ |
| u32 cookie_length; |
| |
| /* Cookie received from the comeback response */ |
| u8 cookie[]; |
| |
| } NanBootstrappingConfirmInd; |
| |
| /* |
| Event indication the device enter or exist the suspension mode |
| */ |
| typedef struct { |
| /* Indication the device is suspended or not */ |
| bool is_suspended; |
| } NanSuspensionModeChangeInd; |
| |
| /* Response and Event Callbacks */ |
| typedef struct { |
| /* NotifyResponse invoked to notify the status of the Request */ |
| void (*NotifyResponse)(transaction_id id, NanResponseMsg* rsp_data); |
| /* Callbacks for various Events */ |
| void (*EventPublishReplied)(NanPublishRepliedInd *event); |
| void (*EventPublishTerminated)(NanPublishTerminatedInd* event); |
| void (*EventMatch) (NanMatchInd* event); |
| void (*EventMatchExpired) (NanMatchExpiredInd* event); |
| void (*EventSubscribeTerminated) (NanSubscribeTerminatedInd* event); |
| void (*EventFollowup) (NanFollowupInd* event); |
| void (*EventDiscEngEvent) (NanDiscEngEventInd* event); |
| void (*EventDisabled) (NanDisabledInd* event); |
| void (*EventTca) (NanTCAInd* event); |
| void (*EventBeaconSdfPayload) (NanBeaconSdfPayloadInd* event); |
| void (*EventDataRequest)(NanDataPathRequestInd* event); |
| void (*EventDataConfirm)(NanDataPathConfirmInd* event); |
| void (*EventDataEnd)(NanDataPathEndInd* event); |
| void (*EventTransmitFollowup) (NanTransmitFollowupInd* event); |
| void (*EventRangeRequest) (NanRangeRequestInd* event); |
| void (*EventRangeReport) (NanRangeReportInd* event); |
| void (*EventScheduleUpdate) (NanDataPathScheduleUpdateInd* event); |
| void (*EventPairingRequest) (NanPairingRequestInd* event); |
| void (*EventPairingConfirm) (NanPairingConfirmInd* event); |
| void (*EventBootstrappingRequest) (NanBootstrappingRequestInd* event); |
| void (*EventBootstrappingConfirm) (NanBootstrappingConfirmInd* event); |
| void (*EventSuspensionModeChange) (NanSuspensionModeChangeInd* event); |
| } NanCallbackHandler; |
| |
| /**@brief nan_enable_request |
| * Enable NAN functionality |
| * |
| * @param transaction_id: |
| * @param wifi_interface_handle: |
| * @param NanEnableRequest: |
| * @return Synchronous wifi_error |
| * @return Asynchronous NotifyResponse CB return |
| * NAN_STATUS_SUCCESS |
| * NAN_STATUS_ALREADY_ENABLED |
| * NAN_STATUS_INVALID_PARAM |
| * NAN_STATUS_INTERNAL_FAILURE |
| * NAN_STATUS_PROTOCOL_FAILURE |
| * NAN_STATUS_NAN_NOT_ALLOWED |
| */ |
| wifi_error nan_enable_request(transaction_id id, |
| wifi_interface_handle iface, |
| NanEnableRequest* msg); |
| |
| /**@brief nan_disbale_request |
| * Disable NAN functionality. |
| * |
| * @param transaction_id: |
| * @param wifi_interface_handle: |
| * @param NanDisableRequest: |
| * @return Synchronous wifi_error |
| * @return Asynchronous NotifyResponse CB return |
| * NAN_STATUS_SUCCESS |
| * NAN_STATUS_PROTOCOL_FAILURE |
| * |
| */ |
| wifi_error nan_disable_request(transaction_id id, |
| wifi_interface_handle iface); |
| |
| /**@brief nan_publish_request |
| * Publish request to advertize a service |
| * |
| * @param transaction_id: |
| * @param wifi_interface_handle: |
| * @param NanPublishRequest: |
| * @return Synchronous wifi_error |
| * @return Asynchronous NotifyResponse CB return |
| * NAN_STATUS_SUCCESS |
| * NAN_STATUS_INVALID_PARAM |
| * NAN_STATUS_PROTOCOL_FAILURE |
| * NAN_STATUS_NO_RESOURCE_AVAILABLE |
| * NAN_STATUS_INVALID_PUBLISH_SUBSCRIBE_ID |
| */ |
| wifi_error nan_publish_request(transaction_id id, |
| wifi_interface_handle iface, |
| NanPublishRequest* msg); |
| |
| /**@brief nan_publish_cancel_request |
| * Cancel previous publish request |
| * |
| * @param transaction_id: |
| * @param wifi_interface_handle: |
| * @param NanPublishCancelRequest: |
| * @return Synchronous wifi_error |
| * @return Asynchronous NotifyResponse CB return |
| * NAN_STATUS_SUCCESS |
| * NAN_STATUS_INVALID_PUBLISH_SUBSCRIBE_ID |
| * NAN_STATUS_INTERNAL_FAILURE |
| */ |
| wifi_error nan_publish_cancel_request(transaction_id id, |
| wifi_interface_handle iface, |
| NanPublishCancelRequest* msg); |
| |
| /**@brief nan_subscribe_request |
| * Subscribe request to search for a service |
| * |
| * @param transaction_id: |
| * @param wifi_interface_handle: |
| * @param NanSubscribeRequest: |
| * @return Synchronous wifi_error |
| * @return Asynchronous NotifyResponse CB return |
| * NAN_STATUS_SUCCESS |
| * NAN_STATUS_INVALID_PARAM |
| * NAN_STATUS_PROTOCOL_FAILURE |
| * NAN_STATUS_INTERNAL_FAILURE |
| * NAN_STATUS_NO_SPACE_AVAILABLE |
| * NAN_STATUS_INVALID_PUBLISH_SUBSCRIBE_ID |
| */ |
| wifi_error nan_subscribe_request(transaction_id id, |
| wifi_interface_handle iface, |
| NanSubscribeRequest* msg); |
| |
| /**@brief nan_subscribe_cancel_request |
| * Cancel previous subscribe requests. |
| * |
| * @param transaction_id: |
| * @param wifi_interface_handle: |
| * @param NanSubscribeRequest: |
| * @return Synchronous wifi_error |
| * @return Asynchronous NotifyResponse CB return |
| * NAN_STATUS_SUCCESS |
| * NAN_STATUS_INVALID_PUBLISH_SUBSCRIBE_ID |
| * NAN_STATUS_INTERNAL_FAILURE |
| */ |
| wifi_error nan_subscribe_cancel_request(transaction_id id, |
| wifi_interface_handle iface, |
| NanSubscribeCancelRequest* msg); |
| |
| /**@brief nan_transmit_followup_request |
| * NAN transmit follow up request |
| * |
| * @param transaction_id: |
| * @param wifi_interface_handle: |
| * @param NanTransmitFollowupRequest: |
| * @return Synchronous wifi_error |
| * @return Asynchronous NotifyResponse CB return |
| * NAN_STATUS_SUCCESS |
| * NAN_STATUS_INVALID_PARAM |
| * NAN_STATUS_INTERNAL_FAILURE |
| * NAN_STATUS_INVALID_PUBLISH_SUBSCRIBE_ID |
| * NAN_STATUS_INVALID_REQUESTOR_INSTANCE_ID |
| * NAN_STATUS_FOLLOWUP_QUEUE_FULL |
| * @return Asynchronous TransmitFollowupInd CB return |
| * NAN_STATUS_SUCCESS |
| * NAN_STATUS_PROTOCOL_FAILURE |
| * NAN_STATUS_NO_OTA_ACK |
| */ |
| wifi_error nan_transmit_followup_request(transaction_id id, |
| wifi_interface_handle iface, |
| NanTransmitFollowupRequest* msg); |
| |
| /**@brief nan_stats_request |
| * Request NAN statistics from Discovery Engine. |
| * |
| * @param transaction_id: |
| * @param wifi_interface_handle: |
| * @param NanStatsRequest: |
| * @return Synchronous wifi_error |
| * @return Asynchronous NotifyResponse CB return |
| * NAN_STATUS_SUCCESS |
| * NAN_STATUS_INTERNAL_FAILURE |
| * NAN_STATUS_INVALID_PARAM |
| */ |
| wifi_error nan_stats_request(transaction_id id, |
| wifi_interface_handle iface, |
| NanStatsRequest* msg); |
| |
| /**@brief nan_config_request |
| * NAN configuration request. |
| * |
| * @param transaction_id: |
| * @param wifi_interface_handle: |
| * @param NanConfigRequest: |
| * @return Synchronous wifi_error |
| * @return Asynchronous NotifyResponse CB return |
| * NAN_STATUS_SUCCESS |
| * NAN_STATUS_INVALID_PARAM |
| * NAN_STATUS_PROTOCOL_FAILURE |
| * NAN_STATUS_INTERNAL_FAILURE |
| */ |
| wifi_error nan_config_request(transaction_id id, |
| wifi_interface_handle iface, |
| NanConfigRequest* msg); |
| |
| /**@brief nan_tca_request |
| * Configure the various Threshold crossing alerts |
| * |
| * @param transaction_id: |
| * @param wifi_interface_handle: |
| * @param NanStatsRequest: |
| * @return Synchronous wifi_error |
| * @return Asynchronous NotifyResponse CB return |
| * NAN_STATUS_SUCCESS |
| * NAN_STATUS_INVALID_PARAM |
| * NAN_STATUS_INTERNAL_FAILURE |
| */ |
| wifi_error nan_tca_request(transaction_id id, |
| wifi_interface_handle iface, |
| NanTCARequest* msg); |
| |
| /**@brief nan_beacon_sdf_payload_request |
| * Set NAN Beacon or sdf payload to discovery engine. |
| * This instructs the Discovery Engine to begin publishing the |
| * received payload in any Beacon or Service Discovery Frame transmitted |
| * |
| * @param transaction_id: |
| * @param wifi_interface_handle: |
| * @param NanStatsRequest: |
| * @return Synchronous wifi_error |
| * @return Asynchronous NotifyResponse CB return |
| * NAN_STATUS_SUCCESS |
| * NAN_STATUS_INVALID_PARAM |
| * NAN_STATUS_INTERNAL_FAILURE |
| */ |
| wifi_error nan_beacon_sdf_payload_request(transaction_id id, |
| wifi_interface_handle iface, |
| NanBeaconSdfPayloadRequest* msg); |
| |
| /* Register NAN callbacks. */ |
| wifi_error nan_register_handler(wifi_interface_handle iface, |
| NanCallbackHandler handlers); |
| |
| /* Get NAN HAL version. */ |
| wifi_error nan_get_version(wifi_handle handle, |
| NanVersion* version); |
| |
| /**@brief nan_get_capabilities |
| * Get NAN Capabilities |
| * |
| * @param transaction_id: |
| * @param wifi_interface_handle: |
| * @return Synchronous wifi_error |
| * @return Asynchronous NotifyResponse CB return |
| * NAN_STATUS_SUCCESS |
| */ |
| /* Get NAN capabilities. */ |
| wifi_error nan_get_capabilities(transaction_id id, |
| wifi_interface_handle iface); |
| |
| /* ========== Nan Data Path APIs ================ */ |
| /**@brief nan_data_interface_create |
| * Create NAN Data Interface. |
| * |
| * @param transaction_id: |
| * @param wifi_interface_handle: |
| * @param iface_name: |
| * @return Synchronous wifi_error |
| * @return Asynchronous NotifyResponse CB return |
| * NAN_STATUS_SUCCESS |
| * NAN_STATUS_INVALID_PARAM |
| * NAN_STATUS_INTERNAL_FAILURE |
| */ |
| wifi_error nan_data_interface_create(transaction_id id, |
| wifi_interface_handle iface, |
| char* iface_name); |
| |
| /**@brief nan_data_interface_delete |
| * Delete NAN Data Interface. |
| * |
| * @param transaction_id: |
| * @param wifi_interface_handle: |
| * @param iface_name: |
| * @return Synchronous wifi_error |
| * @return Asynchronous NotifyResponse CB return |
| * NAN_STATUS_SUCCESS |
| * NAN_STATUS_INVALID_PARAM |
| * NAN_STATUS_INTERNAL_FAILURE |
| */ |
| wifi_error nan_data_interface_delete(transaction_id id, |
| wifi_interface_handle iface, |
| char* iface_name); |
| |
| /**@brief nan_data_request_initiator |
| * Initiate a NAN Data Path session. |
| * |
| * @param transaction_id: |
| * @param wifi_interface_handle: |
| * @param NanDataPathInitiatorRequest: |
| * @return Synchronous wifi_error |
| * @return Asynchronous NotifyResponse CB return |
| * NAN_STATUS_SUCCESS |
| * NAN_STATUS_INVALID_PARAM |
| * NAN_STATUS_INTERNAL_FAILURE |
| * NAN_STATUS_PROTOCOL_FAILURE |
| * NAN_STATUS_INVALID_REQUESTOR_INSTANCE_ID |
| */ |
| wifi_error nan_data_request_initiator(transaction_id id, |
| wifi_interface_handle iface, |
| NanDataPathInitiatorRequest* msg); |
| |
| /**@brief nan_data_indication_response |
| * Response to a data indication received |
| * corresponding to a NDP session. An indication |
| * is received with a data request and the responder |
| * will send a data response |
| * |
| * @param transaction_id: |
| * @param wifi_interface_handle: |
| * @param NanDataPathIndicationResponse: |
| * @return Synchronous wifi_error |
| * @return Asynchronous NotifyResponse CB return |
| * NAN_STATUS_SUCCESS |
| * NAN_STATUS_INVALID_PARAM |
| * NAN_STATUS_INTERNAL_FAILURE |
| * NAN_STATUS_PROTOCOL_FAILURE |
| * NAN_STATUS_INVALID_NDP_ID |
| */ |
| wifi_error nan_data_indication_response(transaction_id id, |
| wifi_interface_handle iface, |
| NanDataPathIndicationResponse* msg); |
| |
| /**@brief nan_data_end |
| * NDL termination request: from either Initiator/Responder |
| * |
| * @param transaction_id: |
| * @param wifi_interface_handle: |
| * @param NanDataPathEndRequest: |
| * @return Synchronous wifi_error |
| * @return Asynchronous NotifyResponse CB return |
| * NAN_STATUS_SUCCESS |
| * NAN_STATUS_INVALID_PARAM |
| * NAN_STATUS_INTERNAL_FAILURE |
| * NAN_STATUS_PROTOCOL_FAILURE |
| * NAN_STATUS_INVALID_NDP_ID |
| */ |
| wifi_error nan_data_end(transaction_id id, |
| wifi_interface_handle iface, |
| NanDataPathEndRequest* msg); |
| /**@brief nan_pairing_request |
| * Initiate a NAN Pairingsession. |
| * |
| * @param transaction_id: |
| * @param wifi_interface_handle: |
| * @param NanPairingRequest: |
| * @return Synchronous wifi_error |
| * @return Asynchronous NotifyResponse CB return |
| * NAN_STATUS_SUCCESS |
| * NAN_STATUS_INVALID_PARAM |
| * NAN_STATUS_INTERNAL_FAILURE |
| * NAN_STATUS_PROTOCOL_FAILURE |
| * NAN_STATUS_INVALID_REQUESTOR_INSTANCE_ID |
| */ |
| wifi_error nan_pairing_request(transaction_id id, wifi_interface_handle iface, |
| NanPairingRequest* msg); |
| |
| /**@brief nan_pairing_indication_response |
| * Response to a pairing indication received |
| * corresponding to a pairing session. An indication |
| * is received with a pairing request and the responder |
| * will send a pairing response |
| * |
| * @param transaction_id: |
| * @param wifi_interface_handle: |
| * @param NanPairingIndicationResponse: |
| * @return Synchronous wifi_error |
| * @return Asynchronous NotifyResponse CB return |
| * NAN_STATUS_SUCCESS |
| * NAN_STATUS_INVALID_PARAM |
| * NAN_STATUS_INTERNAL_FAILURE |
| * NAN_STATUS_PROTOCOL_FAILURE |
| * NAN_STATUS_INVALID_PAIRING_ID |
| */ |
| wifi_error nan_pairing_indication_response(transaction_id id, wifi_interface_handle iface, |
| NanPairingIndicationResponse* msg); |
| |
| /**@brief nan_pairing_end |
| * Cancel and remove the existing Pairing setups |
| * |
| * @param transaction_id: |
| * @param wifi_interface_handle: |
| * @param NanPairingEndRequest: |
| * @return Synchronous wifi_error |
| * @return Asynchronous NotifyResponse CB return |
| * NAN_STATUS_SUCCESS |
| * NAN_STATUS_INVALID_PARAM |
| * NAN_STATUS_INTERNAL_FAILURE |
| * NAN_STATUS_PROTOCOL_FAILURE |
| * NAN_STATUS_INVALID_PAIRING_ID |
| */ |
| wifi_error nan_pairing_end(transaction_id id, wifi_interface_handle iface, |
| NanPairingEndRequest* msg); |
| |
| /**@brief nan_bootstrapping_request |
| * Initiate a NAN Bootstrapping session. |
| * |
| * @param transaction_id: |
| * @param wifi_interface_handle: |
| * @param NanBootstrappingRequest: |
| * @return Synchronous wifi_error |
| * @return Asynchronous NotifyResponse CB return |
| * NAN_STATUS_SUCCESS |
| * NAN_STATUS_INVALID_PARAM |
| * NAN_STATUS_INTERNAL_FAILURE |
| * NAN_STATUS_PROTOCOL_FAILURE |
| * NAN_STATUS_INVALID_REQUESTOR_INSTANCE_ID |
| */ |
| wifi_error nan_bootstrapping_request(transaction_id id, wifi_interface_handle iface, |
| NanBootstrappingRequest* msg); |
| |
| /**@brief nan_bootstrapping_indication_response |
| * Response to a pairing indication received |
| * corresponding to a pairing session. An indication |
| * is received with a pairing request and the responder |
| * will send a pairing response |
| * |
| * @param transaction_id: |
| * @param wifi_interface_handle: |
| * @param NanBootstrappingIndicationResponse: |
| * @return Synchronous wifi_error |
| * @return Asynchronous NotifyResponse CB return |
| * NAN_STATUS_SUCCESS |
| * NAN_STATUS_INVALID_PARAM |
| * NAN_STATUS_INTERNAL_FAILURE |
| * NAN_STATUS_PROTOCOL_FAILURE |
| * NAN_STATUS_INVALID_BOOTSTRAPPING_ID |
| */ |
| wifi_error nan_bootstrapping_indication_response(transaction_id id, wifi_interface_handle iface, |
| NanBootstrappingIndicationResponse* msg); |
| |
| #ifdef __cplusplus |
| } |
| #endif /* __cplusplus */ |
| |
| #endif /* __NAN_H__ */ |