mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-13 20:14:37 -04:00
wifi: rtw89: extract link part from core tx write function
Extract core_tx_write_link from core_tx_write to accept given links as parameters. To make the follow-up changes of TX description more clear, tweak SW functions to split things ahead. (don't change logic at all) Signed-off-by: Zong-Zhe Yang <kevin_yang@realtek.com> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> Link: https://patch.msgid.link/20250505072440.45113-2-pkshih@realtek.com
This commit is contained in:
committed by
Ping-Ke Shih
parent
b7f0cc647e
commit
0f34fbd274
@@ -1123,32 +1123,17 @@ int rtw89_h2c_tx(struct rtw89_dev *rtwdev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
int rtw89_core_tx_write(struct rtw89_dev *rtwdev, struct ieee80211_vif *vif,
|
||||
struct ieee80211_sta *sta, struct sk_buff *skb, int *qsel)
|
||||
static int rtw89_core_tx_write_link(struct rtw89_dev *rtwdev,
|
||||
struct rtw89_vif_link *rtwvif_link,
|
||||
struct rtw89_sta_link *rtwsta_link,
|
||||
struct sk_buff *skb, int *qsel)
|
||||
{
|
||||
struct rtw89_sta *rtwsta = sta_to_rtwsta_safe(sta);
|
||||
struct rtw89_vif *rtwvif = vif_to_rtwvif(vif);
|
||||
struct rtw89_core_tx_request tx_req = {0};
|
||||
struct rtw89_sta_link *rtwsta_link = NULL;
|
||||
struct rtw89_vif_link *rtwvif_link;
|
||||
struct ieee80211_sta *sta = rtwsta_link_to_sta_safe(rtwsta_link);
|
||||
struct ieee80211_vif *vif = rtwvif_link_to_vif(rtwvif_link);
|
||||
struct rtw89_vif *rtwvif = rtwvif_link->rtwvif;
|
||||
struct rtw89_core_tx_request tx_req = {};
|
||||
int ret;
|
||||
|
||||
if (rtwsta) {
|
||||
rtwsta_link = rtw89_get_designated_link(rtwsta);
|
||||
if (unlikely(!rtwsta_link)) {
|
||||
rtw89_err(rtwdev, "tx: find no sta designated link\n");
|
||||
return -ENOLINK;
|
||||
}
|
||||
|
||||
rtwvif_link = rtwsta_link->rtwvif_link;
|
||||
} else {
|
||||
rtwvif_link = rtw89_get_designated_link(rtwvif);
|
||||
if (unlikely(!rtwvif_link)) {
|
||||
rtw89_err(rtwdev, "tx: find no vif designated link\n");
|
||||
return -ENOLINK;
|
||||
}
|
||||
}
|
||||
|
||||
tx_req.skb = skb;
|
||||
tx_req.vif = vif;
|
||||
tx_req.sta = sta;
|
||||
@@ -1172,6 +1157,33 @@ int rtw89_core_tx_write(struct rtw89_dev *rtwdev, struct ieee80211_vif *vif,
|
||||
return 0;
|
||||
}
|
||||
|
||||
int rtw89_core_tx_write(struct rtw89_dev *rtwdev, struct ieee80211_vif *vif,
|
||||
struct ieee80211_sta *sta, struct sk_buff *skb, int *qsel)
|
||||
{
|
||||
struct rtw89_sta *rtwsta = sta_to_rtwsta_safe(sta);
|
||||
struct rtw89_vif *rtwvif = vif_to_rtwvif(vif);
|
||||
struct rtw89_sta_link *rtwsta_link = NULL;
|
||||
struct rtw89_vif_link *rtwvif_link;
|
||||
|
||||
if (rtwsta) {
|
||||
rtwsta_link = rtw89_get_designated_link(rtwsta);
|
||||
if (unlikely(!rtwsta_link)) {
|
||||
rtw89_err(rtwdev, "tx: find no sta designated link\n");
|
||||
return -ENOLINK;
|
||||
}
|
||||
|
||||
rtwvif_link = rtwsta_link->rtwvif_link;
|
||||
} else {
|
||||
rtwvif_link = rtw89_get_designated_link(rtwvif);
|
||||
if (unlikely(!rtwvif_link)) {
|
||||
rtw89_err(rtwdev, "tx: find no vif designated link\n");
|
||||
return -ENOLINK;
|
||||
}
|
||||
}
|
||||
|
||||
return rtw89_core_tx_write_link(rtwdev, rtwvif_link, rtwsta_link, skb, qsel);
|
||||
}
|
||||
|
||||
static __le32 rtw89_build_txwd_body0(struct rtw89_tx_desc_info *desc_info)
|
||||
{
|
||||
u32 dword = FIELD_PREP(RTW89_TXWD_BODY0_WP_OFFSET, desc_info->wp_offset) |
|
||||
|
||||
Reference in New Issue
Block a user