]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: ath12k: refactor ath12k_mac_op_ampdu_action()
authorKarthikeyan Periyasamy <quic_periyasa@quicinc.com>
Sun, 14 Jan 2024 15:02:41 +0000 (17:02 +0200)
committerKalle Valo <quic_kvalo@quicinc.com>
Tue, 16 Jan 2024 12:21:36 +0000 (14:21 +0200)
To support single wiphy abstraction, introduce link/radio specific helper
function in the mac80211 callback ampdu_action(). This way, the callback
can be extended to handle multiple link/radio in the future.

Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1
Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0-03427-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.15378.4

Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://msgid.link/20240103063731.3356060-9-quic_periyasa@quicinc.com
drivers/net/wireless/ath/ath12k/mac.c

index ef9e3558f5eb93fee5628dd4796951bd0a42b7ab..895bf9d194577b08a1798e5ffe913622aa5218aa 100644 (file)
@@ -5901,14 +5901,13 @@ static int ath12k_mac_op_set_antenna(struct ieee80211_hw *hw, u32 tx_ant, u32 rx
        return ret;
 }
 
-static int ath12k_mac_op_ampdu_action(struct ieee80211_hw *hw,
-                                     struct ieee80211_vif *vif,
-                                     struct ieee80211_ampdu_params *params)
+static int ath12k_mac_ampdu_action(struct ath12k_vif *arvif,
+                                  struct ieee80211_ampdu_params *params)
 {
-       struct ath12k *ar = hw->priv;
+       struct ath12k *ar = arvif->ar;
        int ret = -EINVAL;
 
-       mutex_lock(&ar->conf_mutex);
+       lockdep_assert_held(&ar->conf_mutex);
 
        switch (params->action) {
        case IEEE80211_AMPDU_RX_START:
@@ -5929,8 +5928,25 @@ static int ath12k_mac_op_ampdu_action(struct ieee80211_hw *hw,
                break;
        }
 
+       return ret;
+}
+
+static int ath12k_mac_op_ampdu_action(struct ieee80211_hw *hw,
+                                     struct ieee80211_vif *vif,
+                                     struct ieee80211_ampdu_params *params)
+{
+       struct ath12k *ar = hw->priv;
+       struct ath12k_vif *arvif = ath12k_vif_to_arvif(vif);
+       int ret = -EINVAL;
+
+       mutex_lock(&ar->conf_mutex);
+       ret = ath12k_mac_ampdu_action(arvif, params);
        mutex_unlock(&ar->conf_mutex);
 
+       if (ret)
+               ath12k_warn(ar->ab, "pdev idx %d unable to perform ampdu action %d ret %d\n",
+                           ar->pdev_idx, params->action, ret);
+
        return ret;
 }