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

Commit a7ce9003 authored by Les Lee's avatar Les Lee Committed by Automerger Merge Worker
Browse files

resolve merge conflicts of 155f20a6 to...

resolve merge conflicts of 155f20a6 to android12-tests-dev am: 559df942

Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2141153



Change-Id: Id18ad120af3812f613b9b14888b96e4e90b50cfc
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 8656a873 559df942
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -44,6 +44,27 @@ cc_test {
    ],
}

cc_library_static {
    name: "VtsHalWifiV1_4TargetTestUtil",
    defaults: ["VtsHalTargetTestDefaults"],
    srcs: [
        "wifi_hidl_test_utils_1_4.cpp",
    ],
    export_include_dirs: [
        ".",
    ],
    shared_libs: [
        "libnativehelper",
    ],
    static_libs: [
        "VtsHalWifiV1_0TargetTestUtil",
        "android.hardware.wifi@1.0",
        "android.hardware.wifi@1.3",
        "android.hardware.wifi@1.4",
        "libwifi-system-iface",
    ],
}

// SoftAP-specific tests, similar to VtsHalWifiApV1_0TargetTest.
cc_test {
    name: "VtsHalWifiApV1_4TargetTest",
+54 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2022 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.
 */

#include <VtsHalHidlTargetCallbackBase.h>
#include <android-base/logging.h>

#undef NAN  // NAN is defined in bionic/libc/include/math.h:38

#include <android/hardware/wifi/1.4/IWifi.h>
#include <android/hardware/wifi/1.4/IWifiApIface.h>
#include <android/hardware/wifi/1.4/IWifiChip.h>
#include <gtest/gtest.h>
#include <hidl/GtestPrinter.h>
#include <hidl/ServiceManagement.h>

#include "wifi_hidl_call_util.h"
#include "wifi_hidl_test_utils.h"

using ::android::sp;
using ::android::hardware::hidl_string;
using ::android::hardware::hidl_vec;
using ::android::hardware::Return;
using ::android::hardware::Void;
using ::android::hardware::wifi::V1_0::ChipModeId;
using ::android::hardware::wifi::V1_0::IfaceType;
using ::android::hardware::wifi::V1_4::IWifiApIface;
using ::android::hardware::wifi::V1_4::IWifiChip;

sp<IWifiChip> getWifiChip_1_4(const std::string& instance_name) {
    return IWifiChip::castFrom(getWifiChip(instance_name));
}

sp<IWifiApIface> getWifiApIface_1_4(const std::string& instance_name) {
    LOG(INFO) << "getWifiApIface_1_4";
    ChipModeId mode_id;
    sp<IWifiChip> wifi_chip_ = getWifiChip_1_4(instance_name);
    configureChipToSupportIfaceType(wifi_chip_, IfaceType::AP, &mode_id);
    const auto& status_and_iface = HIDL_INVOKE(wifi_chip_, createApIface);
    LOG(INFO) << "getWifiApIface_1_4 done to status_and_iface";
    return IWifiApIface::castFrom(status_and_iface.second);
}
+33 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2022 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.
 */

#pragma once

#include <android/hardware/wifi/1.4/IWifi.h>
#include <android/hardware/wifi/1.4/IWifiApIface.h>
#include <android/hardware/wifi/1.4/IWifiChip.h>

#include <getopt.h>

#include <VtsHalHidlTargetTestEnvBase.h>
// Helper functions to obtain references to the various HIDL interface objects.
// Note: We only have a single instance of each of these objects currently.
// These helper functions should be modified to return vectors if we support
// multiple instances.
android::sp<android::hardware::wifi::V1_4::IWifiChip> getWifiChip_1_4(
    const std::string& instance_name);
android::sp<android::hardware::wifi::V1_4::IWifiApIface> getWifiApIface_1_4(
    const std::string& instance_name);
+5 −0
Original line number Diff line number Diff line
@@ -31,12 +31,17 @@ cc_test {
    ],
    static_libs: [
        "VtsHalWifiV1_0TargetTestUtil",
        "VtsHalWifiV1_4TargetTestUtil",
        "VtsHalWifiHostapdV1_0TargetTestUtil",
        "android.hardware.wifi.hostapd@1.0",
        "android.hardware.wifi.hostapd@1.1",
        "android.hardware.wifi.hostapd@1.2",
        "android.hardware.wifi.hostapd@1.3",
        "android.hardware.wifi@1.0",
        "android.hardware.wifi@1.1",
        "android.hardware.wifi@1.2",
        "android.hardware.wifi@1.3",
        "android.hardware.wifi@1.4",
        "libgmock",
        "libwifi-system",
        "libwifi-system-iface",
+85 −56
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@

#include "hostapd_hidl_call_util.h"
#include "hostapd_hidl_test_utils.h"
#include "wifi_hidl_test_utils_1_4.h"

using ::android::sp;
using ::android::hardware::hidl_string;
@@ -39,6 +40,9 @@ using ::android::hardware::wifi::hostapd::V1_2::HostapdStatusCode;
using ::android::hardware::wifi::hostapd::V1_2::Ieee80211ReasonCode;
using ::android::hardware::wifi::hostapd::V1_2::IHostapd;
using ::android::hardware::wifi::V1_0::IWifi;
using ::android::hardware::wifi::V1_0::WifiStatusCode;
using ::android::hardware::wifi::V1_4::IWifiApIface;
using ::android::hardware::wifi::V1_4::IWifiChip;

namespace {
constexpr unsigned char kNwSsid[] = {'t', 'e', 's', 't', '1',
@@ -81,23 +85,25 @@ class HostapdHidlTest
   protected:
    bool isWpa3SaeSupport_ = false;
    bool isAcsSupport_ = false;
    std::string getPrimaryWlanIfaceName() {
        std::array<char, PROPERTY_VALUE_MAX> buffer;
        auto res = property_get("ro.vendor.wifi.sap.interface", buffer.data(),
                                nullptr);
        if (res > 0) return buffer.data();
        property_get("wifi.interface", buffer.data(), "wlan0");
        return buffer.data();

    std::string setupApIfaceIfNeededAndGetName() {
        sp<IWifiApIface> wifi_ap_iface;
        wifi_ap_iface = getWifiApIface_1_4(wifi_instance_name_);
        EXPECT_NE(nullptr, wifi_ap_iface.get());

        const auto& status_and_name = HIDL_INVOKE(wifi_ap_iface, getName);
        EXPECT_EQ(WifiStatusCode::SUCCESS, status_and_name.first.code);
        return status_and_name.second;
    }

    IHostapd::IfaceParams getIfaceParamsWithoutAcs() {
    IHostapd::IfaceParams getIfaceParamsWithoutAcs(std::string iface_name) {
        ::android::hardware::wifi::hostapd::V1_0::IHostapd::IfaceParams
            iface_params;
        ::android::hardware::wifi::hostapd::V1_1::IHostapd::IfaceParams
            iface_params_1_1;
        IHostapd::IfaceParams iface_params_1_2;

        iface_params.ifaceName = getPrimaryWlanIfaceName();
        iface_params.ifaceName = iface_name;
        iface_params.hwModeParams.enable80211N = true;
        iface_params.hwModeParams.enable80211AC = false;
        iface_params.channelParams.enableAcs = false;
@@ -114,9 +120,10 @@ class HostapdHidlTest
        return iface_params_1_2;
    }

    IHostapd::IfaceParams getIfaceParamsWithAcs() {
    IHostapd::IfaceParams getIfaceParamsWithAcs(std::string iface_name) {
        // First get the settings for WithoutAcs and then make changes
        IHostapd::IfaceParams iface_params_1_2 = getIfaceParamsWithoutAcs();
        IHostapd::IfaceParams iface_params_1_2 =
            getIfaceParamsWithoutAcs(iface_name);
        iface_params_1_2.V1_1.V1_0.channelParams.enableAcs = true;
        iface_params_1_2.V1_1.V1_0.channelParams.acsShouldExcludeDfs = true;
        iface_params_1_2.V1_1.V1_0.channelParams.channel = 0;
@@ -126,8 +133,10 @@ class HostapdHidlTest
        return iface_params_1_2;
    }

    IHostapd::IfaceParams getIfaceParamsWithAcsAndFreqRange() {
        IHostapd::IfaceParams iface_params_1_2 = getIfaceParamsWithAcs();
    IHostapd::IfaceParams getIfaceParamsWithAcsAndFreqRange(
        std::string iface_name) {
        IHostapd::IfaceParams iface_params_1_2 =
            getIfaceParamsWithAcs(iface_name);
        ::android::hardware::wifi::hostapd::V1_2::IHostapd::AcsFrequencyRange
            acsFrequencyRange;
        acsFrequencyRange.start = 2412;
@@ -141,9 +150,10 @@ class HostapdHidlTest
        return iface_params_1_2;
    }

    IHostapd::IfaceParams getIfaceParamsWithAcsAndInvalidFreqRange() {
    IHostapd::IfaceParams getIfaceParamsWithAcsAndInvalidFreqRange(
        std::string iface_name) {
        IHostapd::IfaceParams iface_params_1_2 =
            getIfaceParamsWithAcsAndFreqRange();
            getIfaceParamsWithAcsAndFreqRange(iface_name);
        iface_params_1_2.channelParams.acsChannelFreqRangesMhz[0].start = 222;
        iface_params_1_2.channelParams.acsChannelFreqRangesMhz[0].end = 999;
        return iface_params_1_2;
@@ -205,8 +215,10 @@ class HostapdHidlTest
        return nw_params_1_2;
    }

    IHostapd::IfaceParams getIfaceParamsWithInvalidChannel() {
        IHostapd::IfaceParams iface_params_1_2 = getIfaceParamsWithoutAcs();
    IHostapd::IfaceParams getIfaceParamsWithInvalidChannel(
        std::string iface_name) {
        IHostapd::IfaceParams iface_params_1_2 =
            getIfaceParamsWithoutAcs(iface_name);
        iface_params_1_2.V1_1.V1_0.channelParams.channel = kIfaceInvalidChannel;
        return iface_params_1_2;
    }
@@ -231,8 +243,9 @@ TEST_P(HostapdHidlTest, AddPskAccessPointWithAcs) {
    if (!isAcsSupport_) GTEST_SKIP() << "Missing ACS support";
    if (is_1_3(hostapd_))
        GTEST_SKIP() << "Ignore addAccessPoint_1_2 on hostapd 1_3";
    std::string ifname = setupApIfaceIfNeededAndGetName();
    auto status = HIDL_INVOKE(hostapd_, addAccessPoint_1_2,
                              getIfaceParamsWithAcs(), getPskNwParams());
                              getIfaceParamsWithAcs(ifname), getPskNwParams());
    EXPECT_EQ(HostapdStatusCode::SUCCESS, status.code);
}

@@ -244,9 +257,10 @@ TEST_P(HostapdHidlTest, AddPskAccessPointWithAcsAndFreqRange) {
    if (!isAcsSupport_) GTEST_SKIP() << "Missing ACS support";
    if (is_1_3(hostapd_))
        GTEST_SKIP() << "Ignore addAccessPoint_1_2 on hostapd 1_3";
    auto status =
        HIDL_INVOKE(hostapd_, addAccessPoint_1_2,
                    getIfaceParamsWithAcsAndFreqRange(), getPskNwParams());
    std::string ifname = setupApIfaceIfNeededAndGetName();
    auto status = HIDL_INVOKE(hostapd_, addAccessPoint_1_2,
                              getIfaceParamsWithAcsAndFreqRange(ifname),
                              getPskNwParams());
    EXPECT_EQ(HostapdStatusCode::SUCCESS, status.code);
}

@@ -258,8 +272,9 @@ TEST_P(HostapdHidlTest, AddPskAccessPointWithAcsAndInvalidFreqRange) {
    if (!isAcsSupport_) GTEST_SKIP() << "Missing ACS support";
    if (is_1_3(hostapd_))
        GTEST_SKIP() << "Ignore addAccessPoint_1_2 on hostapd 1_3";
    std::string ifname = setupApIfaceIfNeededAndGetName();
    auto status = HIDL_INVOKE(hostapd_, addAccessPoint_1_2,
                              getIfaceParamsWithAcsAndInvalidFreqRange(),
                              getIfaceParamsWithAcsAndInvalidFreqRange(ifname),
                              getPskNwParams());
    EXPECT_NE(HostapdStatusCode::SUCCESS, status.code);
}
@@ -272,8 +287,9 @@ TEST_P(HostapdHidlTest, AddOpenAccessPointWithAcs) {
    if (!isAcsSupport_) GTEST_SKIP() << "Missing ACS support";
    if (is_1_3(hostapd_))
        GTEST_SKIP() << "Ignore addAccessPoint_1_2 on hostapd 1_3";
    std::string ifname = setupApIfaceIfNeededAndGetName();
    auto status = HIDL_INVOKE(hostapd_, addAccessPoint_1_2,
                              getIfaceParamsWithAcs(), getOpenNwParams());
                              getIfaceParamsWithAcs(ifname), getOpenNwParams());
    EXPECT_EQ(HostapdStatusCode::SUCCESS, status.code);
}

@@ -284,8 +300,10 @@ TEST_P(HostapdHidlTest, AddOpenAccessPointWithAcs) {
TEST_P(HostapdHidlTest, AddPskAccessPointWithoutAcs) {
    if (is_1_3(hostapd_))
        GTEST_SKIP() << "Ignore addAccessPoint_1_2 on hostapd 1_3";
    auto status = HIDL_INVOKE(hostapd_, addAccessPoint_1_2,
                              getIfaceParamsWithoutAcs(), getPskNwParams());
    std::string ifname = setupApIfaceIfNeededAndGetName();
    auto status =
        HIDL_INVOKE(hostapd_, addAccessPoint_1_2,
                    getIfaceParamsWithoutAcs(ifname), getPskNwParams());
    EXPECT_EQ(HostapdStatusCode::SUCCESS, status.code);
}

@@ -296,8 +314,10 @@ TEST_P(HostapdHidlTest, AddPskAccessPointWithoutAcs) {
TEST_P(HostapdHidlTest, AddOpenAccessPointWithoutAcs) {
    if (is_1_3(hostapd_))
        GTEST_SKIP() << "Ignore addAccessPoint_1_2 on hostapd 1_3";
    auto status = HIDL_INVOKE(hostapd_, addAccessPoint_1_2,
                              getIfaceParamsWithoutAcs(), getOpenNwParams());
    std::string ifname = setupApIfaceIfNeededAndGetName();
    auto status =
        HIDL_INVOKE(hostapd_, addAccessPoint_1_2,
                    getIfaceParamsWithoutAcs(ifname), getOpenNwParams());
    EXPECT_EQ(HostapdStatusCode::SUCCESS, status.code);
}

@@ -309,8 +329,9 @@ TEST_P(HostapdHidlTest, AddSaeTransitionAccessPointWithoutAcs) {
    if (!isWpa3SaeSupport_) GTEST_SKIP() << "Missing SAE support";
    if (is_1_3(hostapd_))
        GTEST_SKIP() << "Ignore addAccessPoint_1_2 on hostapd 1_3";
    auto status =
        HIDL_INVOKE(hostapd_, addAccessPoint_1_2, getIfaceParamsWithoutAcs(),
    std::string ifname = setupApIfaceIfNeededAndGetName();
    auto status = HIDL_INVOKE(hostapd_, addAccessPoint_1_2,
                              getIfaceParamsWithoutAcs(ifname),
                              getSaeTransitionNwParams());
    EXPECT_EQ(HostapdStatusCode::SUCCESS, status.code);
}
@@ -323,8 +344,10 @@ TEST_P(HostapdHidlTest, AddSAEAccessPointWithoutAcs) {
    if (!isWpa3SaeSupport_) GTEST_SKIP() << "Missing SAE support";
    if (is_1_3(hostapd_))
        GTEST_SKIP() << "Ignore addAccessPoint_1_2 on hostapd 1_3";
    auto status = HIDL_INVOKE(hostapd_, addAccessPoint_1_2,
                              getIfaceParamsWithoutAcs(), getSaeNwParams());
    std::string ifname = setupApIfaceIfNeededAndGetName();
    auto status =
        HIDL_INVOKE(hostapd_, addAccessPoint_1_2,
                    getIfaceParamsWithoutAcs(ifname), getSaeNwParams());
    EXPECT_EQ(HostapdStatusCode::SUCCESS, status.code);
}

@@ -336,11 +359,12 @@ TEST_P(HostapdHidlTest, RemoveAccessPointWithAcs) {
    if (!isAcsSupport_) GTEST_SKIP() << "Missing ACS support";
    if (is_1_3(hostapd_))
        GTEST_SKIP() << "Ignore addAccessPoint_1_2 on hostapd 1_3";
    auto status_1_2 = HIDL_INVOKE(hostapd_, addAccessPoint_1_2,
                                  getIfaceParamsWithAcs(), getPskNwParams());
    std::string ifname = setupApIfaceIfNeededAndGetName();
    auto status_1_2 =
        HIDL_INVOKE(hostapd_, addAccessPoint_1_2, getIfaceParamsWithAcs(ifname),
                    getPskNwParams());
    EXPECT_EQ(HostapdStatusCode::SUCCESS, status_1_2.code);
    auto status =
        HIDL_INVOKE(hostapd_, removeAccessPoint, getPrimaryWlanIfaceName());
    auto status = HIDL_INVOKE(hostapd_, removeAccessPoint, ifname);
    EXPECT_EQ(
        android::hardware::wifi::hostapd::V1_0::HostapdStatusCode::SUCCESS,
        status.code);
@@ -353,11 +377,12 @@ TEST_P(HostapdHidlTest, RemoveAccessPointWithAcs) {
TEST_P(HostapdHidlTest, RemoveAccessPointWithoutAcs) {
    if (is_1_3(hostapd_))
        GTEST_SKIP() << "Ignore addAccessPoint_1_2 on hostapd 1_3";
    auto status_1_2 = HIDL_INVOKE(hostapd_, addAccessPoint_1_2,
                                  getIfaceParamsWithoutAcs(), getPskNwParams());
    std::string ifname = setupApIfaceIfNeededAndGetName();
    auto status_1_2 =
        HIDL_INVOKE(hostapd_, addAccessPoint_1_2,
                    getIfaceParamsWithoutAcs(ifname), getPskNwParams());
    EXPECT_EQ(HostapdStatusCode::SUCCESS, status_1_2.code);
    auto status =
        HIDL_INVOKE(hostapd_, removeAccessPoint, getPrimaryWlanIfaceName());
    auto status = HIDL_INVOKE(hostapd_, removeAccessPoint, ifname);
    EXPECT_EQ(
        android::hardware::wifi::hostapd::V1_0::HostapdStatusCode::SUCCESS,
        status.code);
@@ -370,9 +395,10 @@ TEST_P(HostapdHidlTest, RemoveAccessPointWithoutAcs) {
TEST_P(HostapdHidlTest, AddPskAccessPointWithInvalidChannel) {
    if (is_1_3(hostapd_))
        GTEST_SKIP() << "Ignore addAccessPoint_1_2 on hostapd 1_3";
    std::string ifname = setupApIfaceIfNeededAndGetName();
    auto status =
        HIDL_INVOKE(hostapd_, addAccessPoint_1_2,
                    getIfaceParamsWithInvalidChannel(), getPskNwParams());
                    getIfaceParamsWithInvalidChannel(ifname), getPskNwParams());
    EXPECT_NE(HostapdStatusCode::SUCCESS, status.code);
}

@@ -383,9 +409,10 @@ TEST_P(HostapdHidlTest, AddPskAccessPointWithInvalidChannel) {
TEST_P(HostapdHidlTest, AddInvalidPskAccessPointWithoutAcs) {
    if (is_1_3(hostapd_))
        GTEST_SKIP() << "Ignore addAccessPoint_1_2 on hostapd 1_3";
    std::string ifname = setupApIfaceIfNeededAndGetName();
    auto status =
        HIDL_INVOKE(hostapd_, addAccessPoint_1_2, getIfaceParamsWithoutAcs(),
                    getInvalidPskNwParams());
        HIDL_INVOKE(hostapd_, addAccessPoint_1_2,
                    getIfaceParamsWithoutAcs(ifname), getInvalidPskNwParams());
    EXPECT_NE(HostapdStatusCode::SUCCESS, status.code);
}

@@ -397,8 +424,9 @@ TEST_P(HostapdHidlTest, AddInvalidSaeTransitionAccessPointWithoutAcs) {
    if (!isWpa3SaeSupport_) GTEST_SKIP() << "Missing SAE support";
    if (is_1_3(hostapd_))
        GTEST_SKIP() << "Ignore addAccessPoint_1_2 on hostapd 1_3";
    auto status =
        HIDL_INVOKE(hostapd_, addAccessPoint_1_2, getIfaceParamsWithoutAcs(),
    std::string ifname = setupApIfaceIfNeededAndGetName();
    auto status = HIDL_INVOKE(hostapd_, addAccessPoint_1_2,
                              getIfaceParamsWithoutAcs(ifname),
                              getInvalidSaeTransitionNwParams());
    EXPECT_NE(HostapdStatusCode::SUCCESS, status.code);
}
@@ -411,9 +439,10 @@ TEST_P(HostapdHidlTest, AddInvalidSaeAccessPointWithoutAcs) {
    if (!isWpa3SaeSupport_) GTEST_SKIP() << "Missing SAE support";
    if (is_1_3(hostapd_))
        GTEST_SKIP() << "Ignore addAccessPoint_1_2 on hostapd 1_3";
    std::string ifname = setupApIfaceIfNeededAndGetName();
    auto status =
        HIDL_INVOKE(hostapd_, addAccessPoint_1_2, getIfaceParamsWithoutAcs(),
                    getInvalidSaeNwParams());
        HIDL_INVOKE(hostapd_, addAccessPoint_1_2,
                    getIfaceParamsWithoutAcs(ifname), getInvalidSaeNwParams());
    EXPECT_NE(HostapdStatusCode::SUCCESS, status.code);
}

@@ -422,8 +451,8 @@ TEST_P(HostapdHidlTest, AddInvalidSaeAccessPointWithoutAcs) {
 * when hotspot interface doesn't init..
 */
TEST_P(HostapdHidlTest, DisconnectClientWhenIfaceNotAvailable) {
    auto status =
        HIDL_INVOKE(hostapd_, forceClientDisconnect, getPrimaryWlanIfaceName(),
    std::string ifname = setupApIfaceIfNeededAndGetName();
    auto status = HIDL_INVOKE(hostapd_, forceClientDisconnect, ifname,
                              kTestZeroMacAddr, kTestDisconnectReasonCode);
    EXPECT_EQ(HostapdStatusCode::FAILURE_IFACE_UNKNOWN, status.code);
}
@@ -435,13 +464,13 @@ TEST_P(HostapdHidlTest, DisconnectClientWhenIfaceNotAvailable) {
TEST_P(HostapdHidlTest, DisconnectClientWhenIfacAvailable) {
    if (is_1_3(hostapd_))
        GTEST_SKIP() << "Ignore addAccessPoint_1_2 on hostapd 1_3";
    std::string ifname = setupApIfaceIfNeededAndGetName();
    auto status_1_2 =
        HIDL_INVOKE(hostapd_, addAccessPoint_1_2, getIfaceParamsWithoutAcs(),
                    getOpenNwParams());
        HIDL_INVOKE(hostapd_, addAccessPoint_1_2,
                    getIfaceParamsWithoutAcs(ifname), getOpenNwParams());
    EXPECT_EQ(HostapdStatusCode::SUCCESS, status_1_2.code);

    status_1_2 =
        HIDL_INVOKE(hostapd_, forceClientDisconnect, getPrimaryWlanIfaceName(),
    status_1_2 = HIDL_INVOKE(hostapd_, forceClientDisconnect, ifname,
                             kTestZeroMacAddr, kTestDisconnectReasonCode);
    EXPECT_EQ(HostapdStatusCode::FAILURE_CLIENT_UNKNOWN, status_1_2.code);
}