On Fri Apr 19, 2024 at 7:03 PM CEST, Karthikeyan Kathirvel wrote: [...] > diff --git a/drivers/net/wireless/ath/ath12k/dp_tx.c b/drivers/net/wireless/ath/ath12k/dp_tx.c > index 9b6d7d72f57c..164431b7eb4e 100644 > --- a/drivers/net/wireless/ath/ath12k/dp_tx.c > +++ b/drivers/net/wireless/ath/ath12k/dp_tx.c > @@ -481,18 +481,36 @@ static void ath12k_dp_tx_complete_msdu(struct ath12k *ar, > /* skip tx rate update from ieee80211_status*/ > info->status.rates[0].idx = -1; > > - if (ts->status == HAL_WBM_TQM_REL_REASON_FRAME_ACKED && > - !(info->flags & IEEE80211_TX_CTL_NO_ACK)) { > - info->flags |= IEEE80211_TX_STAT_ACK; > - info->status.ack_signal = ATH12K_DEFAULT_NOISE_FLOOR + > - ts->ack_rssi; > - info->status.flags = IEEE80211_TX_STATUS_ACK_SIGNAL_VALID; > + switch (ts->status) { > + case HAL_WBM_TQM_REL_REASON_FRAME_ACKED: > + if (!(info->flags & IEEE80211_TX_CTL_NO_ACK)) { > + info->flags |= IEEE80211_TX_STAT_ACK; > + info->status.ack_signal = ATH12K_DEFAULT_NOISE_FLOOR + > + ts->ack_rssi; > + info->status.flags = IEEE80211_TX_STATUS_ACK_SIGNAL_VALID; > + } > + break; > + case HAL_WBM_TQM_REL_REASON_CMD_REMOVE_TX: > + if (info->flags & IEEE80211_TX_CTL_NO_ACK) { > + info->flags |= IEEE80211_TX_STAT_NOACK_TRANSMITTED; > + break; > + } > + fallthrough; > + case HAL_WBM_TQM_REL_REASON_CMD_REMOVE_MPDU: > + case HAL_WBM_TQM_REL_REASON_DROP_THRESHOLD: > + case HAL_WBM_TQM_REL_REASON_CMD_REMOVE_AGED_FRAMES: > + /* The failure status is due to internal firmware tx failure > + * hence drop the frame do not update the status of frame to > + * the upper layer > + */ > + dev_kfree_skb_any(msdu); Shouldn't this be ieee80211_free_txskb ? I'm not clear when to use which. > + goto exit; > + default: > + ath12k_dbg(ab, ATH12K_DBG_DP_TX, "tx frame is not acked status %d\n", > + ts->status); > + break; > } > > - if (ts->status == HAL_WBM_TQM_REL_REASON_CMD_REMOVE_TX && > - (info->flags & IEEE80211_TX_CTL_NO_ACK)) > - info->flags |= IEEE80211_TX_STAT_NOACK_TRANSMITTED; > - > /* 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. Thanks