| /* |
| * Copyright (C) 2014 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. |
| * |
| * Changes from Qualcomm Innovation Center are provided under the following license: |
| * |
| * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted (subject to the limitations in the |
| * disclaimer below) provided that the following conditions are met: |
| * |
| * * Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * |
| * * Redistributions in binary form must reproduce the above |
| * copyright notice, this list of conditions and the following |
| * disclaimer in the documentation and/or other materials provided |
| * with the distribution. |
| * |
| * * Neither the name of Qualcomm Innovation Center, Inc. nor the names of its |
| * contributors may be used to endorse or promote products derived |
| * from this software without specific prior written permission. |
| * |
| * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE |
| * GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT |
| * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED |
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
| * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
| * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR |
| * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
| * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE |
| * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
| * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER |
| * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
| * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN |
| * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| #ifndef __NAN_I_H__ |
| #define __NAN_I_H__ |
| |
| #include "common.h" |
| #include "cpp_bindings.h" |
| #include "wifi_hal.h" |
| |
| #ifdef __cplusplus |
| extern "C" |
| { |
| #endif /* __cplusplus */ |
| |
| #ifndef PACKED |
| #define PACKED __attribute__((packed)) |
| #endif |
| #define BIT_NONE 0x00 |
| #define BIT_0 0x01 |
| #define BIT_1 0x02 |
| #define BIT_2 0x04 |
| #define BIT_3 0x08 |
| #define BIT_4 0x10 |
| #define BIT_5 0x20 |
| #define BIT_6 0x40 |
| #define BIT_7 0x80 |
| #define BIT_8 0x0100 |
| #define BIT_9 0x0200 |
| #define BIT_10 0x0400 |
| #define BIT_11 0x0800 |
| #define BIT_12 0x1000 |
| #define BIT_13 0x2000 |
| #define BIT_14 0x4000 |
| #define BIT_15 0x8000 |
| #define BIT_16 0x010000 |
| #define BIT_17 0x020000 |
| #define BIT_18 0x040000 |
| #define BIT_19 0x080000 |
| #define BIT_20 0x100000 |
| #define BIT_21 0x200000 |
| #define BIT_22 0x400000 |
| #define BIT_23 0x800000 |
| #define BIT_24 0x01000000 |
| #define BIT_25 0x02000000 |
| #define BIT_26 0x04000000 |
| #define BIT_27 0x08000000 |
| #define BIT_28 0x10000000 |
| #define BIT_29 0x20000000 |
| #define BIT_30 0x40000000 |
| #define BIT_31 0x80000000 |
| |
| /** macro to convert FW MAC address from WMI word format to User Space MAC char array */ |
| #define FW_MAC_ADDR_TO_CHAR_ARRAY(fw_mac_addr, mac_addr) do { \ |
| (mac_addr)[0] = ((fw_mac_addr).mac_addr31to0) & 0xff; \ |
| (mac_addr)[1] = (((fw_mac_addr).mac_addr31to0) >> 8) & 0xff; \ |
| (mac_addr)[2] = (((fw_mac_addr).mac_addr31to0) >> 16) & 0xff; \ |
| (mac_addr)[3] = (((fw_mac_addr).mac_addr31to0) >> 24) & 0xff; \ |
| (mac_addr)[4] = ((fw_mac_addr).mac_addr47to32) & 0xff; \ |
| (mac_addr)[5] = (((fw_mac_addr).mac_addr47to32) >> 8) & 0xff; \ |
| } while (0) |
| |
| /** macro to convert User space MAC address from char array to FW WMI word format */ |
| #define CHAR_ARRAY_TO_MAC_ADDR(mac_addr, fw_mac_addr) do { \ |
| (fw_mac_addr).mac_addr31to0 = \ |
| ((mac_addr)[0] | ((mac_addr)[1] << 8) \ |
| | ((mac_addr)[2] << 16) | ((mac_addr)[3] << 24)); \ |
| (fw_mac_addr).mac_addr47to32 = \ |
| ((mac_addr)[4] | ((mac_addr)[5] << 8)); \ |
| } while (0) |
| |
| /*--------------------------------------------------------------------------- |
| * WLAN NAN CONSTANTS |
| *--------------------------------------------------------------------------*/ |
| |
| typedef enum |
| { |
| NAN_MSG_ID_ERROR_RSP = 0, |
| NAN_MSG_ID_CONFIGURATION_REQ = 1, |
| NAN_MSG_ID_CONFIGURATION_RSP = 2, |
| NAN_MSG_ID_PUBLISH_SERVICE_REQ = 3, |
| NAN_MSG_ID_PUBLISH_SERVICE_RSP = 4, |
| NAN_MSG_ID_PUBLISH_SERVICE_CANCEL_REQ = 5, |
| NAN_MSG_ID_PUBLISH_SERVICE_CANCEL_RSP = 6, |
| NAN_MSG_ID_PUBLISH_REPLIED_IND = 7, |
| NAN_MSG_ID_PUBLISH_TERMINATED_IND = 8, |
| NAN_MSG_ID_SUBSCRIBE_SERVICE_REQ = 9, |
| NAN_MSG_ID_SUBSCRIBE_SERVICE_RSP = 10, |
| NAN_MSG_ID_SUBSCRIBE_SERVICE_CANCEL_REQ = 11, |
| NAN_MSG_ID_SUBSCRIBE_SERVICE_CANCEL_RSP = 12, |
| NAN_MSG_ID_MATCH_IND = 13, |
| NAN_MSG_ID_MATCH_EXPIRED_IND = 14, |
| NAN_MSG_ID_SUBSCRIBE_TERMINATED_IND = 15, |
| NAN_MSG_ID_DE_EVENT_IND = 16, |
| NAN_MSG_ID_TRANSMIT_FOLLOWUP_REQ = 17, |
| NAN_MSG_ID_TRANSMIT_FOLLOWUP_RSP = 18, |
| NAN_MSG_ID_FOLLOWUP_IND = 19, |
| NAN_MSG_ID_STATS_REQ = 20, |
| NAN_MSG_ID_STATS_RSP = 21, |
| NAN_MSG_ID_ENABLE_REQ = 22, |
| NAN_MSG_ID_ENABLE_RSP = 23, |
| NAN_MSG_ID_DISABLE_REQ = 24, |
| NAN_MSG_ID_DISABLE_RSP = 25, |
| NAN_MSG_ID_DISABLE_IND = 26, |
| NAN_MSG_ID_TCA_REQ = 27, |
| NAN_MSG_ID_TCA_RSP = 28, |
| NAN_MSG_ID_TCA_IND = 29, |
| NAN_MSG_ID_BEACON_SDF_REQ = 30, |
| NAN_MSG_ID_BEACON_SDF_RSP = 31, |
| NAN_MSG_ID_BEACON_SDF_IND = 32, |
| NAN_MSG_ID_CAPABILITIES_REQ = 33, |
| NAN_MSG_ID_CAPABILITIES_RSP = 34, |
| NAN_MSG_ID_SELF_TRANSMIT_FOLLOWUP_IND = 35, |
| NAN_MSG_ID_RANGING_REQUEST_RECEVD_IND = 36, |
| NAN_MSG_ID_RANGING_RESULT_IND = 37, |
| NAN_MSG_ID_TESTMODE_REQ = 1025, |
| NAN_MSG_ID_TESTMODE_RSP = 1026 |
| } NanMsgId; |
| |
| /* |
| Various TLV Type ID sent as part of NAN Stats Response |
| or NAN TCA Indication |
| */ |
| typedef enum |
| { |
| NAN_TLV_TYPE_FIRST = 0, |
| |
| /* Service Discovery Frame types */ |
| NAN_TLV_TYPE_SDF_FIRST = NAN_TLV_TYPE_FIRST, |
| NAN_TLV_TYPE_SERVICE_NAME = NAN_TLV_TYPE_SDF_FIRST, |
| NAN_TLV_TYPE_SDF_MATCH_FILTER, |
| NAN_TLV_TYPE_TX_MATCH_FILTER, |
| NAN_TLV_TYPE_RX_MATCH_FILTER, |
| NAN_TLV_TYPE_SERVICE_SPECIFIC_INFO, |
| NAN_TLV_TYPE_EXT_SERVICE_SPECIFIC_INFO =5, |
| NAN_TLV_TYPE_VENDOR_SPECIFIC_ATTRIBUTE_TRANSMIT = 6, |
| NAN_TLV_TYPE_VENDOR_SPECIFIC_ATTRIBUTE_RECEIVE = 7, |
| NAN_TLV_TYPE_POST_NAN_CONNECTIVITY_CAPABILITIES_RECEIVE = 8, |
| NAN_TLV_TYPE_POST_NAN_DISCOVERY_ATTRIBUTE_RECEIVE = 9, |
| NAN_TLV_TYPE_BEACON_SDF_PAYLOAD_RECEIVE = 10, |
| NAN_TLV_TYPE_NAN_DATA_PATH_PARAMS = 11, |
| NAN_TLV_TYPE_NAN_DATA_SUPPORTED_BAND = 12, |
| NAN_TLV_TYPE_2G_COMMITTED_DW = 13, |
| NAN_TLV_TYPE_5G_COMMITTED_DW = 14, |
| NAN_TLV_TYPE_NAN_DATA_RESPONDER_MODE = 15, |
| NAN_TLV_TYPE_NAN_DATA_ENABLED_IN_MATCH = 16, |
| NAN_TLV_TYPE_NAN_SERVICE_ACCEPT_POLICY = 17, |
| NAN_TLV_TYPE_NAN_CSID = 18, |
| NAN_TLV_TYPE_NAN_SCID = 19, |
| NAN_TLV_TYPE_NAN_PMK = 20, |
| NAN_TLV_TYPE_SDEA_CTRL_PARAMS = 21, |
| NAN_TLV_TYPE_NAN_RANGING_CFG = 22, |
| NAN_TLV_TYPE_CONFIG_DISCOVERY_INDICATIONS = 23, |
| NAN_TLV_TYPE_NAN20_RANGING_REQUEST = 24, |
| NAN_TLV_TYPE_NAN20_RANGING_RESULT = 25, |
| NAN_TLV_TYPE_NAN20_RANGING_REQUEST_RECEIVED = 26, |
| NAN_TLV_TYPE_NAN_PASSPHRASE = 27, |
| NAN_TLV_TYPE_SDEA_SERVICE_SPECIFIC_INFO = 28, |
| NAN_TLV_TYPE_DEV_CAP_ATTR_CAPABILITY = 29, |
| NAN_TLV_TYPE_IP_TRANSPORT_PARAM = 30, |
| NAN_TLV_TYPE_SERVICE_ID = 31, |
| NAN_TLV_TYPE_SDF_LAST = 4095, |
| |
| /* Configuration types */ |
| NAN_TLV_TYPE_CONFIG_FIRST = 4096, |
| NAN_TLV_TYPE_24G_SUPPORT = NAN_TLV_TYPE_CONFIG_FIRST, |
| NAN_TLV_TYPE_24G_BEACON, |
| NAN_TLV_TYPE_24G_SDF, |
| NAN_TLV_TYPE_24G_RSSI_CLOSE, |
| NAN_TLV_TYPE_24G_RSSI_MIDDLE = 4100, |
| NAN_TLV_TYPE_24G_RSSI_CLOSE_PROXIMITY, |
| NAN_TLV_TYPE_5G_SUPPORT, |
| NAN_TLV_TYPE_5G_BEACON, |
| NAN_TLV_TYPE_5G_SDF, |
| NAN_TLV_TYPE_5G_RSSI_CLOSE, |
| NAN_TLV_TYPE_5G_RSSI_MIDDLE, |
| NAN_TLV_TYPE_5G_RSSI_CLOSE_PROXIMITY, |
| NAN_TLV_TYPE_SID_BEACON, |
| NAN_TLV_TYPE_HOP_COUNT_LIMIT, |
| NAN_TLV_TYPE_MASTER_PREFERENCE = 4110, |
| NAN_TLV_TYPE_CLUSTER_ID_LOW, |
| NAN_TLV_TYPE_CLUSTER_ID_HIGH, |
| NAN_TLV_TYPE_RSSI_AVERAGING_WINDOW_SIZE, |
| NAN_TLV_TYPE_CLUSTER_OUI_NETWORK_ID, |
| NAN_TLV_TYPE_SOURCE_MAC_ADDRESS, |
| NAN_TLV_TYPE_CLUSTER_ATTRIBUTE_IN_SDF, |
| NAN_TLV_TYPE_SOCIAL_CHANNEL_SCAN_PARAMS, |
| NAN_TLV_TYPE_DEBUGGING_FLAGS, |
| NAN_TLV_TYPE_POST_NAN_CONNECTIVITY_CAPABILITIES_TRANSMIT, |
| NAN_TLV_TYPE_POST_NAN_DISCOVERY_ATTRIBUTE_TRANSMIT = 4120, |
| NAN_TLV_TYPE_FURTHER_AVAILABILITY_MAP, |
| NAN_TLV_TYPE_HOP_COUNT_FORCE, |
| NAN_TLV_TYPE_RANDOM_FACTOR_FORCE, |
| NAN_TLV_TYPE_RANDOM_UPDATE_TIME = 4124, |
| NAN_TLV_TYPE_EARLY_WAKEUP, |
| NAN_TLV_TYPE_PERIODIC_SCAN_INTERVAL, |
| NAN_TLV_TYPE_DW_INTERVAL = 4128, |
| NAN_TLV_TYPE_DB_INTERVAL, |
| NAN_TLV_TYPE_FURTHER_AVAILABILITY, |
| NAN_TLV_TYPE_24G_CHANNEL, |
| NAN_TLV_TYPE_5G_CHANNEL, |
| NAN_TLV_TYPE_DISC_MAC_ADDR_RANDOM_INTERVAL, |
| NAN_TLV_TYPE_RANGING_AUTO_RESPONSE_CFG = 4134, |
| NAN_TLV_TYPE_SUBSCRIBE_SID_BEACON = 4135, |
| NAN_TLV_TYPE_DW_EARLY_TERMINATION = 4136, |
| NAN_TLV_TYPE_TX_RX_CHAINS = 4137, |
| NAN_TLV_TYPE_ENABLE_DEVICE_RANGING = 4138, |
| NAN_TLV_TYPE_CONFIG_LAST = 8191, |
| |
| /* Attributes types */ |
| NAN_TLV_TYPE_ATTRS_FIRST = 8192, |
| NAN_TLV_TYPE_AVAILABILITY_INTERVALS_MAP = NAN_TLV_TYPE_ATTRS_FIRST, |
| NAN_TLV_TYPE_WLAN_MESH_ID, |
| NAN_TLV_TYPE_MAC_ADDRESS, |
| NAN_TLV_TYPE_RECEIVED_RSSI_VALUE, |
| NAN_TLV_TYPE_CLUSTER_ATTRIBUTE, |
| NAN_TLV_TYPE_WLAN_INFRA_SSID, |
| NAN_TLV_TYPE_ATTRS_LAST = 12287, |
| |
| /* Events Type */ |
| NAN_TLV_TYPE_EVENTS_FIRST = 12288, |
| NAN_TLV_TYPE_EVENT_SELF_STATION_MAC_ADDRESS = NAN_TLV_TYPE_EVENTS_FIRST, |
| NAN_TLV_TYPE_EVENT_STARTED_CLUSTER, |
| NAN_TLV_TYPE_EVENT_JOINED_CLUSTER, |
| NAN_TLV_TYPE_EVENT_CLUSTER_SCAN_RESULTS, |
| NAN_TLV_TYPE_FAW_MEM_AVAIL, |
| NAN_TLV_TYPE_EVENTS_LAST = 16383, |
| |
| /* TCA types */ |
| NAN_TLV_TYPE_TCA_FIRST = 16384, |
| NAN_TLV_TYPE_CLUSTER_SIZE_REQ = NAN_TLV_TYPE_TCA_FIRST, |
| NAN_TLV_TYPE_CLUSTER_SIZE_RSP, |
| NAN_TLV_TYPE_TCA_LAST = 32767, |
| |
| /* Statistics types */ |
| NAN_TLV_TYPE_STATS_FIRST = 32768, |
| NAN_TLV_TYPE_DE_PUBLISH_STATS = NAN_TLV_TYPE_STATS_FIRST, |
| NAN_TLV_TYPE_DE_SUBSCRIBE_STATS, |
| NAN_TLV_TYPE_DE_MAC_STATS, |
| NAN_TLV_TYPE_DE_TIMING_SYNC_STATS, |
| NAN_TLV_TYPE_DE_DW_STATS, |
| NAN_TLV_TYPE_DE_STATS, |
| NAN_TLV_TYPE_STATS_LAST = 36863, |
| |
| /* Testmode types */ |
| NAN_TLV_TYPE_TESTMODE_FIRST = 36864, |
| NAN_TLV_TYPE_TESTMODE_GENERIC_CMD = NAN_TLV_TYPE_TESTMODE_FIRST, |
| NAN_TLV_TYPE_TESTMODE_LAST = 37000, |
| |
| NAN_TLV_TYPE_LAST = 65535 |
| } NanTlvType; |
| |
| /* 8-byte control message header used by NAN*/ |
| typedef struct PACKED |
| { |
| u16 msgVersion:4; |
| u16 msgId:12; |
| u16 msgLen; |
| u16 handle; |
| u16 transactionId; |
| } NanMsgHeader, *pNanMsgHeader; |
| |
| /* Enumeration for Version */ |
| typedef enum |
| { |
| NAN_MSG_VERSION1 = 1, |
| }NanMsgVersion; |
| |
| typedef struct PACKED |
| { |
| u16 type; |
| u16 length; |
| u8* value; |
| } NanTlv, *pNanTlv; |
| |
| #define SIZEOF_TLV_HDR (sizeof(NanTlv::type) + sizeof(NanTlv::length)) |
| /* NAN TLV Groups and Types */ |
| typedef enum |
| { |
| NAN_TLV_GROUP_FIRST = 0, |
| NAN_TLV_GROUP_SDF = NAN_TLV_GROUP_FIRST, |
| NAN_TLV_GROUP_CONFIG, |
| NAN_TLV_GROUP_STATS, |
| NAN_TLV_GROUP_ATTRS, |
| NAN_TLV_NUM_GROUPS, |
| NAN_TLV_GROUP_LAST = NAN_TLV_NUM_GROUPS |
| } NanTlvGroup; |
| |
| /* NAN Miscellaneous Constants */ |
| #define NAN_TTL_INFINITE 0 |
| #define NAN_REPLY_COUNT_INFINITE 0 |
| |
| /* NAN Confguration 5G Channel Access Bit */ |
| #define NAN_5G_CHANNEL_ACCESS_UNSUPPORTED 0 |
| #define NAN_5G_CHANNEL_ACCESS_SUPPORTED 1 |
| |
| /* NAN Configuration Service IDs Enclosure Bit */ |
| #define NAN_SIDS_NOT_ENCLOSED_IN_BEACONS 0 |
| #define NAN_SIBS_ENCLOSED_IN_BEACONS 1 |
| |
| /* NAN Configuration Priority */ |
| #define NAN_CFG_PRIORITY_SERVICE_DISCOVERY 0 |
| #define NAN_CFG_PRIORITY_DATA_CONNECTION 1 |
| |
| /* NAN Configuration 5G Channel Usage */ |
| #define NAN_5G_CHANNEL_USAGE_SYNC_AND_DISCOVERY 0 |
| #define NAN_5G_CHANNEL_USAGE_DISCOVERY_ONLY 1 |
| |
| /* NAN Configuration TX_Beacon Content */ |
| #define NAN_TX_BEACON_CONTENT_OLD_AM_INFO 0 |
| #define NAN_TX_BEACON_CONTENT_UPDATED_AM_INFO 1 |
| |
| /* NAN Configuration Miscellaneous Constants */ |
| #define NAN_MAC_INTERFACE_PERIODICITY_MIN 30 |
| #define NAN_MAC_INTERFACE_PERIODICITY_MAX 255 |
| |
| #define NAN_DW_RANDOM_TIME_MIN 120 |
| #define NAN_DW_RANDOM_TIME_MAX 240 |
| |
| #define NAN_INITIAL_SCAN_MIN_IDEAL_PERIOD 200 |
| #define NAN_INITIAL_SCAN_MAX_IDEAL_PERIOD 300 |
| |
| #define NAN_ONGOING_SCAN_MIN_PERIOD 10 |
| #define NAN_ONGOING_SCAN_MAX_PERIOD 30 |
| |
| #define NAN_HOP_COUNT_LIMIT 5 |
| |
| #define NAN_WINDOW_DW 0 |
| #define NAN_WINDOW_FAW 1 |
| |
| #define NAN_TLV_HEADER_SIZE 4 |
| |
| /* NAN Error Rsp */ |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| u16 status; |
| u16 value; |
| } NanErrorRspMsg, *pNanErrorRspMsg; |
| |
| //* NAN Publish Service Req */ |
| typedef struct PACKED |
| { |
| u16 ttl; |
| u16 period; |
| u32 replyIndFlag:1; |
| u32 publishType:2; |
| u32 txType:1; |
| u32 rssiThresholdFlag:1; |
| u32 ota_flag:1; |
| u32 matchAlg:2; |
| u32 count:8; |
| u32 connmap:8; |
| u32 pubTerminatedIndDisableFlag:1; |
| u32 pubMatchExpiredIndDisableFlag:1; |
| u32 followupRxIndDisableFlag:1; |
| u32 reserved2:5; |
| /* |
| * Excludes TLVs |
| * |
| * Required: Service Name, |
| * Optional: Tx Match Filter, Rx Match Filter, Service Specific Info, |
| */ |
| } NanPublishServiceReqParams, *pNanPublishServiceReqParams; |
| |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| NanPublishServiceReqParams publishServiceReqParams; |
| u8 ptlv[]; |
| } NanPublishServiceReqMsg, *pNanPublishServiceReqMsg; |
| |
| /* NAN Publish Service Rsp */ |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| /* status of the request */ |
| u16 status; |
| u16 value; |
| } NanPublishServiceRspMsg, *pNanPublishServiceRspMsg; |
| |
| /* NAN Publish Service Cancel Req */ |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| } NanPublishServiceCancelReqMsg, *pNanPublishServiceCancelReqMsg; |
| |
| /* NAN Publish Service Cancel Rsp */ |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| /* status of the request */ |
| u16 status; |
| u16 value; |
| } NanPublishServiceCancelRspMsg, *pNanPublishServiceCancelRspMsg; |
| |
| /* NAN Publish Terminated Ind */ |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| /* reason for the termination */ |
| u16 reason; |
| u16 reserved; |
| } NanPublishTerminatedIndMsg, *pNanPublishTerminatedIndMsg; |
| |
| /* Params for NAN Publish Replied Ind */ |
| typedef struct PACKED |
| { |
| u32 matchHandle; |
| } NanPublishRepliedIndParams; |
| |
| /* NAN Publish Replied Ind */ |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| NanPublishRepliedIndParams publishRepliedIndParams; |
| /* |
| * Excludes TLVs |
| * |
| * Required: MAC Address |
| * Optional: Received RSSI Value |
| * |
| */ |
| u8 ptlv[]; |
| } NanPublishRepliedIndMsg, *pNanPublishRepliedIndMsg; |
| |
| /* NAN Device Capability Attribute */ |
| typedef struct PACKED |
| { |
| u32 dfs_master:1; |
| u32 ext_key_id:1; |
| u32 simu_ndp_data_recept:1; |
| u32 ndpe_attr_supp:1; |
| u32 reserved:28; |
| } NanDevCapAttrCap, *pNanDevCapAttrCap; |
| |
| /* NAN Subscribe Service Req */ |
| typedef struct PACKED |
| { |
| u16 ttl; |
| u16 period; |
| u32 subscribeType:1; |
| u32 srfAttr:1; |
| u32 srfInclude:1; |
| u32 srfSend:1; |
| u32 ssiRequired:1; |
| u32 matchAlg:2; |
| u32 xbit:1; |
| u32 count:8; |
| u32 rssiThresholdFlag:1; |
| u32 ota_flag:1; |
| u32 subTerminatedIndDisableFlag:1; |
| u32 subMatchExpiredIndDisableFlag:1; |
| u32 followupRxIndDisableFlag:1; |
| u32 reserved:3; |
| u32 connmap:8; |
| /* |
| * Excludes TLVs |
| * |
| * Required: Service Name |
| * Optional: Rx Match Filter, Tx Match Filter, Service Specific Info, |
| */ |
| } NanSubscribeServiceReqParams, *pNanSubscribeServiceReqParams; |
| |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| NanSubscribeServiceReqParams subscribeServiceReqParams; |
| u8 ptlv[]; |
| } NanSubscribeServiceReqMsg, *pNanSubscribeServiceReqMsg; |
| |
| /* NAN Subscribe Service Rsp */ |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| /* status of the request */ |
| u16 status; |
| u16 value; |
| } NanSubscribeServiceRspMsg, *pNanSubscribeServiceRspMsg; |
| |
| /* NAN Subscribe Service Cancel Req */ |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| } NanSubscribeServiceCancelReqMsg, *pNanSubscribeServiceCancelReqMsg; |
| |
| /* NAN Subscribe Service Cancel Rsp */ |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| /* status of the request */ |
| u16 status; |
| u16 value; |
| } NanSubscribeServiceCancelRspMsg, *pNanSubscribeServiceCancelRspMsg; |
| |
| /* NAN Subscribe Match Ind */ |
| typedef struct PACKED |
| { |
| u32 matchHandle; |
| u32 matchOccuredFlag:1; |
| u32 outOfResourceFlag:1; |
| u32 reserved:30; |
| } NanMatchIndParams; |
| |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| NanMatchIndParams matchIndParams; |
| u8 ptlv[]; |
| } NanMatchIndMsg, *pNanMatchIndMsg; |
| |
| /* NAN Subscribe Unmatch Ind */ |
| typedef struct PACKED |
| { |
| u32 matchHandle; |
| } NanmatchExpiredIndParams; |
| |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| NanmatchExpiredIndParams matchExpiredIndParams; |
| } NanMatchExpiredIndMsg, *pNanMatchExpiredIndMsg; |
| |
| /* NAN Subscribe Terminated Ind */ |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| /* reason for the termination */ |
| u16 reason; |
| u16 reserved; |
| } NanSubscribeTerminatedIndMsg, *pNanSubscribeTerminatedIndMsg; |
| |
| /* Event Ind */ |
| typedef struct PACKED |
| { |
| u32 eventId:8; |
| u32 reserved:24; |
| } NanEventIndParams; |
| |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| u8 ptlv[]; |
| } NanEventIndMsg, *pNanEventIndMsg; |
| |
| /* NAN Transmit Followup Req */ |
| typedef struct PACKED |
| { |
| u32 matchHandle; |
| u32 priority:4; |
| u32 window:1; |
| u32 followupTxRspDisableFlag:1; |
| u32 reserved:26; |
| /* |
| * Excludes TLVs |
| * |
| * Required: Service Specific Info or Extended Service Specific Info |
| */ |
| } NanTransmitFollowupReqParams; |
| |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| NanTransmitFollowupReqParams transmitFollowupReqParams; |
| u8 ptlv[]; |
| } NanTransmitFollowupReqMsg, *pNanTransmitFollowupReqMsg; |
| |
| /* NAN Transmit Followup Rsp */ |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| /* status of the request */ |
| u16 status; |
| u16 value; |
| } NanTransmitFollowupRspMsg, *pNanTransmitFollowupRspMsg; |
| |
| /* NAN Publish Followup Ind */ |
| typedef struct PACKED |
| { |
| u32 matchHandle; |
| u32 window:1; |
| u32 reserved:31; |
| /* |
| * Excludes TLVs |
| * |
| * Required: Service Specific Info or Extended Service Specific Info |
| */ |
| } NanFollowupIndParams; |
| |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| NanFollowupIndParams followupIndParams; |
| u8 ptlv[]; |
| } NanFollowupIndMsg, *pNanFollowupIndMsg; |
| |
| /* NAN Statistics Req */ |
| typedef struct PACKED |
| { |
| u32 statsType:8; |
| u32 clear:1; |
| u32 reserved:23; |
| } NanStatsReqParams, *pNanStatsReqParams; |
| |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| NanStatsReqParams statsReqParams; |
| } NanStatsReqMsg, *pNanStatsReqMsg; |
| |
| /* NAN Statistics Rsp */ |
| typedef struct PACKED |
| { |
| /* status of the request */ |
| u16 status; |
| u16 value; |
| u8 statsType; |
| u8 reserved; |
| } NanStatsRspParams, *pNanStatsRspParams; |
| |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| NanStatsRspParams statsRspParams; |
| u8 ptlv[]; |
| } NanStatsRspMsg, *pNanStatsRspMsg; |
| |
| typedef struct PACKED |
| { |
| u8 count:7; |
| u8 s:1; |
| } NanSidAttr, *pSidAttr; |
| |
| |
| /* NAN Configuration Req */ |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| /* |
| * TLVs: |
| * |
| * Required: None. |
| * Optional: SID, Random Time, Master Preference, WLAN Intra Attr, |
| * P2P Operation Attr, WLAN IBSS Attr, WLAN Mesh Attr |
| */ |
| u8 ptlv[]; |
| } NanConfigurationReqMsg, *pNanConfigurationReqMsg; |
| |
| /* |
| * Because the Configuration Req message has TLVs in it use the macro below |
| * for the size argument to buffer allocation functions (vs. sizeof(msg)). |
| */ |
| #define NAN_MAX_CONFIGURATION_REQ_SIZE \ |
| ( \ |
| sizeof(NanMsgHeader) + \ |
| SIZEOF_TLV_HDR + sizeof(u8) /* SID Beacon */ + \ |
| SIZEOF_TLV_HDR + sizeof(u8) /* Random Time */ + \ |
| SIZEOF_TLV_HDR + sizeof(u8) /* Master Pref */ \ |
| ) |
| |
| /* NAN Configuration Rsp */ |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| /* status of the request */ |
| u16 status; |
| u16 value; |
| } NanConfigurationRspMsg, *pNanConfigurationRspMsg; |
| |
| /* |
| * Because the Enable Req message has TLVs in it use the macro below for |
| * the size argument to buffer allocation functions (vs. sizeof(msg)). |
| */ |
| #define NAN_MAX_ENABLE_REQ_SIZE \ |
| ( \ |
| sizeof(NanMsgHeader) + \ |
| SIZEOF_TLV_HDR + sizeof(u16) /* Cluster Low */ + \ |
| SIZEOF_TLV_HDR + sizeof(u16) /* Cluster High */ + \ |
| SIZEOF_TLV_HDR + sizeof(u8) /* Master Pref */ \ |
| ) |
| |
| /* Config Discovery Indication */ |
| typedef struct PACKED |
| { |
| u32 disableDiscoveryMacAddressEvent:1; |
| u32 disableDiscoveryStartedClusterEvent:1; |
| u32 disableDiscoveryJoinedClusterEvent:1; |
| u32 reserved:29; |
| } NanConfigDiscoveryIndications; |
| |
| /* NAN Enable Req */ |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| /* |
| * TLVs: |
| * |
| * Required: Cluster Low, Cluster High, Master Preference, |
| * Optional: 5G Support, SID, 5G Sync Disc, RSSI Close, RSSI Medium, |
| * Hop Count Limit, Random Time, Master Preference, |
| * WLAN Intra Attr, P2P Operation Attr, WLAN IBSS Attr, |
| * WLAN Mesh Attr |
| */ |
| u8 ptlv[]; |
| } NanEnableReqMsg, *pNanEnableReqMsg; |
| |
| /* NAN Enable Rsp */ |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| /* status of the request */ |
| u16 status; |
| u16 value; |
| } NanEnableRspMsg, *pNanEnableRspMsg; |
| |
| /* NAN Disable Req */ |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| } NanDisableReqMsg, *pNanDisableReqMsg; |
| |
| /* NAN Disable Rsp */ |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| /* status of the request */ |
| u16 status; |
| u16 reserved; |
| } NanDisableRspMsg, *pNanDisableRspMsg; |
| |
| /* NAN Disable Ind */ |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| /* reason for the termination */ |
| u16 reason; |
| u16 reserved; |
| } NanDisableIndMsg, *pNanDisableIndMsg; |
| |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| u8 ptlv[]; |
| } NanTcaReqMsg, *pNanTcaReqMsg; |
| |
| /* NAN TCA Rsp */ |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| /* status of the request */ |
| u16 status; |
| u16 value; |
| } NanTcaRspMsg, *pNanTcaRspMsg; |
| |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| /* |
| * TLVs: |
| * |
| * Optional: Cluster size. |
| */ |
| u8 ptlv[]; |
| } NanTcaIndMsg, *pNanTcaIndMsg; |
| |
| /* |
| * Because the TCA Ind message has TLVs in it use the macro below for the |
| * size argument to buffer allocation functions (vs. sizeof(msg)). |
| */ |
| #define NAN_MAX_TCA_IND_SIZE \ |
| ( \ |
| sizeof(NanMsgHeader) + \ |
| sizeof(NanTcaIndParams) + \ |
| SIZEOF_TLV_HDR + sizeof(u16) /* Cluster Size */ \ |
| ) |
| |
| /* Function Declarations */ |
| u8* addTlv(u16 type, u16 length, const u8* value, u8* pOutTlv); |
| u16 NANTLV_ReadTlv(u8 *pInTlv, pNanTlv pOutTlv, int inBufferSize); |
| u16 NANTLV_WriteTlv(pNanTlv pInTlv, u8 *pOutTlv); |
| |
| /* NAN Beacon Sdf Payload Req */ |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| /* |
| * TLVs: |
| * |
| * Optional: Vendor specific attribute |
| */ |
| u8 ptlv[]; |
| } NanBeaconSdfPayloadReqMsg, *pNanBeaconSdfPayloadReqMsg; |
| |
| /* NAN Beacon Sdf Payload Rsp */ |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| /* status of the request */ |
| u16 status; |
| u16 reserved; |
| } NanBeaconSdfPayloadRspMsg, *pNanBeaconSdfPayloadRspMsg; |
| |
| /* NAN Beacon Sdf Payload Ind */ |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| /* |
| * TLVs: |
| * |
| * Required: Mac address |
| * Optional: Vendor specific attribute, sdf payload |
| * receive |
| */ |
| u8 ptlv[]; |
| } NanBeaconSdfPayloadIndMsg, *pNanBeaconSdfPayloadIndMsg; |
| |
| typedef struct PACKED |
| { |
| u8 availIntDuration:2; |
| u8 mapId:4; |
| u8 reserved:2; |
| } NanApiEntryCtrl; |
| |
| /* |
| * Valid Operating Classes were derived from IEEE Std. 802.11-2012 Annex E |
| * Table E-4 Global Operating Classe and, filtered by channel, are: 81, 83, |
| * 84, 103, 114, 115, 116, 124, 125. |
| */ |
| typedef struct PACKED |
| { |
| NanApiEntryCtrl entryCtrl; |
| u8 opClass; |
| u8 channel; |
| u8 availIntBitmap[4]; |
| } NanFurtherAvailabilityChan, *pNanFurtherAvailabilityChan; |
| |
| typedef struct PACKED |
| { |
| u8 numChan; |
| u8 pFaChan[]; |
| } NanFurtherAvailabilityMapAttrTlv, *pNanFurtherAvailabilityMapAttrTlv; |
| |
| /* Publish statistics. */ |
| typedef struct PACKED |
| { |
| 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; |
| } FwNanPublishStats, *pFwNanPublishStats; |
| |
| /* Subscribe statistics. */ |
| typedef struct PACKED |
| { |
| 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; |
| } FwNanSubscribeStats, *pFwNanSubscribeStats; |
| |
| /* NAN MAC Statistics. Used for MAC and DW statistics. */ |
| typedef struct PACKED |
| { |
| /* 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; |
| |
| /* Misc stats - ignored for DW. */ |
| u32 twIncreases; |
| u32 twDecreases; |
| u32 twChanges; |
| u32 twHighwater; |
| u32 bloomFilterIndex; |
| } FwNanMacStats, *pFwNanMacStats; |
| |
| /* NAN Sync and DW Statistics*/ |
| typedef struct PACKED |
| { |
| u64 currTsf; |
| u64 myRank; |
| u64 currAmRank; |
| u64 lastAmRank; |
| u32 currAmBTT; |
| u32 lastAmBTT; |
| u8 currAmHopCount; |
| u8 currRole; |
| u16 currClusterId; |
| u32 reserved1; |
| |
| 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; |
| } FwNanSyncStats, *pFwNanSyncStats; |
| |
| /* NAN Misc DE Statistics */ |
| typedef struct PACKED |
| { |
| 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; |
| } FwNanDeStats, *pFwNanDeStats; |
| |
| /* |
| Definition of various NanIndication(events) |
| */ |
| typedef enum { |
| NAN_INDICATION_PUBLISH_REPLIED =0, |
| NAN_INDICATION_PUBLISH_TERMINATED =1, |
| NAN_INDICATION_MATCH =2, |
| NAN_INDICATION_MATCH_EXPIRED =3, |
| NAN_INDICATION_SUBSCRIBE_TERMINATED =4, |
| NAN_INDICATION_DE_EVENT =5, |
| NAN_INDICATION_FOLLOWUP =6, |
| NAN_INDICATION_DISABLED =7, |
| NAN_INDICATION_TCA =8, |
| NAN_INDICATION_BEACON_SDF_PAYLOAD =9, |
| NAN_INDICATION_SELF_TRANSMIT_FOLLOWUP =10, |
| NAN_INDICATION_RANGING_REQUEST_RECEIVED =11, |
| NAN_INDICATION_RANGING_RESULT =12, |
| NAN_INDICATION_UNKNOWN =0xFFFF |
| } NanIndicationType; |
| |
| /* NAN Capabilities Req */ |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| } NanCapabilitiesReqMsg, *pNanCapabilitiesReqMsg; |
| |
| /* NAN Capabilities Rsp */ |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| /* status of the request */ |
| u32 status; |
| u32 value; |
| 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; |
| u32 is_ndp_security_supported:1; |
| u32 max_sdea_service_specific_info_len:16; |
| u32 reserved1:5; |
| u32 reserved2:5; |
| u32 ndpe_attr_supported:1; |
| u32 reserved:4; |
| u32 max_subscribe_address; |
| } NanCapabilitiesRspMsg, *pNanCapabilitiesRspMsg; |
| |
| /* NAN Self Transmit Followup */ |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| u32 reason; |
| } NanSelfTransmitFollowupIndMsg, *pNanSelfTransmitFollowupIndMsg; |
| |
| /* NAN Cipher Suite Shared Key */ |
| typedef struct PACKED |
| { |
| u32 csid_type; |
| } NanCsidType; |
| |
| /* Service Discovery Extended Attribute params */ |
| typedef struct PACKED |
| { |
| u32 fsd_required:1; |
| u32 fsd_with_gas:1; |
| u32 data_path_required:1; |
| u32 data_path_type:1; |
| u32 multicast_type:1; |
| u32 qos_required:1; |
| u32 security_required:1; |
| u32 ranging_required:1; |
| u32 range_limit_present:1; |
| u32 service_update_ind_present:1; |
| u32 reserved1:6; |
| u32 range_report:1; |
| u32 reserved2:15; |
| } NanFWSdeaCtrlParams; |
| |
| /* NAN Ranging Configuration params */ |
| typedef struct PACKED |
| { |
| u32 inner_threshold; |
| u32 outer_threshold; |
| } NanFWGeoFenceDescriptor; |
| |
| typedef struct PACKED |
| { |
| u32 range_resolution; |
| u32 range_interval; |
| u32 ranging_indication_event; |
| NanFWGeoFenceDescriptor geo_fence_threshold; |
| } NanFWRangeConfigParams; |
| |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| /* |
| Excludes TLVs |
| Optional: Nan Availability |
| */ |
| u8 ptlv[]; |
| } NanTestModeReqMsg, *pNanTestModeReqMsg; |
| |
| /* |
| NAN Status codes exchanged between firmware |
| and WifiHal. |
| */ |
| typedef enum { |
| /* NAN Protocol Response Codes */ |
| NAN_I_STATUS_SUCCESS = 0, |
| NAN_I_STATUS_TIMEOUT = 1, |
| NAN_I_STATUS_DE_FAILURE = 2, |
| NAN_I_STATUS_INVALID_MSG_VERSION = 3, |
| NAN_I_STATUS_INVALID_MSG_LEN = 4, |
| NAN_I_STATUS_INVALID_MSG_ID = 5, |
| NAN_I_STATUS_INVALID_HANDLE = 6, |
| NAN_I_STATUS_NO_SPACE_AVAILABLE = 7, |
| NAN_I_STATUS_INVALID_PUBLISH_TYPE = 8, |
| NAN_I_STATUS_INVALID_TX_TYPE = 9, |
| NAN_I_STATUS_INVALID_MATCH_ALGORITHM = 10, |
| NAN_I_STATUS_DISABLE_IN_PROGRESS = 11, |
| NAN_I_STATUS_INVALID_TLV_LEN = 12, |
| NAN_I_STATUS_INVALID_TLV_TYPE = 13, |
| NAN_I_STATUS_MISSING_TLV_TYPE = 14, |
| NAN_I_STATUS_INVALID_TOTAL_TLVS_LEN = 15, |
| NAN_I_STATUS_INVALID_REQUESTER_INSTANCE_ID= 16, |
| NAN_I_STATUS_INVALID_TLV_VALUE = 17, |
| NAN_I_STATUS_INVALID_TX_PRIORITY = 18, |
| NAN_I_STATUS_INVALID_CONNECTION_MAP = 19, |
| NAN_I_STATUS_INVALID_THRESHOLD_CROSSING_ALERT_ID = 20, |
| NAN_I_STATUS_INVALID_STATS_ID = 21, |
| NAN_I_STATUS_NAN_NOT_ALLOWED = 22, |
| NAN_I_STATUS_NO_OTA_ACK = 23, |
| NAN_I_STATUS_TX_FAIL = 24, |
| NAN_I_STATUS_NAN_ALREADY_ENABLED = 25, |
| NAN_I_STATUS_FOLLOWUP_QUEUE_FULL = 26, |
| /* 27-4095 Reserved */ |
| /* NAN Configuration Response codes */ |
| NAN_I_STATUS_INVALID_RSSI_CLOSE_VALUE = 4096, |
| NAN_I_STATUS_INVALID_RSSI_MIDDLE_VALUE = 4097, |
| NAN_I_STATUS_INVALID_HOP_COUNT_LIMIT = 4098, |
| NAN_I_STATUS_INVALID_MASTER_PREFERENCE_VALUE = 4099, |
| NAN_I_STATUS_INVALID_LOW_CLUSTER_ID_VALUE = 4100, |
| NAN_I_STATUS_INVALID_HIGH_CLUSTER_ID_VALUE = 4101, |
| NAN_I_STATUS_INVALID_BACKGROUND_SCAN_PERIOD = 4102, |
| NAN_I_STATUS_INVALID_RSSI_PROXIMITY_VALUE = 4103, |
| NAN_I_STATUS_INVALID_SCAN_CHANNEL = 4104, |
| NAN_I_STATUS_INVALID_POST_NAN_CONNECTIVITY_CAPABILITIES_BITMAP = 4105, |
| NAN_I_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_NUMCHAN_VALUE = 4106, |
| NAN_I_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_DURATION_VALUE = 4107, |
| NAN_I_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_CLASS_VALUE = 4108, |
| NAN_I_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_CHANNEL_VALUE = 4109, |
| NAN_I_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_AVAILABILITY_INTERVAL_BITMAP_VALUE = 4110, |
| NAN_I_STATUS_INVALID_FURTHER_AVAILABILITY_MAP_MAP_ID = 4111, |
| NAN_I_STATUS_INVALID_POST_NAN_DISCOVERY_CONN_TYPE_VALUE = 4112, |
| NAN_I_STATUS_INVALID_POST_NAN_DISCOVERY_DEVICE_ROLE_VALUE = 4113, |
| NAN_I_STATUS_INVALID_POST_NAN_DISCOVERY_DURATION_VALUE = 4114, |
| NAN_I_STATUS_INVALID_POST_NAN_DISCOVERY_BITMAP_VALUE = 4115, |
| NAN_I_STATUS_MISSING_FUTHER_AVAILABILITY_MAP = 4116, |
| NAN_I_STATUS_INVALID_BAND_CONFIG_FLAGS = 4117, |
| NAN_I_STATUS_INVALID_RANDOM_FACTOR_UPDATE_TIME_VALUE = 4118, |
| NAN_I_STATUS_INVALID_ONGOING_SCAN_PERIOD = 4119, |
| NAN_I_STATUS_INVALID_DW_INTERVAL_VALUE = 4120, |
| NAN_I_STATUS_INVALID_DB_INTERVAL_VALUE = 4121, |
| /* 4122-8191 RESERVED */ |
| NAN_I_PUBLISH_SUBSCRIBE_TERMINATED_REASON_INVALID = 8192, |
| NAN_I_PUBLISH_SUBSCRIBE_TERMINATED_REASON_TIMEOUT = 8193, |
| NAN_I_PUBLISH_SUBSCRIBE_TERMINATED_REASON_USER_REQUEST = 8194, |
| NAN_I_PUBLISH_SUBSCRIBE_TERMINATED_REASON_FAILURE = 8195, |
| NAN_I_PUBLISH_SUBSCRIBE_TERMINATED_REASON_COUNT_REACHED = 8196, |
| NAN_I_PUBLISH_SUBSCRIBE_TERMINATED_REASON_DE_SHUTDOWN = 8197, |
| NAN_I_PUBLISH_SUBSCRIBE_TERMINATED_REASON_DISABLE_IN_PROGRESS = 8198, |
| NAN_I_PUBLISH_SUBSCRIBE_TERMINATED_REASON_POST_DISC_ATTR_EXPIRED = 8199, |
| NAN_I_PUBLISH_SUBSCRIBE_TERMINATED_REASON_POST_DISC_LEN_EXCEEDED = 8200, |
| NAN_I_PUBLISH_SUBSCRIBE_TERMINATED_REASON_FURTHER_AVAIL_MAP_EMPTY = 8201, |
| /* 9000-9500 NDP Status type */ |
| NDP_I_UNSUPPORTED_CONCURRENCY = 9000, |
| NDP_I_NAN_DATA_IFACE_CREATE_FAILED = 9001, |
| NDP_I_NAN_DATA_IFACE_DELETE_FAILED = 9002, |
| NDP_I_DATA_INITIATOR_REQUEST_FAILED = 9003, |
| NDP_I_DATA_RESPONDER_REQUEST_FAILED = 9004, |
| NDP_I_INVALID_SERVICE_INSTANCE_ID = 9005, |
| NDP_I_INVALID_NDP_INSTANCE_ID = 9006, |
| NDP_I_INVALID_RESPONSE_CODE = 9007, |
| NDP_I_INVALID_APP_INFO_LEN = 9008, |
| /* OTA failures and timeouts during negotiation */ |
| NDP_I_MGMT_FRAME_REQUEST_FAILED = 9009, |
| NDP_I_MGMT_FRAME_RESPONSE_FAILED = 9010, |
| NDP_I_MGMT_FRAME_CONFIRM_FAILED = 9011, |
| NDP_I_END_FAILED = 9012, |
| NDP_I_MGMT_FRAME_END_REQUEST_FAILED = 9013, |
| NDP_I_MGMT_FRAME_SECURITY_INSTALL_FAILED = 9014, |
| |
| /* 9500 onwards vendor specific error codes */ |
| NDP_I_VENDOR_SPECIFIC_ERROR = 9500 |
| } NanInternalStatusType; |
| |
| /* This is the TLV used for range report */ |
| typedef struct PACKED |
| { |
| u32 publish_id; |
| u32 event_type; |
| u32 range_measurement; |
| } NanFWRangeReportParams; |
| |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| /*TLV Required: |
| MANDATORY |
| 1. MAC_ADDRESS |
| 2. NanFWRangeReportParams |
| OPTIONAL: |
| 1. A_UINT32 event type |
| */ |
| u8 ptlv[1]; |
| } NanFWRangeReportInd, *pNanFWRangeReportInd; |
| |
| /** 2 word representation of MAC addr */ |
| typedef struct { |
| /** upper 4 bytes of MAC address */ |
| u32 mac_addr31to0; |
| /** lower 2 bytes of MAC address */ |
| u32 mac_addr47to32; |
| } fw_mac_addr; |
| |
| /* This is the TLV used to trigger ranging requests*/ |
| typedef struct PACKED |
| { |
| fw_mac_addr range_mac_addr; |
| u32 range_id; //Match handle in match_ind, publish_id in result ind |
| u32 ranging_accept:1; |
| u32 ranging_reject:1; |
| u32 ranging_cancel:1; |
| u32 reserved:29; |
| } NanFWRangeReqMsg, *pNanFWRangeReqMsg; |
| |
| typedef struct PACKED |
| { |
| fw_mac_addr range_mac_addr; |
| u32 range_id;//This will publish_id in case of receiving publish. |
| } NanFWRangeReqRecvdMsg, *pNanFWRangeReqRecvdMsg; |
| |
| typedef struct PACKED |
| { |
| NanMsgHeader fwHeader; |
| /*TLV Required |
| 1. t_nan_range_req_recvd_msg |
| */ |
| u8 ptlv[1]; |
| } NanFWRangeReqRecvdInd, *pNanFWRangeReqRecvdInd; |
| |
| /* Function for NAN error translation |
| For NanResponse, NanPublishTerminatedInd, NanSubscribeTerminatedInd, |
| NanDisabledInd, NanTransmitFollowupInd: |
| function to translate firmware specific errors |
| to generic freamework error along with the error string |
| */ |
| void NanErrorTranslation(NanInternalStatusType firmwareErrorRecvd, |
| u32 valueRcvd, |
| void *pRsp, |
| bool is_ndp_rsp); |
| |
| #ifdef __cplusplus |
| } |
| #endif /* __cplusplus */ |
| |
| #endif /* __NAN_I_H__ */ |
| |