mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-29 01:51:39 +00:00
ath10k: replenish htc tx credits always
There's always at most 2 credits and it makes little sense to set the ATH10K_HTC_FLAG_NEED_CREDIT_UPDATE flag conditionally. This seems to fix some random issues with tx credit starvation on WLAN.RM.2.0-00073 I've been seeing. Note: this isn't related to wmi mgmt tx. Signed-off-by: Michal Kazior <michal.kazior@tieto.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
This commit is contained in:
parent
f42f8eb27e
commit
5d5c8ec9e4
1 changed files with 1 additions and 19 deletions
|
@ -86,21 +86,6 @@ static void ath10k_htc_notify_tx_completion(struct ath10k_htc_ep *ep,
|
||||||
ep->ep_ops.ep_tx_complete(ep->htc->ar, skb);
|
ep->ep_ops.ep_tx_complete(ep->htc->ar, skb);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* assumes tx_lock is held */
|
|
||||||
static bool ath10k_htc_ep_need_credit_update(struct ath10k_htc_ep *ep)
|
|
||||||
{
|
|
||||||
struct ath10k *ar = ep->htc->ar;
|
|
||||||
|
|
||||||
if (!ep->tx_credit_flow_enabled)
|
|
||||||
return false;
|
|
||||||
if (ep->tx_credits >= ep->tx_credits_per_max_message)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
ath10k_dbg(ar, ATH10K_DBG_HTC, "HTC: endpoint %d needs credit update\n",
|
|
||||||
ep->eid);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void ath10k_htc_prepare_tx_skb(struct ath10k_htc_ep *ep,
|
static void ath10k_htc_prepare_tx_skb(struct ath10k_htc_ep *ep,
|
||||||
struct sk_buff *skb)
|
struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
|
@ -111,13 +96,10 @@ static void ath10k_htc_prepare_tx_skb(struct ath10k_htc_ep *ep,
|
||||||
hdr->eid = ep->eid;
|
hdr->eid = ep->eid;
|
||||||
hdr->len = __cpu_to_le16(skb->len - sizeof(*hdr));
|
hdr->len = __cpu_to_le16(skb->len - sizeof(*hdr));
|
||||||
hdr->flags = 0;
|
hdr->flags = 0;
|
||||||
|
hdr->flags |= ATH10K_HTC_FLAG_NEED_CREDIT_UPDATE;
|
||||||
|
|
||||||
spin_lock_bh(&ep->htc->tx_lock);
|
spin_lock_bh(&ep->htc->tx_lock);
|
||||||
hdr->seq_no = ep->seq_no++;
|
hdr->seq_no = ep->seq_no++;
|
||||||
|
|
||||||
if (ath10k_htc_ep_need_credit_update(ep))
|
|
||||||
hdr->flags |= ATH10K_HTC_FLAG_NEED_CREDIT_UPDATE;
|
|
||||||
|
|
||||||
spin_unlock_bh(&ep->htc->tx_lock);
|
spin_unlock_bh(&ep->htc->tx_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue