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

Commit 5e764c62 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 10255078 from db8d11f0 to udc-qpr1-release

Change-Id: Ia31c6166b16578112608441ab02b133499611fa0
parents b1d77c10 db8d11f0
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -379,7 +379,7 @@ void FrontendTests::verifyFrontendStatusExt1_1(vector<FrontendStatusTypeExt1_1>
                break;
            }
            case FrontendStatusTypeExt1_1::UEC: {
                ASSERT_TRUE(realStatuses[i].uec() == expectStatuses[i].uec());
                ASSERT_TRUE(realStatuses[i].uec() >= 0 );
                break;
            }
            case FrontendStatusTypeExt1_1::T2_SYSTEM_ID: {
+1 −1
Original line number Diff line number Diff line
@@ -86,7 +86,7 @@ inline void initFrontendConfig() {
    types.push_back(FrontendStatusTypeExt1_1::IS_MISO);
    vector<FrontendStatusExt1_1> statuses;
    FrontendStatusExt1_1 status;
    status.uec(4);
    status.uec(0);
    statuses.push_back(status);
    status.isMiso(true);
    statuses.push_back(status);
+19 −13
Original line number Diff line number Diff line
@@ -975,14 +975,14 @@ WifiChip::createBridgedApIfaceInternal() {
    br_ifaces_ap_instances_[br_ifname] = ap_instances;
    if (!iface_util_->createBridge(br_ifname)) {
        LOG(ERROR) << "Failed createBridge - br_name=" << br_ifname.c_str();
        invalidateAndClearBridgedAp(br_ifname);
        deleteApIface(br_ifname);
        return {nullptr, createWifiStatus(WifiStatusCode::ERROR_NOT_AVAILABLE)};
    }
    for (auto const& instance : ap_instances) {
        // Bind ap instance interface to AP bridge
        if (!iface_util_->addIfaceToBridge(br_ifname, instance)) {
            LOG(ERROR) << "Failed add if to Bridge - if_name=" << instance.c_str();
            invalidateAndClearBridgedAp(br_ifname);
            deleteApIface(br_ifname);
            return {nullptr, createWifiStatus(WifiStatusCode::ERROR_NOT_AVAILABLE)};
        }
    }
@@ -1016,8 +1016,7 @@ ndk::ScopedAStatus WifiChip::removeApIfaceInternal(const std::string& ifname) {
    // nan/rtt objects over AP iface. But, there is no harm to do it
    // here and not make that assumption all over the place.
    invalidateAndRemoveDependencies(ifname);
    // Clear the bridge interface and the iface instance.
    invalidateAndClearBridgedAp(ifname);
    deleteApIface(ifname);
    invalidateAndClear(ap_ifaces_, iface);
    for (const auto& callback : event_cb_handler_.getCallbacks()) {
        if (!callback->onIfaceRemoved(IfaceType::AP, ifname).isOk()) {
@@ -1960,21 +1959,28 @@ void WifiChip::invalidateAndClearBridgedApAll() {
    br_ifaces_ap_instances_.clear();
}

void WifiChip::invalidateAndClearBridgedAp(const std::string& br_name) {
    if (br_name.empty()) return;
    // delete managed interfaces
void WifiChip::deleteApIface(const std::string& if_name) {
    if (if_name.empty()) return;
    // delete bridged interfaces if any
    for (auto const& it : br_ifaces_ap_instances_) {
        if (it.first == br_name) {
        if (it.first == if_name) {
            for (auto const& iface : it.second) {
                iface_util_->removeIfaceFromBridge(br_name, iface);
                iface_util_->removeIfaceFromBridge(if_name, iface);
                legacy_hal_.lock()->deleteVirtualInterface(iface);
            }
            iface_util_->deleteBridge(br_name);
            br_ifaces_ap_instances_.erase(br_name);
            break;
            iface_util_->deleteBridge(if_name);
            br_ifaces_ap_instances_.erase(if_name);
            // ifname is bridged AP, return here.
            return;
        }
    }
    return;

    // No bridged AP case, delete AP iface
    legacy_hal::wifi_error legacy_status = legacy_hal_.lock()->deleteVirtualInterface(if_name);
    if (legacy_status != legacy_hal::WIFI_SUCCESS) {
        LOG(ERROR) << "Failed to remove interface: " << if_name << " "
                   << legacyErrorToString(legacy_status);
    }
}

bool WifiChip::findUsingNameFromBridgedApInstances(const std::string& name) {
+1 −1
Original line number Diff line number Diff line
@@ -253,7 +253,7 @@ class WifiChip : public BnWifiChip {
    bool writeRingbufferFilesInternal();
    std::string getWlanIfaceNameWithType(IfaceType type, unsigned idx);
    void invalidateAndClearBridgedApAll();
    void invalidateAndClearBridgedAp(const std::string& br_name);
    void deleteApIface(const std::string& if_name);
    bool findUsingNameFromBridgedApInstances(const std::string& name);
    ndk::ScopedAStatus triggerSubsystemRestartInternal();
    std::pair<std::vector<WifiRadioCombination>, ndk::ScopedAStatus>