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:1b00e9236a
("rtw89: 8852c: add set channel of BB part") Fixes:6b0698984e
("wifi: rtw89: 8852b: add chip_ops::set_channel") Cc: stable@vger.kernel.org Signed-off-by: Eric Huang <echuang@realtek.com> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://lore.kernel.org/r/20230406072841.8308-1-pkshih@realtek.com
This commit is contained in:
parent
8c36cf0df4
commit
d33fc8d036
@ -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,
|
||||
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_en;
|
||||
|
||||
@ -1297,12 +1297,13 @@ static void rtw8852b_5m_mask(struct rtw89_dev *rtwdev, const struct rtw89_chan *
|
||||
case RTW89_CHANNEL_WIDTH_40:
|
||||
/* Prich=1: Mask 5M High, Prich=2: Mask 5M Low */
|
||||
mask_5m_en = true;
|
||||
mask_5m_low = pri_ch == 2;
|
||||
mask_5m_low = pri_ch == RTW89_SC_20_LOWER;
|
||||
break;
|
||||
case RTW89_CHANNEL_WIDTH_80:
|
||||
/* Prich=3: Mask 5M High, Prich=4: Mask 5M Low, Else: Disable */
|
||||
mask_5m_en = pri_ch == 3 || pri_ch == 4;
|
||||
mask_5m_low = pri_ch == 4;
|
||||
mask_5m_en = pri_ch == RTW89_SC_20_UPMOST ||
|
||||
pri_ch == RTW89_SC_20_LOWEST;
|
||||
mask_5m_low = pri_ch == RTW89_SC_20_LOWEST;
|
||||
break;
|
||||
default:
|
||||
mask_5m_en = false;
|
||||
|
@ -1380,18 +1380,19 @@ static void rtw8852c_5m_mask(struct rtw89_dev *rtwdev,
|
||||
const struct rtw89_chan *chan,
|
||||
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_en;
|
||||
|
||||
switch (chan->band_width) {
|
||||
case RTW89_CHANNEL_WIDTH_40:
|
||||
mask_5m_en = true;
|
||||
mask_5m_low = pri_ch == 2;
|
||||
mask_5m_low = pri_ch == RTW89_SC_20_LOWER;
|
||||
break;
|
||||
case RTW89_CHANNEL_WIDTH_80:
|
||||
mask_5m_en = ((pri_ch == 3) || (pri_ch == 4));
|
||||
mask_5m_low = pri_ch == 4;
|
||||
mask_5m_en = pri_ch == RTW89_SC_20_UPMOST ||
|
||||
pri_ch == RTW89_SC_20_LOWEST;
|
||||
mask_5m_low = pri_ch == RTW89_SC_20_LOWEST;
|
||||
break;
|
||||
default:
|
||||
mask_5m_en = false;
|
||||
|
Loading…
Reference in New Issue
Block a user