wifi: Notify MLO Link status updates

Add a callback to notify MLO link status changes due to
- Multi-Link Reconfiguration (AP Removal)
- TID to link mapping updates

Bug: 247119055
Bug: 248289182
Test: mm -j

Change-Id: I1010cfb3ef608466a46d54e1ef2ae4e665504210
This commit is contained in:
Mahesh KKV 2022-11-15 10:19:42 -08:00
parent f0bd8c223f
commit 9cb9424e1f
3 changed files with 49 additions and 0 deletions

View file

@ -64,4 +64,10 @@ interface ISupplicantStaIfaceCallback {
oneway void onQosPolicyReset(); oneway void onQosPolicyReset();
oneway void onQosPolicyRequest(in int qosPolicyRequestId, in android.hardware.wifi.supplicant.QosPolicyData[] qosPolicyData); oneway void onQosPolicyRequest(in int qosPolicyRequestId, in android.hardware.wifi.supplicant.QosPolicyData[] qosPolicyData);
oneway void onStateChangedWithAkm(in android.hardware.wifi.supplicant.StaIfaceCallbackState newState, in byte[] bssid, in int id, in byte[] ssid, in boolean filsHlpSent, in android.hardware.wifi.supplicant.KeyMgmtMask keyMgmtMask); oneway void onStateChangedWithAkm(in android.hardware.wifi.supplicant.StaIfaceCallbackState newState, in byte[] bssid, in int id, in byte[] ssid, in boolean filsHlpSent, in android.hardware.wifi.supplicant.KeyMgmtMask keyMgmtMask);
oneway void onMloLinksInfoChanged(in android.hardware.wifi.supplicant.ISupplicantStaIfaceCallback.MloLinkInfoChangeReason reason);
@Backing(type="int") @VintfStability
enum MloLinkInfoChangeReason {
TID_TO_LINK_MAP = 0,
MULTI_LINK_RECONFIG_AP_REMOVAL = 1,
}
} }

View file

@ -329,4 +329,42 @@ oneway interface ISupplicantStaIfaceCallback {
*/ */
void onStateChangedWithAkm(in StaIfaceCallbackState newState, in byte[] bssid, in int id, void onStateChangedWithAkm(in StaIfaceCallbackState newState, in byte[] bssid, in int id,
in byte[] ssid, in boolean filsHlpSent, in KeyMgmtMask keyMgmtMask); in byte[] ssid, in boolean filsHlpSent, in KeyMgmtMask keyMgmtMask);
/**
* Reason codes to be used with the callback |ISupplicantStaIfaceCallback.onMloLinksInfoChanged|
*/
@VintfStability
@Backing(type="int")
enum MloLinkInfoChangeReason {
/**
* TID-to-link mapping has changed. Updated mappings will be set in
* |MloLinksInfo.MloLink[].tids_downlink_map| and
* |MloLinksInfo.MloLink[].tids_uplink_map| for each of the links.
*
* STA MLD will operate in default mode if a TID-to-link mapping is not
* indicated by the callback. In default mode, all TIDs are mapped to
* all setup links in downlink and uplink directions.
*/
TID_TO_LINK_MAP = 0,
/**
* Multi-link reconfiguration - AP removal as described in
* IEEE 802.11be spec, section 35.3.6. This is a mandatory feature for
* station.
*
* Removed link will not be present in |ISupplicantStaIface.getConnectionMloLinksInfo|.
*/
MULTI_LINK_RECONFIG_AP_REMOVAL = 1,
}
/**
* Used to indicate that Multi Link status has changed due to the provided
* reason. Upadted MLO link status can be fetched using
* |ISupplicantStaIface.getConnectionMloLinksInfo|
*
* |MloLink.linkId| and |MloLink.staLinkMacAddress| are not expected
* to change.
*
* @param reason Reason as given in MloLinkInfoChangeReason.
*/
void onMloLinksInfoChanged(in MloLinkInfoChangeReason reason);
} }

View file

@ -213,6 +213,11 @@ class SupplicantStaIfaceCallback : public BnSupplicantStaIfaceCallback {
::aidl::android::hardware::wifi::supplicant::KeyMgmtMask /* keyMgmtMask*/) override { ::aidl::android::hardware::wifi::supplicant::KeyMgmtMask /* keyMgmtMask*/) override {
return ndk::ScopedAStatus::ok(); return ndk::ScopedAStatus::ok();
} }
::ndk::ScopedAStatus onMloLinksInfoChanged(
::aidl::android::hardware::wifi::supplicant::ISupplicantStaIfaceCallback::
MloLinkInfoChangeReason /* reason */) override {
return ndk::ScopedAStatus::ok();
}
}; };
class SupplicantStaIfaceAidlTest : public testing::TestWithParam<std::string> { class SupplicantStaIfaceAidlTest : public testing::TestWithParam<std::string> {