From d4a1bd480003f3e1a0590bc46fbcb24f05652ca7 Mon Sep 17 00:00:00 2001 From: tzh <tanzhtanzh@gmail.com> Date: Thu, 15 Aug 2024 06:56:47 +0000 Subject: [PATCH] feat(wfit/bt): update aic8800 wifi/bt drive and hal --- android/hardware/aic/wlan/wifi_hal/wifi_hal.cpp | 17 +++++++++++++---- 1 files changed, 13 insertions(+), 4 deletions(-) diff --git a/android/hardware/aic/wlan/wifi_hal/wifi_hal.cpp b/android/hardware/aic/wlan/wifi_hal/wifi_hal.cpp index 508268e..346b659 100755 --- a/android/hardware/aic/wlan/wifi_hal/wifi_hal.cpp +++ b/android/hardware/aic/wlan/wifi_hal/wifi_hal.cpp @@ -211,6 +211,7 @@ fn->wifi_get_tx_pkt_fates = wifi_get_tx_pkt_fates; fn->wifi_get_rx_pkt_fates = wifi_get_rx_pkt_fates; fn->wifi_get_packet_filter_capabilities = wifi_get_packet_filter_capabilities; + fn->wifi_get_wake_reason_stats = wifi_get_wake_reason_stats; fn->wifi_set_packet_filter = wifi_set_packet_filter; return WIFI_SUCCESS; } @@ -1115,13 +1116,21 @@ ALOGE("no vendor data in GetFeatureSetCommand response; ignoring it"); return NL_SKIP; } - if(feature_type == ANDR_WIFI_ATTRIBUTE_NUM_FEATURE_SET) { - void *data = reply.get_vendor_data(); - if(!fset) { + if (feature_type == ANDR_WIFI_ATTRIBUTE_NUM_FEATURE_SET) { + if (!fset) { ALOGE("Buffers pointers not set"); return NL_SKIP; } - memcpy(fset, data, min(len, (int) sizeof(*fset))); + + nl_iterator it(vendor_data); + if (it.get_type() == ANDR_WIFI_ATTRIBUTE_NUM_FEATURE_SET) { + memcpy(fset, it.get_data(), min(it.get_len(), (int) sizeof(*fset))); + } else { + ALOGE("Unknown attribute: %d expecting %d", + it.get_type(), ANDR_WIFI_ATTRIBUTE_NUM_FEATURE_SET); + return NL_SKIP; + } + ALOGD("wifi feature set: 0x%08X", *(int *)fset); } else { int num_features_set = 0; int i = 0; -- Gitblit v1.6.2