diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/MsduDeliveryInfo.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/MsduDeliveryInfo.aidl new file mode 100644 index 0000000000..792e08d2cd --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/MsduDeliveryInfo.aidl @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +parcelable MsduDeliveryInfo { + android.hardware.wifi.supplicant.MsduDeliveryInfo.DeliveryRatio deliveryRatio; + byte countExponent; + @Backing(type="byte") @VintfStability + enum DeliveryRatio { + RATIO_95 = 1, + RATIO_96 = 2, + RATIO_97 = 3, + RATIO_98 = 4, + RATIO_99 = 5, + RATIO_99_9 = 6, + RATIO_99_99 = 7, + RATIO_99_999 = 8, + RATIO_99_9999 = 9, + } +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/QosCharacteristics.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/QosCharacteristics.aidl new file mode 100644 index 0000000000..dacac8c49a --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/QosCharacteristics.aidl @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +parcelable QosCharacteristics { + int minServiceIntervalUs; + int maxServiceIntervalUs; + int minDataRateKbps; + int delayBoundUs; + int optionalFieldMask; + char maxMsduSizeOctets; + int serviceStartTimeUs; + byte serviceStartTimeLinkId; + int meanDataRateKbps; + int burstSizeOctets; + char msduLifetimeMs; + android.hardware.wifi.supplicant.MsduDeliveryInfo msduDeliveryInfo; + @Backing(type="int") @VintfStability + enum QosCharacteristicsMask { + MAX_MSDU_SIZE = (1 << 0) /* 1 */, + SERVICE_START_TIME = (1 << 1) /* 2 */, + SERVICE_START_TIME_LINK_ID = (1 << 2) /* 4 */, + MEAN_DATA_RATE = (1 << 3) /* 8 */, + BURST_SIZE = (1 << 4) /* 16 */, + MSDU_LIFETIME = (1 << 5) /* 32 */, + MSDU_DELIVERY_INFO = (1 << 6) /* 64 */, + } +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/QosPolicyScsData.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/QosPolicyScsData.aidl index 4e5e8ae961..20be616fbb 100644 --- a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/QosPolicyScsData.aidl +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/QosPolicyScsData.aidl @@ -22,4 +22,11 @@ parcelable QosPolicyScsData { byte policyId; byte userPriority; android.hardware.wifi.supplicant.QosPolicyClassifierParams classifierParams; + android.hardware.wifi.supplicant.QosPolicyScsData.LinkDirection direction; + @nullable android.hardware.wifi.supplicant.QosCharacteristics QosCharacteristics; + @Backing(type="byte") @VintfStability + enum LinkDirection { + DOWNLINK, + UPLINK, + } } diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/MsduDeliveryInfo.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/MsduDeliveryInfo.aidl new file mode 100644 index 0000000000..8065f63b85 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/MsduDeliveryInfo.aidl @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.hardware.wifi.supplicant; + +/** + * MSDU delivery information. + * See Section 9.4.2.316 of the IEEE P802.11be/D4.0 Standard. + */ +@VintfStability +parcelable MsduDeliveryInfo { + /** + * Enums for the |deliveryRatio| field. + * See Table 9-404t of the IEEE P802.11be/D4.0 Standard. + */ + @VintfStability + @Backing(type="byte") + enum DeliveryRatio { + RATIO_95 = 1, // 95% + RATIO_96 = 2, // 96% + RATIO_97 = 3, // 97% + RATIO_98 = 4, // 98% + RATIO_99 = 5, // 99% + RATIO_99_9 = 6, // 99.9% + RATIO_99_99 = 7, // 99.99% + RATIO_99_999 = 8, // 99.999% + RATIO_99_9999 = 9, // 99.9999% + } + + /** + * Percentage of the MSDUs that are expected to be delivered successfully. + */ + DeliveryRatio deliveryRatio; + + /** + * Exponent from which the number of incoming MSDUs is computed. The number of incoming + * MSDUs is 10^countExponent, and is used to determine the MSDU delivery ratio. + * Must be a number between 0 and 15 (inclusive). + */ + byte countExponent; +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/QosCharacteristics.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/QosCharacteristics.aidl new file mode 100644 index 0000000000..be5ef91356 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/QosCharacteristics.aidl @@ -0,0 +1,120 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.hardware.wifi.supplicant; + +import android.hardware.wifi.supplicant.MsduDeliveryInfo; + +/** + * Additional QoS parameters as defined in Section 9.4.2.316 + * of the IEEE P802.11be/D4.0 Standard. + */ +@VintfStability +parcelable QosCharacteristics { + /** + * Unsigned integer specifying the minimum interval (in microseconds) between the start of + * two consecutive service periods (SPs) that are allocated for frame exchanges. + * The value must be non-zero. + */ + int minServiceIntervalUs; + + /** + * Unsigned integer specifying the maximum interval (in microseconds) between the start of two + * consecutive SPs that are allocated for frame exchanges. The value must be non-zero. + */ + int maxServiceIntervalUs; + + /** + * Unsigned integer specifying the lowest data rate (in kilobits/sec) + * for the transport of MSDUs or A-MSDUs belonging to the traffic flow. + * The value must be non-zero. + */ + int minDataRateKbps; + + /** + * Unsigned integer specifying the maximum amount of time (in microseconds) + * targeted to transport an MSDU or A-MSDU belonging to the traffic flow. + * The value must be non-zero. + */ + int delayBoundUs; + + /** + * Enum values indicating which optional fields are provided. + * See Figure 9-1001au of the IEEE P802.11be/D4.0 Standard. + */ + @VintfStability + @Backing(type="int") + enum QosCharacteristicsMask { + MAX_MSDU_SIZE = 1 << 0, + SERVICE_START_TIME = 1 << 1, + SERVICE_START_TIME_LINK_ID = 1 << 2, + MEAN_DATA_RATE = 1 << 3, + BURST_SIZE = 1 << 4, + MSDU_LIFETIME = 1 << 5, + MSDU_DELIVERY_INFO = 1 << 6, + } + + /** + * Mask of |QosCharacteristicsMask| indicating which optional fields are provided. + */ + int optionalFieldMask; + + /** + * Unsigned 16-bit value specifying the maximum size (in octets) of an MSDU + * belonging to the traffic flow. The value must be non-zero if provided. + */ + char maxMsduSizeOctets; + + /** + * Unsigned integer specifying the anticipated time (in microseconds) when + * the traffic starts for the associated TID. + */ + int serviceStartTimeUs; + + /** + * The four LSBs indicate the link identifier that corresponds to the link for which the + * TSF timer is used to indicate the Service Start Time. The four MSBs should not be used. + * This field is present if |serviceStartTimeUs| is included and is not present otherwise. + */ + byte serviceStartTimeLinkId; + + /** + * Unsigned integer indicating the data rate specified (in kilobits/sec) for transport of MSDUs + * or A-MSDUs belonging to the traffic flow. The value must be non-zero if provided. + */ + int meanDataRateKbps; + + /** + * Unsigned integer specififying the maximum burst (in octets) of the MSDUs or A-MSDUs + * belonging to the traffic flow that arrive at the MAC SAP within any time duration equal + * to the value specified in the |delayBound| field. The value must be non-zero if provided. + */ + int burstSizeOctets; + + /** + * Unsigned 16-bit integer specifying the maximum amount of time (in milliseconds) since the + * arrival of the MSDU at the MAC data service interface beyond which the MSDU is not useful + * even if received by the receiver. The amount of time specified in this field is larger than + * or equal to the amount of time specified in the |delayBound| field, if present. The value + * must be non-zero if provided. + */ + char msduLifetimeMs; + + /** + * MSDU delivery information. See |MsduDeliveryInfo| for more details. + */ + MsduDeliveryInfo msduDeliveryInfo; +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/QosPolicyScsData.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/QosPolicyScsData.aidl index 86a4dac216..76f5a9a832 100644 --- a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/QosPolicyScsData.aidl +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/QosPolicyScsData.aidl @@ -1,5 +1,6 @@ package android.hardware.wifi.supplicant; +import android.hardware.wifi.supplicant.QosCharacteristics; import android.hardware.wifi.supplicant.QosPolicyClassifierParams; /** @@ -21,4 +22,24 @@ parcelable QosPolicyScsData { * QoS policy SCS classifier type information. */ QosPolicyClassifierParams classifierParams; + + /** + * Enum values for the |direction| field. + */ + @VintfStability + @Backing(type="byte") + enum LinkDirection { + DOWNLINK, + UPLINK, // Only applies to trigger-based traffic (Wi-Fi 6+) + } + + /** + * Direction of data described by this element. + */ + LinkDirection direction; + + /** + * Additional parameters available in QoS R3. + */ + @nullable QosCharacteristics QosCharacteristics; }