Message ID | 20241122173432.2064858-1-quic_tamizhr@quicinc.com |
---|---|
State | New |
Headers | show |
Series | wifi: ath12k: Report proper tx completion status to mac80211 | expand |
On 11/22/2024 9:34 AM, Tamizh Chelvam Raja wrote: > From: Vinith Kumar R <quic_vinithku@quicinc.com> > > Currently Tx completion for few exception packets are received from > firmware and the tx status updated to mac80211. The tx status values of > HAL_WBM_REL_HTT_TX_COMP_STATUS_DROP and HAL_WBM_REL_HTT_TX_COMP_STATUS_TTL > are considered as tx failure and reported as tx failure to mac80211. > But these failure status is due to internal firmware tx drop and these > packets were not tried to transmit in the air. > In case of mesh this invalid tx status report might trigger mpath broken > issue due to increase in mpath fail average. > So do not report these tx status as tx failure instead free the skb > by calling ieee80211_free_txskb(), and that will be accounted as dropped > frame. > > Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1 > > Signed-off-by: Vinith Kumar R <quic_vinithku@quicinc.com> > Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com> Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
diff --git a/drivers/net/wireless/ath/ath12k/dp_tx.c b/drivers/net/wireless/ath/ath12k/dp_tx.c index a8d341a6df01..f8974ef25952 100644 --- a/drivers/net/wireless/ath/ath12k/dp_tx.c +++ b/drivers/net/wireless/ath/ath12k/dp_tx.c @@ -558,13 +558,13 @@ ath12k_dp_tx_process_htt_tx_complete(struct ath12k_base *ab, switch (wbm_status) { case HAL_WBM_REL_HTT_TX_COMP_STATUS_OK: - case HAL_WBM_REL_HTT_TX_COMP_STATUS_DROP: - case HAL_WBM_REL_HTT_TX_COMP_STATUS_TTL: ts.acked = (wbm_status == HAL_WBM_REL_HTT_TX_COMP_STATUS_OK); ts.ack_rssi = le32_get_bits(status_desc->info2, HTT_TX_WBM_COMP_INFO2_ACK_RSSI); ath12k_dp_tx_htt_tx_complete_buf(ab, msdu, tx_ring, &ts); break; + case HAL_WBM_REL_HTT_TX_COMP_STATUS_DROP: + case HAL_WBM_REL_HTT_TX_COMP_STATUS_TTL: case HAL_WBM_REL_HTT_TX_COMP_STATUS_REINJ: case HAL_WBM_REL_HTT_TX_COMP_STATUS_INSPECT: ath12k_dp_tx_free_txbuf(ab, msdu, mac_id, tx_ring);