[PATCH] wifi: ath12k: drop failed transmitted frames from metric calculation.

Karthikeyan Kathirvel quic_kathirve at quicinc.com
Mon Apr 22 09:57:45 PDT 2024



On 4/22/2024 1:35 PM, Nicolas Escande wrote:
> 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.
Yes, there is an internal patch is in pipeline, that will take care of 
addressing all dev_kfree_skb_any() to ieee80211_free_txskb() in 
ath12k_dp_tx_complete_msdu(), this patch doesn't take care of that.
>> +		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



More information about the ath12k mailing list