Skip to content

Commit

Permalink
ath11k: avoid unnecessary BH disable lock in STA kickout event
Browse files Browse the repository at this point in the history
In STA kickout event processing, the peer object is protected
under spin lock BH. Release this lock after picking up the vdev_id
from the peer object instead after ieee80211_report_low_ack().
This will minimize the lock hold period which will improve
performance since base_lock is used across the data path.
This was found in code review.

Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.5.0.1-00729-QCAHKSWPL_SILICONZ-3 v2

Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/1636560388-24955-1-git-send-email-quic_periyasa@quicinc.com
  • Loading branch information
Karthikeyan Periyasamy authored and Kalle Valo committed Nov 15, 2021
1 parent 4ea0344 commit 4c37574
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions drivers/net/wireless/ath/ath11k/wmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -6399,6 +6399,7 @@ static void ath11k_peer_sta_kickout_event(struct ath11k_base *ab, struct sk_buff
struct ieee80211_sta *sta;
struct ath11k_peer *peer;
struct ath11k *ar;
u32 vdev_id;

if (ath11k_pull_peer_sta_kickout_ev(ab, skb, &arg) != 0) {
ath11k_warn(ab, "failed to extract peer sta kickout event");
Expand All @@ -6414,10 +6415,15 @@ static void ath11k_peer_sta_kickout_event(struct ath11k_base *ab, struct sk_buff
if (!peer) {
ath11k_warn(ab, "peer not found %pM\n",
arg.mac_addr);
spin_unlock_bh(&ab->base_lock);
goto exit;
}

ar = ath11k_mac_get_ar_by_vdev_id(ab, peer->vdev_id);
vdev_id = peer->vdev_id;

spin_unlock_bh(&ab->base_lock);

ar = ath11k_mac_get_ar_by_vdev_id(ab, vdev_id);
if (!ar) {
ath11k_warn(ab, "invalid vdev id in peer sta kickout ev %d",
peer->vdev_id);
Expand All @@ -6438,7 +6444,6 @@ static void ath11k_peer_sta_kickout_event(struct ath11k_base *ab, struct sk_buff
ieee80211_report_low_ack(sta, 10);

exit:
spin_unlock_bh(&ab->base_lock);
rcu_read_unlock();
}

Expand Down

0 comments on commit 4c37574

Please sign in to comment.