[PATCH v5 1/9] wifi: ath12k: Add HAL_PHYRX_GENERIC_U_SIG TLV parsing support

Karthikeyan Periyasamy quic_periyasa at quicinc.com
Wed Jan 29 01:12:51 PST 2025



On 1/29/2025 10:51 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 the necessary HAL_PHYRX_GENERIC_U_SIG 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 | 211 ++++++++++++++++++++++-
>>   drivers/net/wireless/ath/ath12k/hal_rx.h |  60 +++++++
>>   2 files changed, 270 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/net/wireless/ath/ath12k/dp_mon.c 
>> b/drivers/net/wireless/ath/ath12k/dp_mon.c
>> index 4e9a60181c06..4c8fe1b65fda 100644
>> --- a/drivers/net/wireless/ath/ath12k/dp_mon.c
>> +++ b/drivers/net/wireless/ath/ath12k/dp_mon.c
>> @@ -10,6 +10,9 @@
>>   #include "dp_tx.h"
>>   #include "peer.h"
>> +#define ATH12K_LE32_DEC_ENC(value, dec_bits, enc_bits)    \
>> +        u32_encode_bits(le32_get_bits(value, dec_bits), enc_bits)
>> +
>>   static void
>>   ath12k_dp_mon_rx_handle_ofdma_info(const struct 
>> hal_rx_ppdu_end_user_stats *ppdu_end_user,
>>                      struct hal_rx_user_status *rx_user_status)
>> @@ -562,6 +565,193 @@ static void ath12k_dp_mon_parse_he_sig_su(const 
>> struct hal_rx_he_sig_a_su_info *
>>       ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_SU;
>>   }
>> +static enum hal_rx_mon_status
>> +ath12k_dp_mon_hal_rx_parse_u_sig_cmn(const struct hal_mon_usig_cmn *cmn,
>> +                     struct hal_rx_mon_ppdu_info *ppdu_info)
>> +{
>> +    u32 common;
>> +    u8 bw;
>> +
>> +    bw = le32_get_bits(cmn->info0, HAL_RX_USIG_CMN_INFO0_BW);
>> +
>> +    common = __le32_to_cpu(ppdu_info->usig.common);
>> +    common |= IEEE80211_RADIOTAP_EHT_USIG_COMMON_PHY_VER_KNOWN |
>> +          IEEE80211_RADIOTAP_EHT_USIG_COMMON_BW_KNOWN |
>> +          IEEE80211_RADIOTAP_EHT_USIG_COMMON_UL_DL_KNOWN |
>> +          IEEE80211_RADIOTAP_EHT_USIG_COMMON_BSS_COLOR_KNOWN |
>> +          IEEE80211_RADIOTAP_EHT_USIG_COMMON_TXOP_KNOWN |
>> +          ATH12K_LE32_DEC_ENC(cmn->info0,
>> +                      HAL_RX_USIG_CMN_INFO0_PHY_VERSION,
>> +                      IEEE80211_RADIOTAP_EHT_USIG_COMMON_PHY_VER) |
>> +          u32_encode_bits(bw, IEEE80211_RADIOTAP_EHT_USIG_COMMON_BW) |
>> +          ATH12K_LE32_DEC_ENC(cmn->info0,
>> +                      HAL_RX_USIG_CMN_INFO0_UL_DL,
>> +                      IEEE80211_RADIOTAP_EHT_USIG_COMMON_UL_DL) |
>> +          ATH12K_LE32_DEC_ENC(cmn->info0,
>> +                      HAL_RX_USIG_CMN_INFO0_BSS_COLOR,
>> +                      IEEE80211_RADIOTAP_EHT_USIG_COMMON_BSS_COLOR) |
>> +          ATH12K_LE32_DEC_ENC(cmn->info0,
>> +                      HAL_RX_USIG_CMN_INFO0_TXOP,
>> +                      IEEE80211_RADIOTAP_EHT_USIG_COMMON_TXOP);
>> +    ppdu_info->usig.common = cpu_to_le32(common);
>> +
>> +    switch (bw) {
>> +    default:
>> +        fallthrough;
>> +    case HAL_EHT_BW_20:
>> +        ppdu_info->bw = HAL_RX_BW_20MHZ;
>> +        break;
>> +    case HAL_EHT_BW_40:
>> +        ppdu_info->bw = HAL_RX_BW_40MHZ;
>> +        break;
>> +    case HAL_EHT_BW_80:
>> +        ppdu_info->bw = HAL_RX_BW_80MHZ;
>> +        break;
>> +    case HAL_EHT_BW_160:
>> +        ppdu_info->bw = HAL_RX_BW_160MHZ;
>> +        break;
>> +    case HAL_EHT_BW_320_1:
>> +    case HAL_EHT_BW_320_2:
>> +        ppdu_info->bw = HAL_RX_BW_320MHZ;
>> +        break;
>> +    }
>> +
>> +    return HAL_TLV_STATUS_PPDU_NOT_DONE;
> 
> Return code for this function and the below ones dont seem
> to have a real use in the callers. May be these can be made
> void instead?
> 

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

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



More information about the ath12k mailing list