[automerger skipped] Merge "Merge Android 14 QPR2 to AOSP main" into main am: a472b80e89 -s ours am: aad4d204c2 -s ours

am skip reason: Merged-In I066009b95fd0c17cedd33b7200c7e7187572670e with SHA-1 1e882cccdd is already in history

Original change: https://android-review.googlesource.com/c/platform/hardware/libhardware_legacy/+/2990910

Change-Id: I445709e7f416ea78d0b9591025387747f633a6cc
Signed-off-by: Automerger Merge Worker <[email protected]>
diff --git a/include/hardware_legacy/rtt.h b/include/hardware_legacy/rtt.h
index 63c3325..426abe0 100644
--- a/include/hardware_legacy/rtt.h
+++ b/include/hardware_legacy/rtt.h
@@ -121,12 +121,10 @@
 /* RTT configuration v3 (11az support)*/
 typedef struct {
     wifi_rtt_config rtt_config;
-    byte ntb_min_measurement_time_millis; // 11az Non-Trigger-based (non-TB) minimum measurement
-                                          // time in milliseconds
-    byte ntb_max_measurement_time_millis; // 11az Non-Trigger-based (non-TB) maximum measurement
-                                          // time in milliseconds
-    byte tx_ltf_repetition_count;         // Multiple transmissions of HE-LTF symbols in an HE
-                                          // Ranging NDP. A value of 1 indicates no repetition.
+    u64 ntb_min_measurement_time; // 11az Non-Trigger-based (non-TB) minimum measurement time in
+                                  // units of 100 microseconds
+    u64 ntb_max_measurement_time; // 11az Non-Trigger-based (non-TB) maximum measurement time in
+                                  // units of 10 milliseconds
 } wifi_rtt_config_v3;
 
 /* RTT results */
@@ -184,11 +182,19 @@
 /* RTT results v3 (11az support)*/
 typedef struct {
   wifi_rtt_result_v2 rtt_result;
-  int tx_ltf_repetition_count;         // 11az Transmit LTF repetitions used to get this result.
-  int ntb_min_measurement_time_millis; // Minimum non-trigger based (non-TB) dynamic measurement
-                                       // time in milliseconds assigned by the 11az responder.
-  int ntb_max_measurement_time_millis; // Maximum non-trigger based (non-TB) dynamic measurement
-                                       // time in milliseconds assigned by the 11az responder.
+  byte i2r_tx_ltf_repetition_count;// Multiple transmissions of HE-LTF symbols in an HE (I2R)
+                                   // Ranging NDP. An HE-LTF repetition value of 1 indicates no
+                                   // repetitions.
+  byte r2i_tx_ltf_repetition_count;// Multiple transmissions of HE-LTF symbols in an HE (R2I)
+                                   // Ranging NDP. An HE-LTF repetition value of 1 indicates no
+                                   // repetitions.
+  u64 ntb_min_measurement_time;    // Minimum non-trigger based (non-TB) dynamic measurement time
+                                   // in units of 100 microseconds assigned by the 11az responder.
+  u64 ntb_max_measurement_time;    // Maximum non-trigger based (non-TB) dynamic measurement
+                                   // time in units of 10 milliseconds assigned by the 11az
+                                   // responder.
+  byte num_tx_sts;                 // Number of transmit space-time streams used.
+  byte num_rx_sts;                 // Number of receive space-time streams used.
 } wifi_rtt_result_v3;
 
 
@@ -305,8 +311,6 @@
     byte az_bw_support;             // bit mask indicates what BW is supported by 11az initiator
     byte ntb_initiator_supported;   // if 11az non-TB initiator is supported
     byte ntb_responder_supported;   // if 11az non-TB responder is supported
-    byte max_tx_ltf_repetition_count;// maximum HE LTF repetitions the 11az initiator is capable of
-                                    // transmitting in the preamble of I2R NDP
 } wifi_rtt_capabilities_v3;
 
 /*  RTT capabilities v3 of the device (11az support) */
diff --git a/include/hardware_legacy/wifi_hal.h b/include/hardware_legacy/wifi_hal.h
index 9c82e80..cf3fee8 100644
--- a/include/hardware_legacy/wifi_hal.h
+++ b/include/hardware_legacy/wifi_hal.h
@@ -417,6 +417,24 @@
     wifi_iface_combination iface_combinations[MAX_IFACE_COMBINATIONS];
 } wifi_iface_concurrency_matrix;
 
