mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
wifi: mac80211_hwsim: add NAN PHY capabilities
Add static HT, VHT and HE PHY capabilities to the NAN capabilities structure. These are based on the existing band capability structures and initialization in mac80211_hwsim. The NAN PHY capabilities are used by mac80211 and nl80211 to advertise device capabilities for NAN data interfaces. Signed-off-by: Daniel Gabay <daniel.gabay@intel.com> Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://patch.msgid.link/20260506064301.2c94c156f05d.I539fab4adf2eb43bfec27006f7529b926e5208ea@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
29de2775e0
commit
408f38d1e3
|
|
@ -5412,6 +5412,95 @@ static const struct ieee80211_sband_iftype_data sband_capa_6ghz[] = {
|
|||
#endif
|
||||
};
|
||||
|
||||
#define HWSIM_VHT_MCS_MAP \
|
||||
(IEEE80211_VHT_MCS_SUPPORT_0_9 << 0 | \
|
||||
IEEE80211_VHT_MCS_SUPPORT_0_9 << 2 | \
|
||||
IEEE80211_VHT_MCS_SUPPORT_0_9 << 4 | \
|
||||
IEEE80211_VHT_MCS_SUPPORT_0_9 << 6 | \
|
||||
IEEE80211_VHT_MCS_SUPPORT_0_9 << 8 | \
|
||||
IEEE80211_VHT_MCS_SUPPORT_0_9 << 10 | \
|
||||
IEEE80211_VHT_MCS_SUPPORT_0_9 << 12 | \
|
||||
IEEE80211_VHT_MCS_SUPPORT_0_9 << 14)
|
||||
|
||||
static const struct ieee80211_sta_ht_cap hwsim_nan_ht_cap = {
|
||||
.ht_supported = true,
|
||||
.cap = IEEE80211_HT_CAP_SUP_WIDTH_20_40 |
|
||||
IEEE80211_HT_CAP_GRN_FLD |
|
||||
IEEE80211_HT_CAP_SGI_20 |
|
||||
IEEE80211_HT_CAP_SGI_40 |
|
||||
IEEE80211_HT_CAP_DSSSCCK40,
|
||||
.ampdu_factor = 0x3,
|
||||
.ampdu_density = 0x6,
|
||||
.mcs = {
|
||||
.rx_mask = { 0xff, 0xff },
|
||||
.tx_params = IEEE80211_HT_MCS_TX_DEFINED,
|
||||
},
|
||||
};
|
||||
|
||||
static const struct ieee80211_sta_vht_cap hwsim_nan_vht_cap = {
|
||||
.vht_supported = true,
|
||||
.cap = IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_11454 |
|
||||
IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ |
|
||||
IEEE80211_VHT_CAP_RXLDPC |
|
||||
IEEE80211_VHT_CAP_SHORT_GI_80 |
|
||||
IEEE80211_VHT_CAP_SHORT_GI_160 |
|
||||
IEEE80211_VHT_CAP_TXSTBC |
|
||||
IEEE80211_VHT_CAP_RXSTBC_4 |
|
||||
IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK,
|
||||
.vht_mcs = {
|
||||
.rx_mcs_map = cpu_to_le16(HWSIM_VHT_MCS_MAP),
|
||||
.tx_mcs_map = cpu_to_le16(HWSIM_VHT_MCS_MAP),
|
||||
},
|
||||
};
|
||||
|
||||
static const struct ieee80211_sta_he_cap hwsim_nan_he_cap = {
|
||||
.has_he = true,
|
||||
.he_cap_elem = {
|
||||
.mac_cap_info[0] =
|
||||
IEEE80211_HE_MAC_CAP0_HTC_HE,
|
||||
.mac_cap_info[1] =
|
||||
IEEE80211_HE_MAC_CAP1_TF_MAC_PAD_DUR_16US |
|
||||
IEEE80211_HE_MAC_CAP1_MULTI_TID_AGG_RX_QOS_8,
|
||||
.mac_cap_info[2] =
|
||||
IEEE80211_HE_MAC_CAP2_BSR |
|
||||
IEEE80211_HE_MAC_CAP2_MU_CASCADING |
|
||||
IEEE80211_HE_MAC_CAP2_ACK_EN,
|
||||
.mac_cap_info[3] =
|
||||
IEEE80211_HE_MAC_CAP3_OMI_CONTROL |
|
||||
IEEE80211_HE_MAC_CAP3_MAX_AMPDU_LEN_EXP_EXT_3,
|
||||
.mac_cap_info[4] = IEEE80211_HE_MAC_CAP4_AMSDU_IN_AMPDU,
|
||||
.phy_cap_info[0] =
|
||||
IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_40MHZ_80MHZ_IN_5G |
|
||||
IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_160MHZ_IN_5G |
|
||||
IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_80PLUS80_MHZ_IN_5G,
|
||||
.phy_cap_info[1] =
|
||||
IEEE80211_HE_PHY_CAP1_PREAMBLE_PUNC_RX_MASK |
|
||||
IEEE80211_HE_PHY_CAP1_DEVICE_CLASS_A |
|
||||
IEEE80211_HE_PHY_CAP1_LDPC_CODING_IN_PAYLOAD |
|
||||
IEEE80211_HE_PHY_CAP1_MIDAMBLE_RX_TX_MAX_NSTS,
|
||||
.phy_cap_info[2] =
|
||||
IEEE80211_HE_PHY_CAP2_NDP_4x_LTF_AND_3_2US |
|
||||
IEEE80211_HE_PHY_CAP2_STBC_TX_UNDER_80MHZ |
|
||||
IEEE80211_HE_PHY_CAP2_STBC_RX_UNDER_80MHZ |
|
||||
IEEE80211_HE_PHY_CAP2_UL_MU_FULL_MU_MIMO |
|
||||
IEEE80211_HE_PHY_CAP2_UL_MU_PARTIAL_MU_MIMO,
|
||||
|
||||
/*
|
||||
* Leave all the other PHY capability bytes
|
||||
* unset, as DCM, beam forming, RU and PPE
|
||||
* threshold information are not supported
|
||||
*/
|
||||
},
|
||||
.he_mcs_nss_supp = {
|
||||
.rx_mcs_80 = cpu_to_le16(0xfffa),
|
||||
.tx_mcs_80 = cpu_to_le16(0xfffa),
|
||||
.rx_mcs_160 = cpu_to_le16(0xfffa),
|
||||
.tx_mcs_160 = cpu_to_le16(0xfffa),
|
||||
.rx_mcs_80p80 = cpu_to_le16(0xfffa),
|
||||
.tx_mcs_80p80 = cpu_to_le16(0xfffa),
|
||||
},
|
||||
};
|
||||
|
||||
static void mac80211_hwsim_sband_capab(struct ieee80211_supported_band *sband)
|
||||
{
|
||||
switch (sband->band) {
|
||||
|
|
@ -5635,6 +5724,10 @@ static int mac80211_hwsim_new_radio(struct genl_info *info,
|
|||
data->if_limits[n_limits].max = 2;
|
||||
data->if_limits[n_limits].types = BIT(NL80211_IFTYPE_NAN_DATA);
|
||||
n_limits++;
|
||||
|
||||
hw->wiphy->nan_capa.phy.ht = hwsim_nan_ht_cap;
|
||||
hw->wiphy->nan_capa.phy.vht = hwsim_nan_vht_cap;
|
||||
hw->wiphy->nan_capa.phy.he = hwsim_nan_he_cap;
|
||||
}
|
||||
|
||||
data->if_combination.radar_detect_widths =
|
||||
|
|
@ -5816,14 +5909,7 @@ static int mac80211_hwsim_new_radio(struct genl_info *info,
|
|||
IEEE80211_VHT_CAP_RXSTBC_4 |
|
||||
IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK;
|
||||
sband->vht_cap.vht_mcs.rx_mcs_map =
|
||||
cpu_to_le16(IEEE80211_VHT_MCS_SUPPORT_0_9 << 0 |
|
||||
IEEE80211_VHT_MCS_SUPPORT_0_9 << 2 |
|
||||
IEEE80211_VHT_MCS_SUPPORT_0_9 << 4 |
|
||||
IEEE80211_VHT_MCS_SUPPORT_0_9 << 6 |
|
||||
IEEE80211_VHT_MCS_SUPPORT_0_9 << 8 |
|
||||
IEEE80211_VHT_MCS_SUPPORT_0_9 << 10 |
|
||||
IEEE80211_VHT_MCS_SUPPORT_0_9 << 12 |
|
||||
IEEE80211_VHT_MCS_SUPPORT_0_9 << 14);
|
||||
cpu_to_le16(HWSIM_VHT_MCS_MAP);
|
||||
sband->vht_cap.vht_mcs.tx_mcs_map =
|
||||
sband->vht_cap.vht_mcs.rx_mcs_map;
|
||||
break;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user