blob: aa984b3bf6a99bd2ae69d845e6f724247e646a15 [file] [log] [blame]
/*
* Copyright (c) 2019 The Fuchsia Authors
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
// Unittest code for the functions in mvm/utils.c
#include <stdio.h>
#include "gtest/gtest.h"
extern "C" {
#include "src/connectivity/wlan/drivers/third_party/intel/iwlwifi/mvm/mvm.h"
}
namespace {
class UtilsTest : public testing::Test {
public:
UtilsTest() {}
~UtilsTest() {}
};
TEST_F(UtilsTest, LegacyToDot11) {
int idx; // 802.11 index
// The band is out of range
EXPECT_EQ(iwl_mvm_legacy_rate_to_mac80211_idx(0, NUM_NL80211_BANDS, &idx), ZX_ERR_OUT_OF_RANGE);
// Invalid pointer
EXPECT_EQ(iwl_mvm_legacy_rate_to_mac80211_idx(0, NL80211_BAND_5GHZ, nullptr),
ZX_ERR_INVALID_ARGS);
// Not supported 60GHz
EXPECT_EQ(iwl_mvm_legacy_rate_to_mac80211_idx(0, NL80211_BAND_60GHZ, &idx), ZX_ERR_NOT_SUPPORTED);
// 2.4 GHz: data rate: 1 MHz ~ 54 MHz
EXPECT_EQ(iwl_mvm_legacy_rate_to_mac80211_idx(10 /* 1 Mhz */, NL80211_BAND_2GHZ, &idx), ZX_OK);
EXPECT_EQ(idx, 0);
EXPECT_EQ(iwl_mvm_legacy_rate_to_mac80211_idx(3 /* 54 Mhz */, NL80211_BAND_2GHZ, &idx), ZX_OK);
EXPECT_EQ(idx, 11);
// 5 GHz: data rate: 6 MHz ~ 54 MHz
EXPECT_EQ(iwl_mvm_legacy_rate_to_mac80211_idx(13 /* 6 Mhz */, NL80211_BAND_5GHZ, &idx), ZX_OK);
EXPECT_EQ(idx, 0);
EXPECT_EQ(iwl_mvm_legacy_rate_to_mac80211_idx(3 /* 54 Mhz */, NL80211_BAND_5GHZ, &idx), ZX_OK);
EXPECT_EQ(idx, 7);
EXPECT_EQ(iwl_mvm_legacy_rate_to_mac80211_idx(10 /* 1 Mhz */, NL80211_BAND_5GHZ, &idx),
ZX_ERR_NOT_FOUND);
// Not in the table
EXPECT_EQ(iwl_mvm_legacy_rate_to_mac80211_idx(0 /* random number */, NL80211_BAND_5GHZ, &idx),
ZX_ERR_NOT_FOUND);
}
TEST_F(UtilsTest, Dot11ToHWRate) {
EXPECT_EQ(iwl_mvm_mac80211_idx_to_hwrate(0 /* 1 Mhz */), 10);
EXPECT_EQ(iwl_mvm_mac80211_idx_to_hwrate(11 /* 54 Mhz */), 3);
}
} // namespace