Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9cb9424e authored by Mahesh KKV's avatar Mahesh KKV
Browse files

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
parent f0bd8c22
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -64,4 +64,10 @@ interface ISupplicantStaIfaceCallback {
  oneway void onQosPolicyReset();
  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 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,
  }
}
+38 −0
Original line number Diff line number Diff line
@@ -329,4 +329,42 @@ oneway interface ISupplicantStaIfaceCallback {
     */
    void onStateChangedWithAkm(in StaIfaceCallbackState newState, in byte[] bssid, in int id,
            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);
}
+5 −0
Original line number Diff line number Diff line
@@ -213,6 +213,11 @@ class SupplicantStaIfaceCallback : public BnSupplicantStaIfaceCallback {
            ::aidl::android::hardware::wifi::supplicant::KeyMgmtMask /* keyMgmtMask*/) override {
        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> {