]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: rtw89: extract link part from core tx write function
authorZong-Zhe Yang <kevin_yang@realtek.com>
Mon, 5 May 2025 07:24:30 +0000 (15:24 +0800)
committerPing-Ke Shih <pkshih@realtek.com>
Sat, 10 May 2025 00:52:02 +0000 (08:52 +0800)
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
drivers/net/wireless/realtek/rtw89/core.c

index e681e8abc20d16d8762fb762f91668baa16edecd..0fd902eef05b914d0b7ec3ffbe522dd8994f1c0a 100644 (file)
@@ -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) |