[PATCH v5 3/9] wifi: ath12k: Add HAL_RX_PPDU_START_USER_INFO TLV parsing support

Karthikeyan Periyasamy quic_periyasa at quicinc.com
Wed Jan 29 01:09:35 PST 2025



On 1/29/2025 11:05 AM, Vasanthakumar Thiagarajan wrote:
> 
> 
> On 1/27/2025 4:17 PM, Karthikeyan Periyasamy wrote:
>> Currently, monitor is not enabled. However, in the future, the monitor
>> will be enabled. Therefore, add necessary HAL_RX_PPDU_START_USER_INFO TLV
>> parsing support in monitor Rx path, which help to populate the EHT 
>> radiotap
>> data.
>>
>> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1
>> Tested-on: WCN7850 hw2.0 PCI 
>> WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
>>
>> Co-developed-by: P Praneesh <quic_ppranees at quicinc.com>
>> Signed-off-by: P Praneesh <quic_ppranees at quicinc.com>
>> Signed-off-by: Karthikeyan Periyasamy <quic_periyasa at quicinc.com>
>> ---
>>   drivers/net/wireless/ath/ath12k/dp_mon.c  | 309 +++++++++++++++++++++-
>>   drivers/net/wireless/ath/ath12k/hal_rx.h  | 291 +++++++++++++++++---
>>   drivers/net/wireless/ath/ath12k/rx_desc.h |   9 -
>>   3 files changed, 553 insertions(+), 56 deletions(-)
>>

...

>> +
>> +    rtap_ru_size = hal_rx_mon_hal_ru_size_to_ath12k_ru_size(ru_size);
>> +    if (rtap_ru_size != ATH12K_EHT_RU_INVALID) {
>> +        u32 known, data;
>> +
>> +        known = __le32_to_cpu(eht->known);
>> +        known |= IEEE80211_RADIOTAP_EHT_KNOWN_RU_MRU_SIZE_OM;
>> +        eht->known = cpu_to_le32(known);
>> +
>> +        data = __le32_to_cpu(eht->data[1]);
>> +        data |=    u32_encode_bits(rtap_ru_size,
>> +                    IEEE80211_RADIOTAP_EHT_DATA1_RU_SIZE);
>> +        eht->data[1] = cpu_to_le32(data);
>> +    }
>> +
>> +    if (ru_index != HAL_EHT_RU_INVALID) {
>> +        u32 known, data;
>> +
>> +        known = __le32_to_cpu(eht->known);
>> +        known |= IEEE80211_RADIOTAP_EHT_KNOWN_RU_MRU_INDEX_OM;
>> +        eht->known = cpu_to_le32(known);
>> +
>> +        data = __le32_to_cpu(eht->data[1]);
>> +        data |=    u32_encode_bits(rtap_ru_size,
>> +                    IEEE80211_RADIOTAP_EHT_DATA1_RU_INDEX);
>> +        eht->data[1] = cpu_to_le32(data);
>> +    }
>> +
>> +    if (mon_rx_user_status && ru_index != HAL_EHT_RU_INVALID &&
>> +        rtap_ru_size != ATH12K_EHT_RU_INVALID) {
>> +        mon_rx_user_status->ul_ofdma_ru_start_index = ru_index;
>> +        mon_rx_user_status->ul_ofdma_ru_size = rtap_ru_size;
>> +
>> +        ru_width = hal_rx_ul_ofdma_ru_size_to_width(rtap_ru_size);
>> +
>> +        mon_rx_user_status->ul_ofdma_ru_width = ru_width;
>> +        mon_rx_user_status->ofdma_info_valid = 1;
>> +    }
>> +
>> +    return HAL_TLV_STATUS_PPDU_NOT_DONE;
> 
> Same comment on the need for the return value in this patch and similar 
> changes in this series.
> 

sure, will fix in the next version of this patch.

-- 
Karthikeyan Periyasamy
--
கார்த்திகேயன் பெரியசாமி



More information about the ath12k mailing list