Message ID | 20210305230337.23047-1-pradeepc@codeaurora.org |
---|---|
Headers | show |
Series | ath11k: add HE radiotap header support | expand |
> --- a/drivers/net/wireless/ath/ath11k/dp_tx.c > +++ b/drivers/net/wireless/ath/ath11k/dp_tx.c > @@ -417,9 +417,12 @@ static void ath11k_dp_tx_complete_msdu(struct > ath11k *ar, > struct sk_buff *msdu, > struct hal_tx_status *ts) > { > + struct ieee80211_tx_status status = { 0 }; > struct ath11k_base *ab = ar->ab; > struct ieee80211_tx_info *info; > struct ath11k_skb_cb *skb_cb; > + struct ath11k_peer *peer; > + struct ath11k_sta *arsta; > > if (WARN_ON_ONCE(ts->buf_rel_source != HAL_WBM_REL_SRC_MODULE_TQM)) { > /* Must not happen */ > @@ -483,13 +486,22 @@ static void ath11k_dp_tx_complete_msdu(struct > ath11k *ar, > ath11k_dp_tx_cache_peer_stats(ar, msdu, ts); > } > > - /* NOTE: Tx rate status reporting. Tx completion status does not have > - * necessary information (for example nss) to build the tx rate. > - * Might end up reporting it out-of-band from HTT stats. > - */ > - > - ieee80211_tx_status(ar->hw, msdu); > - > + spin_lock_bh(&ab->base_lock); > + peer = ath11k_peer_find_by_id(ab, ts->peer_id); > + if (peer) { > + arsta = (struct ath11k_sta *)peer->sta->drv_priv; > + status.sta = peer->sta; > + status.skb = msdu; > + status.info = info; > + status.rate = &arsta->last_txrate; > + } > + rcu_read_unlock(); > + if (peer) > + ieee80211_tx_status_ext(ar->hw, &status); > + else > + dev_kfree_skb_any(msdu); > + spin_unlock_bh(&ab->base_lock); Why ieee80211_tx_status_ext() kept under spin_lock? Thanks, Karthikeyan P
>> + spin_lock_bh(&ab->base_lock); >> + peer = ath11k_peer_find_by_id(ab, ts->peer_id); >> + if (peer) { >> + arsta = (struct ath11k_sta *)peer->sta->drv_priv; >> + status.sta = peer->sta; >> + status.skb = msdu; >> + status.info = info; >> + status.rate = &arsta->last_txrate; >> + } >> + rcu_read_unlock(); >> + if (peer) >> + ieee80211_tx_status_ext(ar->hw, &status); >> + else >> + dev_kfree_skb_any(msdu); >> + spin_unlock_bh(&ab->base_lock); > > Why ieee80211_tx_status_ext() kept under spin_lock? > > Thanks, > Karthikeyan P Thanks Karthikeyan for the review..Yes, spin lock could be avoided for ieee80211_tx_status_ext(). I will address this in next revision. Thanks pradeep