+/* Wifi OUI data */
+typedef struct {
+    /* OUI : 24-bit organizationally unique identifier to identify the Vendor/OEM */
+    u32 oui;
+    /* Length of the data buffer */
+    u32 data_len;
+    /* Vendor-specific data */
+    const u8 *data;
+} oui_keyed_data;
+
+/* Wifi Vendor data list */
+typedef struct {
+    /* Number of OUI Keyed Data objects */
+    u32 num_oui_keyed_data;
+    /* List of OUI Keyed Data */
+    oui_keyed_data *oui_data;
+} wifi_vendor_data;
+
 /* Initialize/Cleanup */
 
 wifi_error wifi_initialize(wifi_handle *handle);
@@ -1170,7 +1188,7 @@
      * @param config_id: configuration ID of TWT request
      * @return Synchronous wifi_error
      *
-     * Note: This function is deprecated by wifi_twt_session_clear_stats
+     * Note: This function is deprecated.
      */
     wifi_error (*wifi_twt_clear_stats)(wifi_interface_handle iface, u8 config_id);
 
@@ -1373,6 +1391,18 @@
      */
     wifi_error (*wifi_set_mlo_mode)(wifi_handle handle, wifi_mlo_mode mode);
 
+    /**@brief wifi_virtual_interface_create_with_vendor_data
+     * Create new virtual interface using vendor data.
+     * @param handle: global wifi_handle
+     * @param ifname: name of interface to be created.
+     * @param iface_type: one of interface types from wifi_interface_type.
+     * @param vendor_data: vendor data to apply on this interface.
+     * @return Synchronous wifi_error
+     */
+    wifi_error (*wifi_virtual_interface_create_with_vendor_data)
+            (wifi_handle handle, const char* ifname,
+             wifi_interface_type iface_type, wifi_vendor_data* vendor_data);
+
     /*
      * when adding new functions make sure to add stubs in
      * wifi_legacy_hal_stubs.cpp::initHalFuncTableWithStubs
diff --git a/include/hardware_legacy/wifi_twt.h b/include/hardware_legacy/wifi_twt.h
index 1a787ef..cb11c78 100644
--- a/include/hardware_legacy/wifi_twt.h
+++ b/include/hardware_legacy/wifi_twt.h
@@ -31,8 +31,8 @@
     u8 is_flexible_twt_supported;  // 0 for not supporting flexible twt schedules
     u32 min_wake_duration_micros;  // minimum twt wake duration capable in microseconds
     u32 max_wake_duration_micros;  // maximum twt wake duration capable in microseconds
-    u32 min_wake_interval_micros;  // minimum twt wake interval capable in microseconds
-    u32 max_wake_interval_micros;  // maximum twt wake interval capable in microseconds
+    u64 min_wake_interval_micros;  // minimum twt wake interval capable in microseconds
+    u64 max_wake_interval_micros;  // maximum twt wake interval capable in microseconds
 } wifi_twt_capabilities;
 
 /* TWT request parameters to setup or update a TWT session */
@@ -41,8 +41,8 @@
                      // Otherwise UNSPECIFIED.
     u32 min_wake_duration_micros;  // minimum twt wake duration in microseconds
     u32 max_wake_duration_micros;  // maximum twt wake duration in microseconds
-    u32 min_wake_interval_micros;  // minimum twt wake interval in microseconds
-    u32 max_wake_interval_micros;  // maximum twt wake interval in microseconds
+    u64 min_wake_interval_micros;  // minimum twt wake interval in microseconds
+    u64 max_wake_interval_micros;  // maximum twt wake interval in microseconds
 } wifi_twt_request;
 
 /* TWT negotiation types */
@@ -56,7 +56,7 @@
     u32 session_id; // a unique identifier for the session
     s8 mlo_link_id; // link id in case of MLO connection. Otherwise UNSPECIFIED.
     u32 wake_duration_micros; // TWT service period in microseconds
-    u32 wake_interval_micros; // TWT wake interval for this session in microseconds
+    u64 wake_interval_micros; // TWT wake interval for this session in microseconds
     wifi_twt_negotiation_type negotiation_type; // TWT negotiation type
     u8 is_trigger_enabled; // 0 if this TWT session is not trigger enabled
     u8 is_announced;       // 0 if this TWT session is not announced