summaryrefslogtreecommitdiff
path: root/qcwcn
diff options
context:
space:
mode:
authorPeng Xu <pxu@codeaurora.org>2018-06-26 11:29:10 -0700
committerEtan Cohen <etancohen@google.com>2019-02-11 10:07:19 -0800
commitac1d00e928705fa763b570d5af08f78a2c3f5d4b (patch)
tree713cd39b74e227a5dc931ec7de322b056549dc82 /qcwcn
parent4333c0e76d0c8427e308d866ef0349753d2c984d (diff)
downloadwlan-ac1d00e928705fa763b570d5af08f78a2c3f5d4b.tar.gz
wifi-hal: Add support handling NDPE attribute
Add handling NDPE attribute in NAN capabilities. This allows the framework to enable or disable using of NDP attribute in NAN data request message. Bug: 113149569 Test: Manual Change-Id: If2ca515447fbd44bca3bc272ce5fd72718d7eb19 CRs-fixed: 2244053
Diffstat (limited to 'qcwcn')
-rw-r--r--qcwcn/wifi_hal/nan_cert.h21
-rw-r--r--qcwcn/wifi_hal/nan_i.h16
-rw-r--r--qcwcn/wifi_hal/nan_req.cpp28
-rw-r--r--qcwcn/wifi_hal/nan_rsp.cpp2
4 files changed, 60 insertions, 7 deletions
diff --git a/qcwcn/wifi_hal/nan_cert.h b/qcwcn/wifi_hal/nan_cert.h
index 040471a..85b7073 100644
--- a/qcwcn/wifi_hal/nan_cert.h
+++ b/qcwcn/wifi_hal/nan_cert.h
@@ -36,7 +36,10 @@ extern "C"
{
#endif /* __cplusplus */
-#define NAN_CERT_VERSION 4
+#ifndef PACKED
+#define PACKED __attribute__((packed))
+#endif
+#define NAN_CERT_VERSION 5
#define NAN_MAX_DEBUG_MESSAGE_DATA_LEN 100
#define NAN_MAX_ALLOWED_DW_AWAKE_INTERVAL 16
@@ -97,6 +100,18 @@ typedef enum {
NAN_DEVICE_TYPE_DUT = 2
} NanDeviceType;
+/* NAN NDPE absent or present */
+typedef enum {
+ NAN_NDPE_ATTR_PRESENT = 0,
+ NAN_NDPE_ATTR_ABSENT = 1
+} NanNdpeAttrType;
+
+/* NAN NDP absent or present */
+typedef enum {
+ NAN_NDP_ATTR_ABSENT = 0,
+ NAN_NDP_ATTR_PRESENT = 1
+} NanNdpAttrType;
+
/*
* Definitions of debug subcommand type for the
* generic debug command.
@@ -115,7 +130,9 @@ typedef enum {
NAN_TEST_MODE_CMD_NAN_SCHED_UPDATE_NDL_NOTIFY = 11,
NAN_TEST_MODE_CMD_NAN_AVAILABILITY_MAP_ORDER = 12,
NAN_TEST_MODE_CMD_CONFIG_QOS = 13,
- NAN_TEST_MODE_CMD_DEVICE_TYPE = 14
+ NAN_TEST_MODE_CMD_DEVICE_TYPE = 14,
+ NAN_TEST_MODE_CMD_DISABLE_NDPE = 15,
+ NAN_TEST_MODE_CMD_ENABLE_NDP = 16,
} NanDebugModeCmd;
/*
diff --git a/qcwcn/wifi_hal/nan_i.h b/qcwcn/wifi_hal/nan_i.h
index 8cfd8b1..78cdb1a 100644
--- a/qcwcn/wifi_hal/nan_i.h
+++ b/qcwcn/wifi_hal/nan_i.h
@@ -169,6 +169,7 @@ typedef enum
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_SDF_LAST = 4095,
/* Configuration types */
@@ -432,6 +433,16 @@ typedef struct PACKED
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
{
@@ -1048,7 +1059,10 @@ typedef struct PACKED
u32 max_scid_len;
u32 is_ndp_security_supported:1;
u32 max_sdea_service_specific_info_len:16;
- u32 reserved:15;
+ u32 reserved1:5;
+ u32 reserved2:5;
+ u32 ndpe_attr_supported:1;
+ u32 reserved:4;
u32 max_subscribe_address;
} NanCapabilitiesRspMsg, *pNanCapabilitiesRspMsg;
diff --git a/qcwcn/wifi_hal/nan_req.cpp b/qcwcn/wifi_hal/nan_req.cpp
index 8ab3a51..fd8516f 100644
--- a/qcwcn/wifi_hal/nan_req.cpp
+++ b/qcwcn/wifi_hal/nan_req.cpp
@@ -159,6 +159,10 @@ wifi_error NanCommand::putNanEnable(transaction_id id, const NanEnableRequest *p
(
pReq->config_dw_early_termination ? (SIZEOF_TLV_HDR + \
sizeof(u32)) : 0 \
+ ) + \
+ (
+ pReq->config_ndpe_attr? (SIZEOF_TLV_HDR + \
+ sizeof(NanDevCapAttrCap)) : 0 \
);
pNanEnableReqMsg pFwReq = (pNanEnableReqMsg)malloc(message_len);
@@ -337,7 +341,14 @@ wifi_error NanCommand::putNanEnable(transaction_id id, const NanEnableRequest *p
tlvs = addTlv(NAN_TLV_TYPE_DW_EARLY_TERMINATION, sizeof(u32),
(const u8*)&pReq->enable_dw_termination, tlvs);
}
-
+ if (pReq->config_ndpe_attr) {
+ NanDevCapAttrCap nanDevCapAttr;
+ memset(&nanDevCapAttr, 0, sizeof(nanDevCapAttr));
+ nanDevCapAttr.ndpe_attr_supp = pReq->use_ndpe_attr;
+ tlvs = addTlv(NAN_TLV_TYPE_DEV_CAP_ATTR_CAPABILITY,
+ sizeof(NanDevCapAttrCap),
+ (const u8*)&nanDevCapAttr, tlvs);
+ }
mVendorData = (char*)pFwReq;
mDataLen = message_len;
@@ -475,6 +486,10 @@ wifi_error NanCommand::putNanConfig(transaction_id id, const NanConfigRequest *p
(
pReq->config_dw_early_termination ? (SIZEOF_TLV_HDR + \
sizeof(u32)) : 0 \
+ ) + \
+ (
+ pReq->config_ndpe_attr? (SIZEOF_TLV_HDR + \
+ sizeof(NanDevCapAttrCap)) : 0 \
);
if (pReq->num_config_discovery_attr) {
@@ -606,7 +621,6 @@ wifi_error NanCommand::putNanConfig(transaction_id id, const NanConfigRequest *p
tlvs = addTlv(NAN_TLV_TYPE_CONFIG_DISCOVERY_INDICATIONS,
sizeof(u32),
(const u8*)&config_discovery_indications, tlvs);
-
if (pReq->config_nss) {
tlvs = addTlv(NAN_TLV_TYPE_TX_RX_CHAINS, sizeof(u32),
(const u8*)&pReq->nss, tlvs);
@@ -619,6 +633,14 @@ wifi_error NanCommand::putNanConfig(transaction_id id, const NanConfigRequest *p
tlvs = addTlv(NAN_TLV_TYPE_DW_EARLY_TERMINATION, sizeof(u32),
(const u8*)&pReq->enable_dw_termination, tlvs);
}
+ if (pReq->config_ndpe_attr) {
+ NanDevCapAttrCap nanDevCapAttr;
+ memset(&nanDevCapAttr, 0, sizeof(nanDevCapAttr));
+ nanDevCapAttr.ndpe_attr_supp = pReq->use_ndpe_attr;
+ tlvs = addTlv(NAN_TLV_TYPE_DEV_CAP_ATTR_CAPABILITY,
+ sizeof(NanDevCapAttrCap),
+ (const u8*)&nanDevCapAttr, tlvs);
+ }
mVendorData = (char*)pFwReq;
mDataLen = message_len;
@@ -922,7 +944,6 @@ wifi_error NanCommand::putNanSubscribe(transaction_id id,
message_len += \
(pReq->num_intf_addr_present * (SIZEOF_TLV_HDR + NAN_MAC_ADDR_LEN));
-
if ((pReq->key_info.key_type == NAN_SECURITY_KEY_INPUT_PMK) &&
(pReq->key_info.body.pmk_info.pmk_len == NAN_PMK_INFO_LEN))
message_len += SIZEOF_TLV_HDR + NAN_PMK_INFO_LEN;
@@ -934,7 +955,6 @@ wifi_error NanCommand::putNanSubscribe(transaction_id id,
message_len += SIZEOF_TLV_HDR +
pReq->key_info.body.passphrase_info.passphrase_len;
-
pNanSubscribeServiceReqMsg pFwReq = (pNanSubscribeServiceReqMsg)malloc(message_len);
if (pFwReq == NULL) {
cleanup();
diff --git a/qcwcn/wifi_hal/nan_rsp.cpp b/qcwcn/wifi_hal/nan_rsp.cpp
index 4b8bafd..721ab49 100644
--- a/qcwcn/wifi_hal/nan_rsp.cpp
+++ b/qcwcn/wifi_hal/nan_rsp.cpp
@@ -609,6 +609,8 @@ int NanCommand::getNanResponse(transaction_id *id, NanResponseMsg *pRsp)
pFwRsp->max_sdea_service_specific_info_len;
pRsp->body.nan_capabilities.max_subscribe_address = \
pFwRsp->max_subscribe_address;
+ pRsp->body.nan_capabilities.ndpe_attr_supported = \
+ pFwRsp->ndpe_attr_supported;
break;
}
default: