diff options
author | Ajay <ajay.davanageri@broadcom.com> | 2021-05-17 10:43:53 +0530 |
---|---|---|
committer | Roger Wang <wangroger@google.com> | 2021-05-18 12:28:29 +0800 |
commit | 3448e1f66493cde98c3d1c4a7a6a84e1d7645448 (patch) | |
tree | e316317124cd15f617869e13d446c46ccd3fb9e2 | |
parent | 00ddaaebed94bc780878899cee5343624d4783d9 (diff) | |
download | wlan-3448e1f66493cde98c3d1c4a7a6a84e1d7645448.tar.gz |
Add channel info as part of NDP confirmation event.
In NDP confirmation event NAN channels need to be indicated.
Bug: 187517777
Test: Verified on hikey960 platform.
Change-Id: I8f6b5f7a93acffcf6a5fe5d4ec1c40584ea97170
Signed-off-by: Roger Wang <wangroger@google.com>
-rwxr-xr-x | bcmdhd/wifi_hal/nan.cpp | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/bcmdhd/wifi_hal/nan.cpp b/bcmdhd/wifi_hal/nan.cpp index 8f73d7c..ac57ac9 100755 --- a/bcmdhd/wifi_hal/nan.cpp +++ b/bcmdhd/wifi_hal/nan.cpp @@ -286,7 +286,9 @@ typedef enum { NAN_ATTRIBUTE_DISCOVERY_BEACON_INTERVAL = 224, NAN_ATTRIBUTE_NSS = 225, NAN_ATTRIBUTE_ENABLE_RANGING = 226, - NAN_ATTRIBUTE_DW_EARLY_TERM = 227 + NAN_ATTRIBUTE_DW_EARLY_TERM = 227, + NAN_ATTRIBUTE_CHANNEL_INFO = 228, + NAN_ATTRIBUTE_NUM_CHANNELS = 229 } NAN_ATTRIBUTE; typedef enum { @@ -2339,6 +2341,7 @@ class NanDataPathPrimitive : public WifiCommand NanDataPathConfirmInd ndp_create_confirmation_event; memset(&ndp_create_confirmation_event, 0, sizeof(NanDataPathConfirmInd)); u16 ndp_conf_app_info_len = 0; + u8 chan_idx = 0; counters.dp_confirm_evt++; ALOGI("Received NAN_EVENT_DATA_CONFIRMATION\n"); @@ -2375,9 +2378,29 @@ class NanDataPathPrimitive : public WifiCommand ALOGI("reason code %u", (NanDataPathResponseCode)it.get_u8()); ndp_create_confirmation_event.rsp_code = (NanDataPathResponseCode)it.get_u8(); + } else if (attr_type == NAN_ATTRIBUTE_NUM_CHANNELS) { + ALOGI("num channels %u", it.get_u32()); + if (it.get_u32() <= NAN_MAX_CHANNEL_INFO_SUPPORTED) { + ndp_create_confirmation_event.num_channels = it.get_u32(); + } else { + ndp_create_confirmation_event.num_channels = + NAN_MAX_CHANNEL_INFO_SUPPORTED; + ALOGE("num channels reset to max allowed %u", + ndp_create_confirmation_event.num_channels); + } + } else if (attr_type == NAN_ATTRIBUTE_CHANNEL_INFO) { + ALOGI("Channel info \n"); + memcpy((u8 *)ndp_create_confirmation_event.channel_info, it.get_data(), + ndp_create_confirmation_event.num_channels * sizeof(NanChannelInfo)); + while (chan_idx < ndp_create_confirmation_event.num_channels) { + ALOGI("channel: %u, Bandwidth: %u, nss: %u\n", + ndp_create_confirmation_event.channel_info[chan_idx].channel, + ndp_create_confirmation_event.channel_info[chan_idx].bandwidth, + ndp_create_confirmation_event.channel_info[chan_idx].nss); + chan_idx++; + } } } - GET_NAN_HANDLE(info)->mHandlers.EventDataConfirm(&ndp_create_confirmation_event); break; } |