11// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
22/*
3- * Copyright (C) 2012-2014, 2018-2025 Intel Corporation
3+ * Copyright (C) 2012-2014, 2018-2026 Intel Corporation
44 * Copyright (C) 2013-2014 Intel Mobile Communications GmbH
55 * Copyright (C) 2015-2017 Intel Deutschland GmbH
66 */
@@ -927,13 +927,18 @@ u8 iwl_mvm_mac_ctxt_get_lowest_rate(struct iwl_mvm *mvm,
927927
928928u16 iwl_mvm_mac_ctxt_get_beacon_flags (const struct iwl_fw * fw , u8 rate_idx )
929929{
930- u16 flags = iwl_mvm_mac80211_idx_to_hwrate (fw , rate_idx );
931930 bool is_new_rate = iwl_fw_lookup_cmd_ver (fw , BEACON_TEMPLATE_CMD , 0 ) > 10 ;
931+ u16 flags = 0 ;
932932
933933 if (rate_idx <= IWL_LAST_CCK_RATE )
934934 flags |= is_new_rate ? IWL_MAC_BEACON_CCK
935935 : IWL_MAC_BEACON_CCK_V1 ;
936936
937+ if (iwl_fw_lookup_cmd_ver (fw , TX_CMD , 0 ) > 8 )
938+ flags |= iwl_mvm_mac80211_idx_to_hwrate (fw , rate_idx );
939+ else
940+ flags |= iwl_fw_rate_idx_to_plcp (rate_idx );
941+
937942 return flags ;
938943}
939944
@@ -962,6 +967,7 @@ static void iwl_mvm_mac_ctxt_set_tx(struct iwl_mvm *mvm,
962967{
963968 struct iwl_mvm_vif * mvmvif = iwl_mvm_vif_from_mac80211 (vif );
964969 struct ieee80211_tx_info * info ;
970+ u32 rate_n_flags = 0 ;
965971 u8 rate ;
966972 u32 tx_flags ;
967973
@@ -981,18 +987,21 @@ static void iwl_mvm_mac_ctxt_set_tx(struct iwl_mvm *mvm,
981987 IWL_UCODE_TLV_CAPA_BEACON_ANT_SELECTION )) {
982988 iwl_mvm_toggle_tx_ant (mvm , & mvm -> mgmt_last_antenna_idx );
983989
984- tx_params -> rate_n_flags =
985- cpu_to_le32 (BIT (mvm -> mgmt_last_antenna_idx ) <<
986- RATE_MCS_ANT_POS );
990+ rate_n_flags |= BIT (mvm -> mgmt_last_antenna_idx ) <<
991+ RATE_MCS_ANT_POS ;
987992 }
988993
989994 rate = iwl_mvm_mac_ctxt_get_beacon_rate (mvm , info , vif );
990995
991- tx_params -> rate_n_flags |=
992- cpu_to_le32 (iwl_mvm_mac80211_idx_to_hwrate (mvm -> fw , rate ));
993- if (rate == IWL_FIRST_CCK_RATE )
994- tx_params -> rate_n_flags |= cpu_to_le32 (RATE_MCS_CCK_MSK_V1 );
996+ if (rate < IWL_FIRST_OFDM_RATE )
997+ rate_n_flags |= RATE_MCS_MOD_TYPE_CCK ;
998+ else
999+ rate_n_flags |= RATE_MCS_MOD_TYPE_LEGACY_OFDM ;
1000+
1001+ rate_n_flags |= iwl_mvm_mac80211_idx_to_hwrate (mvm -> fw , rate );
9951002
1003+ tx_params -> rate_n_flags = iwl_mvm_v3_rate_to_fw (rate_n_flags ,
1004+ mvm -> fw_rates_ver );
9961005}
9971006
9981007int iwl_mvm_mac_ctxt_send_beacon_cmd (struct iwl_mvm * mvm ,
0 commit comments