mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
wifi: rtw89: set the correct mac_id for management frames
The mac_id of management frames should follow rtwvif->mac_id or rtwsta->mac_id. Add this patch to set the correct mac_id and prevent unexpected behavior. Signed-off-by: Kuan-Chung Chen <damon.chen@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/20230106121517.19841-2-pkshih@realtek.com
This commit is contained in:
committed by
Kalle Valo
parent
95dafeabe4
commit
877287f971
@@ -512,6 +512,21 @@ static u16 rtw89_core_get_mgmt_rate(struct rtw89_dev *rtwdev,
|
||||
return __ffs(vif->bss_conf.basic_rates) + lowest_rate;
|
||||
}
|
||||
|
||||
static u8 rtw89_core_tx_get_mac_id(struct rtw89_dev *rtwdev,
|
||||
struct rtw89_core_tx_request *tx_req)
|
||||
{
|
||||
struct ieee80211_vif *vif = tx_req->vif;
|
||||
struct rtw89_vif *rtwvif = (struct rtw89_vif *)vif->drv_priv;
|
||||
struct ieee80211_sta *sta = tx_req->sta;
|
||||
struct rtw89_sta *rtwsta;
|
||||
|
||||
if (!sta)
|
||||
return rtwvif->mac_id;
|
||||
|
||||
rtwsta = (struct rtw89_sta *)sta->drv_priv;
|
||||
return rtwsta->mac_id;
|
||||
}
|
||||
|
||||
static void
|
||||
rtw89_core_tx_update_mgmt_info(struct rtw89_dev *rtwdev,
|
||||
struct rtw89_core_tx_request *tx_req)
|
||||
@@ -528,6 +543,7 @@ rtw89_core_tx_update_mgmt_info(struct rtw89_dev *rtwdev,
|
||||
desc_info->qsel = qsel;
|
||||
desc_info->ch_dma = ch_dma;
|
||||
desc_info->port = desc_info->hiq ? rtwvif->port : 0;
|
||||
desc_info->mac_id = rtw89_core_tx_get_mac_id(rtwdev, tx_req);
|
||||
desc_info->hw_ssn_sel = RTW89_MGMT_HW_SSN_SEL;
|
||||
desc_info->hw_seq_mode = RTW89_MGMT_HW_SEQ_MODE;
|
||||
|
||||
@@ -670,21 +686,6 @@ desc_bk:
|
||||
desc_info->bk = true;
|
||||
}
|
||||
|
||||
static u8 rtw89_core_tx_get_mac_id(struct rtw89_dev *rtwdev,
|
||||
struct rtw89_core_tx_request *tx_req)
|
||||
{
|
||||
struct ieee80211_vif *vif = tx_req->vif;
|
||||
struct rtw89_vif *rtwvif = (struct rtw89_vif *)vif->drv_priv;
|
||||
struct ieee80211_sta *sta = tx_req->sta;
|
||||
struct rtw89_sta *rtwsta;
|
||||
|
||||
if (!sta)
|
||||
return rtwvif->mac_id;
|
||||
|
||||
rtwsta = (struct rtw89_sta *)sta->drv_priv;
|
||||
return rtwsta->mac_id;
|
||||
}
|
||||
|
||||
static void
|
||||
rtw89_core_tx_update_data_info(struct rtw89_dev *rtwdev,
|
||||
struct rtw89_core_tx_request *tx_req)
|
||||
|
||||
Reference in New Issue
Block a user