tzh
2024-08-15 d4a1bd480003f3e1a0590bc46fbcb24f05652ca7
android/hardware/aic/wlan/wifi_hal/wifi_hal.cpp
....@@ -211,6 +211,7 @@
211211 fn->wifi_get_tx_pkt_fates = wifi_get_tx_pkt_fates;
212212 fn->wifi_get_rx_pkt_fates = wifi_get_rx_pkt_fates;
213213 fn->wifi_get_packet_filter_capabilities = wifi_get_packet_filter_capabilities;
214
+ fn->wifi_get_wake_reason_stats = wifi_get_wake_reason_stats;
214215 fn->wifi_set_packet_filter = wifi_set_packet_filter;
215216 return WIFI_SUCCESS;
216217 }
....@@ -1115,13 +1116,21 @@
11151116 ALOGE("no vendor data in GetFeatureSetCommand response; ignoring it");
11161117 return NL_SKIP;
11171118 }
1118
- if(feature_type == ANDR_WIFI_ATTRIBUTE_NUM_FEATURE_SET) {
1119
- void *data = reply.get_vendor_data();
1120
- if(!fset) {
1119
+ if (feature_type == ANDR_WIFI_ATTRIBUTE_NUM_FEATURE_SET) {
1120
+ if (!fset) {
11211121 ALOGE("Buffers pointers not set");
11221122 return NL_SKIP;
11231123 }
1124
- memcpy(fset, data, min(len, (int) sizeof(*fset)));
1124
+
1125
+ nl_iterator it(vendor_data);
1126
+ if (it.get_type() == ANDR_WIFI_ATTRIBUTE_NUM_FEATURE_SET) {
1127
+ memcpy(fset, it.get_data(), min(it.get_len(), (int) sizeof(*fset)));
1128
+ } else {
1129
+ ALOGE("Unknown attribute: %d expecting %d",
1130
+ it.get_type(), ANDR_WIFI_ATTRIBUTE_NUM_FEATURE_SET);
1131
+ return NL_SKIP;
1132
+ }
1133
+ ALOGD("wifi feature set: 0x%08X", *(int *)fset);
11251134 } else {
11261135 int num_features_set = 0;
11271136 int i = 0;