Commit d33fc8d0 authored by Eric Huang's avatar Eric Huang Committed by Kalle Valo

wifi: rtw89: correct 5 MHz mask setting

Use primary channel index to determine which 5 MHz mask should be enable.
This mask is used to prevent noise from channel edge to effect CCA
threshold in wide bandwidth (>= 40 MHZ).

Fixes: 1b00e923 ("rtw89: 8852c: add set channel of BB part")
Fixes: 6b069898 ("wifi: rtw89: 8852b: add chip_ops::set_channel")
Cc: stable@vger.kernel.org
Signed-off-by: default avatarEric Huang <echuang@realtek.com>
Signed-off-by: default avatarPing-Ke Shih <pkshih@realtek.com>
Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230406072841.8308-1-pkshih@realtek.com
parent 8c36cf0d
...@@ -1289,7 +1289,7 @@ static void rtw8852b_ctrl_cck_en(struct rtw89_dev *rtwdev, bool cck_en) ...@@ -1289,7 +1289,7 @@ static void rtw8852b_ctrl_cck_en(struct rtw89_dev *rtwdev, bool cck_en)
static void rtw8852b_5m_mask(struct rtw89_dev *rtwdev, const struct rtw89_chan *chan, static void rtw8852b_5m_mask(struct rtw89_dev *rtwdev, const struct rtw89_chan *chan,
enum rtw89_phy_idx phy_idx) enum rtw89_phy_idx phy_idx)
{ {
u8 pri_ch = chan->primary_channel; u8 pri_ch = chan->pri_ch_idx;
bool mask_5m_low; bool mask_5m_low;
bool mask_5m_en; bool mask_5m_en;
...@@ -1297,12 +1297,13 @@ static void rtw8852b_5m_mask(struct rtw89_dev *rtwdev, const struct rtw89_chan * ...@@ -1297,12 +1297,13 @@ static void rtw8852b_5m_mask(struct rtw89_dev *rtwdev, const struct rtw89_chan *
case RTW89_CHANNEL_WIDTH_40: case RTW89_CHANNEL_WIDTH_40:
/* Prich=1: Mask 5M High, Prich=2: Mask 5M Low */ /* Prich=1: Mask 5M High, Prich=2: Mask 5M Low */
mask_5m_en = true; mask_5m_en = true;
mask_5m_low = pri_ch == 2; mask_5m_low = pri_ch == RTW89_SC_20_LOWER;
break; break;
case RTW89_CHANNEL_WIDTH_80: case RTW89_CHANNEL_WIDTH_80:
/* Prich=3: Mask 5M High, Prich=4: Mask 5M Low, Else: Disable */ /* Prich=3: Mask 5M High, Prich=4: Mask 5M Low, Else: Disable */
mask_5m_en = pri_ch == 3 || pri_ch == 4; mask_5m_en = pri_ch == RTW89_SC_20_UPMOST ||
mask_5m_low = pri_ch == 4; pri_ch == RTW89_SC_20_LOWEST;
mask_5m_low = pri_ch == RTW89_SC_20_LOWEST;
break; break;
default: default:
mask_5m_en = false; mask_5m_en = false;
......
...@@ -1380,18 +1380,19 @@ static void rtw8852c_5m_mask(struct rtw89_dev *rtwdev, ...@@ -1380,18 +1380,19 @@ static void rtw8852c_5m_mask(struct rtw89_dev *rtwdev,
const struct rtw89_chan *chan, const struct rtw89_chan *chan,
enum rtw89_phy_idx phy_idx) enum rtw89_phy_idx phy_idx)
{ {
u8 pri_ch = chan->primary_channel; u8 pri_ch = chan->pri_ch_idx;
bool mask_5m_low; bool mask_5m_low;
bool mask_5m_en; bool mask_5m_en;
switch (chan->band_width) { switch (chan->band_width) {
case RTW89_CHANNEL_WIDTH_40: case RTW89_CHANNEL_WIDTH_40:
mask_5m_en = true; mask_5m_en = true;
mask_5m_low = pri_ch == 2; mask_5m_low = pri_ch == RTW89_SC_20_LOWER;
break; break;
case RTW89_CHANNEL_WIDTH_80: case RTW89_CHANNEL_WIDTH_80:
mask_5m_en = ((pri_ch == 3) || (pri_ch == 4)); mask_5m_en = pri_ch == RTW89_SC_20_UPMOST ||
mask_5m_low = pri_ch == 4; pri_ch == RTW89_SC_20_LOWEST;
mask_5m_low = pri_ch == RTW89_SC_20_LOWEST;
break; break;
default: default:
mask_5m_en = false; mask_5m_en = false;
......
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