Commit 3c4955f8 authored by Wey-Yi Guy's avatar Wey-Yi Guy Committed by John W. Linville

iwlwifi: verify the antenna selection when receive fixed rate debugfs

When iwlwifi driver receive fixed rate debugfs command, validate the
antenna selection, if the selection is invalid, report the valid antenna
choice and do not set the rate scale table to fixed rate. Otherwise, set
the entire rate scale table to the fixed rate request by the user. this
validation can prevent sysassert happen in uCode
Signed-off-by: default avatarWey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: default avatarReinette Chatre <reinette.chatre@intel.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent df36c044
...@@ -2473,18 +2473,25 @@ static void rs_dbgfs_set_mcs(struct iwl_lq_sta *lq_sta, ...@@ -2473,18 +2473,25 @@ static void rs_dbgfs_set_mcs(struct iwl_lq_sta *lq_sta,
u32 *rate_n_flags, int index) u32 *rate_n_flags, int index)
{ {
struct iwl_priv *priv; struct iwl_priv *priv;
u8 valid_tx_ant;
u8 ant_sel_tx;
priv = lq_sta->drv; priv = lq_sta->drv;
valid_tx_ant = priv->hw_params.valid_tx_ant;
if (lq_sta->dbg_fixed_rate) { if (lq_sta->dbg_fixed_rate) {
if (index < 12) { ant_sel_tx =
((lq_sta->dbg_fixed_rate & RATE_MCS_ANT_ABC_MSK)
>> RATE_MCS_ANT_POS);
if ((valid_tx_ant & ant_sel_tx) == ant_sel_tx) {
*rate_n_flags = lq_sta->dbg_fixed_rate; *rate_n_flags = lq_sta->dbg_fixed_rate;
IWL_DEBUG_RATE(priv, "Fixed rate ON\n");
} else { } else {
if (lq_sta->band == IEEE80211_BAND_5GHZ) lq_sta->dbg_fixed_rate = 0;
*rate_n_flags = 0x800D; IWL_ERR(priv,
else "Invalid antenna selection 0x%X, Valid is 0x%X\n",
*rate_n_flags = 0x820A; ant_sel_tx, valid_tx_ant);
IWL_DEBUG_RATE(priv, "Fixed rate OFF\n");
} }
IWL_DEBUG_RATE(priv, "Fixed rate ON\n");
} else { } else {
IWL_DEBUG_RATE(priv, "Fixed rate OFF\n"); IWL_DEBUG_RATE(priv, "Fixed rate OFF\n");
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment