Search Linux Wireless

Re: [PATCH ath12k-ng 1/8] wifi: ath12k: Remove non-compact TLV support from QCN

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 9/9/2025 8:55 AM, Baochen Qiang wrote:
> 
> 
> On 9/9/2025 12:27 AM, Ripan Deuri wrote:
>> From: Pavankumar Nandeshwar <quic_pnandesh@xxxxxxxxxxx>
>>
>> Set compact TLV ops as the default ops by registering them in
>> hw_params by default for QCN, and remove non-compact TLV ops and the
> 
> If you are meaning hal_rx_qcn9274_compact_ops it is not registered in hw_params but in
> ab->hal_rx_ops instead.

This should be hal_rx_ops here, though it is later moved to hw_params.
I’ll address this in the next revision.

> 
>> corresponding hal APIs for QCN.
>>
>> Please note that compact TLVs have been supported by the firmware since
>> the beginning of Wi-Fi 7, so backward compatibility has been maintained.
>>
>> These changes are specific to QCN as WCN only support non-compact TLVs.
>>
>> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
>> Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
>>
>> Signed-off-by: Pavankumar Nandeshwar <quic_pnandesh@xxxxxxxxxxx>
>> Signed-off-by: Ripan Deuri <quic_rdeuri@xxxxxxxxxxx>
>> ---
>>  drivers/net/wireless/ath/ath12k/dp.c          |  20 +-
>>  drivers/net/wireless/ath/ath12k/dp.h          |   1 -
>>  drivers/net/wireless/ath/ath12k/hal.c         | 339 +-----------------
>>  drivers/net/wireless/ath/ath12k/hal.h         |   2 -
>>  drivers/net/wireless/ath/ath12k/wifi7/dp_rx.c |  16 +-
>>  .../wireless/ath/ath12k/wifi7/hal_rx_desc.h   |   7 -
>>  drivers/net/wireless/ath/ath12k/wifi7/pci.c   |   2 +-
>>  7 files changed, 11 insertions(+), 376 deletions(-)
>>
>> diff --git a/drivers/net/wireless/ath/ath12k/dp.c b/drivers/net/wireless/ath/ath12k/dp.c
>> index 8909415df2e2..83d41154c115 100644
>> --- a/drivers/net/wireless/ath/ath12k/dp.c
>> +++ b/drivers/net/wireless/ath/ath12k/dp.c
>> @@ -895,27 +895,9 @@ void ath12k_dp_pdev_pre_alloc(struct ath12k *ar)
>>  	/* TODO: Add any RXDMA setup required per pdev */
>>  }
>>  
>> -bool ath12k_dp_wmask_compaction_rx_tlv_supported(struct ath12k_base *ab)
>> -{
>> -	if (test_bit(WMI_TLV_SERVICE_WMSK_COMPACTION_RX_TLVS, ab->wmi_ab.svc_map) &&
>> -	    ab->hw_params->hal_ops->rxdma_ring_wmask_rx_mpdu_start &&
>> -	    ab->hw_params->hal_ops->rxdma_ring_wmask_rx_msdu_end &&
>> -	    ab->hw_params->hal_ops->get_hal_rx_compact_ops) {
>> -		return true;
>> -	}
>> -	return false;
>> -}
>> -
>>  void ath12k_dp_hal_rx_desc_init(struct ath12k_base *ab)
>>  {
>> -	if (ath12k_dp_wmask_compaction_rx_tlv_supported(ab)) {
>> -		/* RX TLVS compaction is supported, hence change the hal_rx_ops
>> -		 * to compact hal_rx_ops.
>> -		 */
>> -		ab->hal_rx_ops = ab->hw_params->hal_ops->get_hal_rx_compact_ops();
>> -	}
>> -	ab->hal.hal_desc_sz =
>> -		ab->hal_rx_ops->rx_desc_get_desc_size();
>> +	ab->hal.hal_desc_sz = ab->hal_rx_ops->rx_desc_get_desc_size();
>>  }
>>  
>>  int ath12k_dp_pdev_alloc(struct ath12k_base *ab)
>> diff --git a/drivers/net/wireless/ath/ath12k/dp.h b/drivers/net/wireless/ath/ath12k/dp.h
>> index 18a3287945b7..71f7c4858176 100644
>> --- a/drivers/net/wireless/ath/ath12k/dp.h
>> +++ b/drivers/net/wireless/ath/ath12k/dp.h
>> @@ -457,6 +457,5 @@ struct ath12k_rx_desc_info *ath12k_dp_get_rx_desc(struct ath12k_base *ab,
>>  						  u32 cookie);
>>  struct ath12k_tx_desc_info *ath12k_dp_get_tx_desc(struct ath12k_base *ab,
>>  						  u32 desc_id);
>> -bool ath12k_dp_wmask_compaction_rx_tlv_supported(struct ath12k_base *ab);
>>  void ath12k_dp_hal_rx_desc_init(struct ath12k_base *ab);
>>  #endif
>> diff --git a/drivers/net/wireless/ath/ath12k/hal.c b/drivers/net/wireless/ath/ath12k/hal.c
>> index 144c26586b79..980f17791c1a 100644
>> --- a/drivers/net/wireless/ath/ath12k/hal.c
>> +++ b/drivers/net/wireless/ath/ath12k/hal.c
>> @@ -294,230 +294,6 @@ static unsigned int ath12k_hal_reo1_ring_misc_offset(struct ath12k_base *ab)
>>  	return HAL_REO1_RING_MISC(ab) - HAL_REO1_RING_BASE_LSB(ab);
>>  }
>>  
>> -static bool ath12k_hw_qcn9274_rx_desc_get_first_msdu(struct hal_rx_desc *desc)
>> -{
>> -	return !!le16_get_bits(desc->u.qcn9274.msdu_end.info5,
>> -			       RX_MSDU_END_INFO5_FIRST_MSDU);
>> -}
>> -
>> -static bool ath12k_hw_qcn9274_rx_desc_get_last_msdu(struct hal_rx_desc *desc)
>> -{
>> -	return !!le16_get_bits(desc->u.qcn9274.msdu_end.info5,
>> -			       RX_MSDU_END_INFO5_LAST_MSDU);
>> -}
>> -
>> -static u8 ath12k_hw_qcn9274_rx_desc_get_l3_pad_bytes(struct hal_rx_desc *desc)
>> -{
>> -	return le16_get_bits(desc->u.qcn9274.msdu_end.info5,
>> -			     RX_MSDU_END_INFO5_L3_HDR_PADDING);
>> -}
>> -
>> -static bool ath12k_hw_qcn9274_rx_desc_encrypt_valid(struct hal_rx_desc *desc)
>> -{
>> -	return !!le32_get_bits(desc->u.qcn9274.mpdu_start.info4,
>> -			       RX_MPDU_START_INFO4_ENCRYPT_INFO_VALID);
>> -}
>> -
>> -static u32 ath12k_hw_qcn9274_rx_desc_get_encrypt_type(struct hal_rx_desc *desc)
>> -{
>> -	return le32_get_bits(desc->u.qcn9274.mpdu_start.info2,
>> -			     RX_MPDU_START_INFO2_ENC_TYPE);
>> -}
>> -
>> -static u8 ath12k_hw_qcn9274_rx_desc_get_decap_type(struct hal_rx_desc *desc)
>> -{
>> -	return le32_get_bits(desc->u.qcn9274.msdu_end.info11,
>> -			     RX_MSDU_END_INFO11_DECAP_FORMAT);
>> -}
>> -
>> -static u8 ath12k_hw_qcn9274_rx_desc_get_mesh_ctl(struct hal_rx_desc *desc)
>> -{
>> -	return le32_get_bits(desc->u.qcn9274.msdu_end.info11,
>> -			     RX_MSDU_END_INFO11_MESH_CTRL_PRESENT);
>> -}
>> -
>> -static bool ath12k_hw_qcn9274_rx_desc_get_mpdu_seq_ctl_vld(struct hal_rx_desc *desc)
>> -{
>> -	return !!le32_get_bits(desc->u.qcn9274.mpdu_start.info4,
>> -			       RX_MPDU_START_INFO4_MPDU_SEQ_CTRL_VALID);
>> -}
>> -
>> -static bool ath12k_hw_qcn9274_rx_desc_get_mpdu_fc_valid(struct hal_rx_desc *desc)
>> -{
>> -	return !!le32_get_bits(desc->u.qcn9274.mpdu_start.info4,
>> -			       RX_MPDU_START_INFO4_MPDU_FCTRL_VALID);
>> -}
>> -
>> -static u16 ath12k_hw_qcn9274_rx_desc_get_mpdu_start_seq_no(struct hal_rx_desc *desc)
>> -{
>> -	return le32_get_bits(desc->u.qcn9274.mpdu_start.info4,
>> -			     RX_MPDU_START_INFO4_MPDU_SEQ_NUM);
>> -}
>> -
>> -static u16 ath12k_hw_qcn9274_rx_desc_get_msdu_len(struct hal_rx_desc *desc)
>> -{
>> -	return le32_get_bits(desc->u.qcn9274.msdu_end.info10,
>> -			     RX_MSDU_END_INFO10_MSDU_LENGTH);
>> -}
>> -
>> -static u8 ath12k_hw_qcn9274_rx_desc_get_msdu_sgi(struct hal_rx_desc *desc)
>> -{
>> -	return le32_get_bits(desc->u.qcn9274.msdu_end.info12,
>> -			     RX_MSDU_END_INFO12_SGI);
>> -}
>> -
>> -static u8 ath12k_hw_qcn9274_rx_desc_get_msdu_rate_mcs(struct hal_rx_desc *desc)
>> -{
>> -	return le32_get_bits(desc->u.qcn9274.msdu_end.info12,
>> -			     RX_MSDU_END_INFO12_RATE_MCS);
>> -}
>> -
>> -static u8 ath12k_hw_qcn9274_rx_desc_get_msdu_rx_bw(struct hal_rx_desc *desc)
>> -{
>> -	return le32_get_bits(desc->u.qcn9274.msdu_end.info12,
>> -			     RX_MSDU_END_INFO12_RECV_BW);
>> -}
>> -
>> -static u32 ath12k_hw_qcn9274_rx_desc_get_msdu_freq(struct hal_rx_desc *desc)
>> -{
>> -	return __le32_to_cpu(desc->u.qcn9274.msdu_end.phy_meta_data);
>> -}
>> -
>> -static u8 ath12k_hw_qcn9274_rx_desc_get_msdu_pkt_type(struct hal_rx_desc *desc)
>> -{
>> -	return le32_get_bits(desc->u.qcn9274.msdu_end.info12,
>> -			     RX_MSDU_END_INFO12_PKT_TYPE);
>> -}
>> -
>> -static u8 ath12k_hw_qcn9274_rx_desc_get_msdu_nss(struct hal_rx_desc *desc)
>> -{
>> -	return le32_get_bits(desc->u.qcn9274.msdu_end.info12,
>> -			     RX_MSDU_END_INFO12_MIMO_SS_BITMAP);
>> -}
>> -
>> -static u8 ath12k_hw_qcn9274_rx_desc_get_mpdu_tid(struct hal_rx_desc *desc)
>> -{
>> -	return le16_get_bits(desc->u.qcn9274.msdu_end.info5,
>> -			    RX_MSDU_END_INFO5_TID);
>> -}
>> -
>> -static u16 ath12k_hw_qcn9274_rx_desc_get_mpdu_peer_id(struct hal_rx_desc *desc)
>> -{
>> -	return __le16_to_cpu(desc->u.qcn9274.mpdu_start.sw_peer_id);
>> -}
>> -
>> -static void ath12k_hw_qcn9274_rx_desc_copy_end_tlv(struct hal_rx_desc *fdesc,
>> -						   struct hal_rx_desc *ldesc)
>> -{
>> -	memcpy(&fdesc->u.qcn9274.msdu_end, &ldesc->u.qcn9274.msdu_end,
>> -	       sizeof(struct rx_msdu_end_qcn9274));
>> -}
>> -
>> -static u32 ath12k_hw_qcn9274_rx_desc_get_mpdu_ppdu_id(struct hal_rx_desc *desc)
>> -{
>> -	return __le16_to_cpu(desc->u.qcn9274.mpdu_start.phy_ppdu_id);
>> -}
>> -
>> -static void ath12k_hw_qcn9274_rx_desc_set_msdu_len(struct hal_rx_desc *desc, u16 len)
>> -{
>> -	u32 info = __le32_to_cpu(desc->u.qcn9274.msdu_end.info10);
>> -
>> -	info &= ~RX_MSDU_END_INFO10_MSDU_LENGTH;
>> -	info |= u32_encode_bits(len, RX_MSDU_END_INFO10_MSDU_LENGTH);
>> -
>> -	desc->u.qcn9274.msdu_end.info10 = __cpu_to_le32(info);
>> -}
>> -
>> -static u8 *ath12k_hw_qcn9274_rx_desc_get_msdu_payload(struct hal_rx_desc *desc)
>> -{
>> -	return &desc->u.qcn9274.msdu_payload[0];
>> -}
>> -
>> -static u32 ath12k_hw_qcn9274_rx_desc_get_mpdu_start_offset(void)
>> -{
>> -	return offsetof(struct hal_rx_desc_qcn9274, mpdu_start);
>> -}
>> -
>> -static u32 ath12k_hw_qcn9274_rx_desc_get_msdu_end_offset(void)
>> -{
>> -	return offsetof(struct hal_rx_desc_qcn9274, msdu_end);
>> -}
>> -
>> -static bool ath12k_hw_qcn9274_rx_desc_mac_addr2_valid(struct hal_rx_desc *desc)
>> -{
>> -	return __le32_to_cpu(desc->u.qcn9274.mpdu_start.info4) &
>> -	       RX_MPDU_START_INFO4_MAC_ADDR2_VALID;
>> -}
>> -
>> -static u8 *ath12k_hw_qcn9274_rx_desc_mpdu_start_addr2(struct hal_rx_desc *desc)
>> -{
>> -	return desc->u.qcn9274.mpdu_start.addr2;
>> -}
>> -
>> -static bool ath12k_hw_qcn9274_rx_desc_is_da_mcbc(struct hal_rx_desc *desc)
>> -{
>> -	return __le16_to_cpu(desc->u.qcn9274.msdu_end.info5) &
>> -	       RX_MSDU_END_INFO5_DA_IS_MCBC;
>> -}
>> -
>> -static void ath12k_hw_qcn9274_rx_desc_get_dot11_hdr(struct hal_rx_desc *desc,
>> -						    struct ieee80211_hdr *hdr)
>> -{
>> -	hdr->frame_control = desc->u.qcn9274.mpdu_start.frame_ctrl;
>> -	hdr->duration_id = desc->u.qcn9274.mpdu_start.duration;
>> -	ether_addr_copy(hdr->addr1, desc->u.qcn9274.mpdu_start.addr1);
>> -	ether_addr_copy(hdr->addr2, desc->u.qcn9274.mpdu_start.addr2);
>> -	ether_addr_copy(hdr->addr3, desc->u.qcn9274.mpdu_start.addr3);
>> -	if (__le32_to_cpu(desc->u.qcn9274.mpdu_start.info4) &
>> -			RX_MPDU_START_INFO4_MAC_ADDR4_VALID) {
>> -		ether_addr_copy(hdr->addr4, desc->u.qcn9274.mpdu_start.addr4);
>> -	}
>> -	hdr->seq_ctrl = desc->u.qcn9274.mpdu_start.seq_ctrl;
>> -}
>> -
>> -static void ath12k_hw_qcn9274_rx_desc_get_crypto_hdr(struct hal_rx_desc *desc,
>> -						     u8 *crypto_hdr,
>> -						     enum hal_encrypt_type enctype)
>> -{
>> -	unsigned int key_id;
>> -
>> -	switch (enctype) {
>> -	case HAL_ENCRYPT_TYPE_OPEN:
>> -		return;
>> -	case HAL_ENCRYPT_TYPE_TKIP_NO_MIC:
>> -	case HAL_ENCRYPT_TYPE_TKIP_MIC:
>> -		crypto_hdr[0] =
>> -			HAL_RX_MPDU_INFO_PN_GET_BYTE2(desc->u.qcn9274.mpdu_start.pn[0]);
>> -		crypto_hdr[1] = 0;
>> -		crypto_hdr[2] =
>> -			HAL_RX_MPDU_INFO_PN_GET_BYTE1(desc->u.qcn9274.mpdu_start.pn[0]);
>> -		break;
>> -	case HAL_ENCRYPT_TYPE_CCMP_128:
>> -	case HAL_ENCRYPT_TYPE_CCMP_256:
>> -	case HAL_ENCRYPT_TYPE_GCMP_128:
>> -	case HAL_ENCRYPT_TYPE_AES_GCMP_256:
>> -		crypto_hdr[0] =
>> -			HAL_RX_MPDU_INFO_PN_GET_BYTE1(desc->u.qcn9274.mpdu_start.pn[0]);
>> -		crypto_hdr[1] =
>> -			HAL_RX_MPDU_INFO_PN_GET_BYTE2(desc->u.qcn9274.mpdu_start.pn[0]);
>> -		crypto_hdr[2] = 0;
>> -		break;
>> -	case HAL_ENCRYPT_TYPE_WEP_40:
>> -	case HAL_ENCRYPT_TYPE_WEP_104:
>> -	case HAL_ENCRYPT_TYPE_WEP_128:
>> -	case HAL_ENCRYPT_TYPE_WAPI_GCM_SM4:
>> -	case HAL_ENCRYPT_TYPE_WAPI:
>> -		return;
>> -	}
>> -	key_id = le32_get_bits(desc->u.qcn9274.mpdu_start.info5,
>> -			       RX_MPDU_START_INFO5_KEY_ID);
>> -	crypto_hdr[3] = 0x20 | (key_id << 6);
>> -	crypto_hdr[4] = HAL_RX_MPDU_INFO_PN_GET_BYTE3(desc->u.qcn9274.mpdu_start.pn[0]);
>> -	crypto_hdr[5] = HAL_RX_MPDU_INFO_PN_GET_BYTE4(desc->u.qcn9274.mpdu_start.pn[0]);
>> -	crypto_hdr[6] = HAL_RX_MPDU_INFO_PN_GET_BYTE1(desc->u.qcn9274.mpdu_start.pn[1]);
>> -	crypto_hdr[7] = HAL_RX_MPDU_INFO_PN_GET_BYTE2(desc->u.qcn9274.mpdu_start.pn[1]);
>> -}
>> -
>>  static int ath12k_hal_srng_create_config_qcn9274(struct ath12k_base *ab)
>>  {
>>  	struct ath12k_hal *hal = &ab->hal;
>> @@ -638,116 +414,6 @@ static u32 ath12k_hal_qcn9274_rx_msdu_end_wmask_get(void)
>>  	return QCN9274_MSDU_END_WMASK;
>>  }
>>  
>> -static const struct hal_rx_ops *ath12k_hal_qcn9274_get_hal_rx_compact_ops(void)
>> -{
>> -	return &hal_rx_qcn9274_compact_ops;
>> -}
>> -
>> -static bool ath12k_hw_qcn9274_dp_rx_h_msdu_done(struct hal_rx_desc *desc)
>> -{
>> -	return !!le32_get_bits(desc->u.qcn9274.msdu_end.info14,
>> -			       RX_MSDU_END_INFO14_MSDU_DONE);
>> -}
>> -
>> -static bool ath12k_hw_qcn9274_dp_rx_h_l4_cksum_fail(struct hal_rx_desc *desc)
>> -{
>> -	return !!le32_get_bits(desc->u.qcn9274.msdu_end.info13,
>> -			       RX_MSDU_END_INFO13_TCP_UDP_CKSUM_FAIL);
>> -}
>> -
>> -static bool ath12k_hw_qcn9274_dp_rx_h_ip_cksum_fail(struct hal_rx_desc *desc)
>> -{
>> -	return !!le32_get_bits(desc->u.qcn9274.msdu_end.info13,
>> -			       RX_MSDU_END_INFO13_IP_CKSUM_FAIL);
>> -}
>> -
>> -static bool ath12k_hw_qcn9274_dp_rx_h_is_decrypted(struct hal_rx_desc *desc)
>> -{
>> -	return (le32_get_bits(desc->u.qcn9274.msdu_end.info14,
>> -			      RX_MSDU_END_INFO14_DECRYPT_STATUS_CODE) ==
>> -			      RX_DESC_DECRYPT_STATUS_CODE_OK);
>> -}
>> -
>> -static u32 ath12k_hw_qcn9274_dp_rx_h_mpdu_err(struct hal_rx_desc *desc)
>> -{
>> -	u32 info = __le32_to_cpu(desc->u.qcn9274.msdu_end.info13);
>> -	u32 errmap = 0;
>> -
>> -	if (info & RX_MSDU_END_INFO13_FCS_ERR)
>> -		errmap |= HAL_RX_MPDU_ERR_FCS;
>> -
>> -	if (info & RX_MSDU_END_INFO13_DECRYPT_ERR)
>> -		errmap |= HAL_RX_MPDU_ERR_DECRYPT;
>> -
>> -	if (info & RX_MSDU_END_INFO13_TKIP_MIC_ERR)
>> -		errmap |= HAL_RX_MPDU_ERR_TKIP_MIC;
>> -
>> -	if (info & RX_MSDU_END_INFO13_A_MSDU_ERROR)
>> -		errmap |= HAL_RX_MPDU_ERR_AMSDU_ERR;
>> -
>> -	if (info & RX_MSDU_END_INFO13_OVERFLOW_ERR)
>> -		errmap |= HAL_RX_MPDU_ERR_OVERFLOW;
>> -
>> -	if (info & RX_MSDU_END_INFO13_MSDU_LEN_ERR)
>> -		errmap |= HAL_RX_MPDU_ERR_MSDU_LEN;
>> -
>> -	if (info & RX_MSDU_END_INFO13_MPDU_LEN_ERR)
>> -		errmap |= HAL_RX_MPDU_ERR_MPDU_LEN;
>> -
>> -	return errmap;
>> -}
>> -
>> -static u32 ath12k_hw_qcn9274_get_rx_desc_size(void)
>> -{
>> -	return sizeof(struct hal_rx_desc_qcn9274);
>> -}
>> -
>> -static u8 ath12k_hw_qcn9274_rx_desc_get_msdu_src_link(struct hal_rx_desc *desc)
>> -{
>> -	return 0;
>> -}
>> -
>> -const struct hal_rx_ops hal_rx_qcn9274_ops = {
>> -	.rx_desc_get_first_msdu = ath12k_hw_qcn9274_rx_desc_get_first_msdu,
>> -	.rx_desc_get_last_msdu = ath12k_hw_qcn9274_rx_desc_get_last_msdu,
>> -	.rx_desc_get_l3_pad_bytes = ath12k_hw_qcn9274_rx_desc_get_l3_pad_bytes,
>> -	.rx_desc_encrypt_valid = ath12k_hw_qcn9274_rx_desc_encrypt_valid,
>> -	.rx_desc_get_encrypt_type = ath12k_hw_qcn9274_rx_desc_get_encrypt_type,
>> -	.rx_desc_get_decap_type = ath12k_hw_qcn9274_rx_desc_get_decap_type,
>> -	.rx_desc_get_mesh_ctl = ath12k_hw_qcn9274_rx_desc_get_mesh_ctl,
>> -	.rx_desc_get_mpdu_seq_ctl_vld = ath12k_hw_qcn9274_rx_desc_get_mpdu_seq_ctl_vld,
>> -	.rx_desc_get_mpdu_fc_valid = ath12k_hw_qcn9274_rx_desc_get_mpdu_fc_valid,
>> -	.rx_desc_get_mpdu_start_seq_no = ath12k_hw_qcn9274_rx_desc_get_mpdu_start_seq_no,
>> -	.rx_desc_get_msdu_len = ath12k_hw_qcn9274_rx_desc_get_msdu_len,
>> -	.rx_desc_get_msdu_sgi = ath12k_hw_qcn9274_rx_desc_get_msdu_sgi,
>> -	.rx_desc_get_msdu_rate_mcs = ath12k_hw_qcn9274_rx_desc_get_msdu_rate_mcs,
>> -	.rx_desc_get_msdu_rx_bw = ath12k_hw_qcn9274_rx_desc_get_msdu_rx_bw,
>> -	.rx_desc_get_msdu_freq = ath12k_hw_qcn9274_rx_desc_get_msdu_freq,
>> -	.rx_desc_get_msdu_pkt_type = ath12k_hw_qcn9274_rx_desc_get_msdu_pkt_type,
>> -	.rx_desc_get_msdu_nss = ath12k_hw_qcn9274_rx_desc_get_msdu_nss,
>> -	.rx_desc_get_mpdu_tid = ath12k_hw_qcn9274_rx_desc_get_mpdu_tid,
>> -	.rx_desc_get_mpdu_peer_id = ath12k_hw_qcn9274_rx_desc_get_mpdu_peer_id,
>> -	.rx_desc_copy_end_tlv = ath12k_hw_qcn9274_rx_desc_copy_end_tlv,
>> -	.rx_desc_get_mpdu_ppdu_id = ath12k_hw_qcn9274_rx_desc_get_mpdu_ppdu_id,
>> -	.rx_desc_set_msdu_len = ath12k_hw_qcn9274_rx_desc_set_msdu_len,
>> -	.rx_desc_get_msdu_payload = ath12k_hw_qcn9274_rx_desc_get_msdu_payload,
>> -	.rx_desc_get_mpdu_start_offset = ath12k_hw_qcn9274_rx_desc_get_mpdu_start_offset,
>> -	.rx_desc_get_msdu_end_offset = ath12k_hw_qcn9274_rx_desc_get_msdu_end_offset,
>> -	.rx_desc_mac_addr2_valid = ath12k_hw_qcn9274_rx_desc_mac_addr2_valid,
>> -	.rx_desc_mpdu_start_addr2 = ath12k_hw_qcn9274_rx_desc_mpdu_start_addr2,
>> -	.rx_desc_is_da_mcbc = ath12k_hw_qcn9274_rx_desc_is_da_mcbc,
>> -	.rx_desc_get_dot11_hdr = ath12k_hw_qcn9274_rx_desc_get_dot11_hdr,
>> -	.rx_desc_get_crypto_header = ath12k_hw_qcn9274_rx_desc_get_crypto_hdr,
>> -	.dp_rx_h_msdu_done = ath12k_hw_qcn9274_dp_rx_h_msdu_done,
>> -	.dp_rx_h_l4_cksum_fail = ath12k_hw_qcn9274_dp_rx_h_l4_cksum_fail,
>> -	.dp_rx_h_ip_cksum_fail = ath12k_hw_qcn9274_dp_rx_h_ip_cksum_fail,
>> -	.dp_rx_h_is_decrypted = ath12k_hw_qcn9274_dp_rx_h_is_decrypted,
>> -	.dp_rx_h_mpdu_err = ath12k_hw_qcn9274_dp_rx_h_mpdu_err,
>> -	.rx_desc_get_desc_size = ath12k_hw_qcn9274_get_rx_desc_size,
>> -	.rx_desc_get_msdu_src_link_id = ath12k_hw_qcn9274_rx_desc_get_msdu_src_link,
>> -};
>> -EXPORT_SYMBOL(hal_rx_qcn9274_ops);
>> -
>>  static bool ath12k_hw_qcn9274_compact_rx_desc_get_first_msdu(struct hal_rx_desc *desc)
>>  {
>>  	return !!le16_get_bits(desc->u.qcn9274_compact.msdu_end.info5,
>> @@ -786,7 +452,7 @@ static u8 ath12k_hw_qcn9274_compact_rx_desc_get_decap_type(struct hal_rx_desc *d
>>  
>>  static u8 ath12k_hw_qcn9274_compact_rx_desc_get_mesh_ctl(struct hal_rx_desc *desc)
>>  {
>> -	return le32_get_bits(desc->u.qcn9274.msdu_end.info11,
>> +	return le32_get_bits(desc->u.qcn9274_compact.msdu_end.info11,
>>  			     RX_MSDU_END_INFO11_MESH_CTRL_PRESENT);
>>  }
>>  
>> @@ -1086,13 +752,13 @@ const struct hal_rx_ops hal_rx_qcn9274_compact_ops = {
>>  	.rx_desc_get_msdu_src_link_id =
>>  		ath12k_hw_qcn9274_compact_rx_desc_get_msdu_src_link,
>>  };
>> +EXPORT_SYMBOL(hal_rx_qcn9274_compact_ops);
>>  
>>  const struct hal_ops hal_qcn9274_ops = {
>>  	.create_srng_config = ath12k_hal_srng_create_config_qcn9274,
>>  	.tcl_to_wbm_rbm_map = ath12k_hal_qcn9274_tcl_to_wbm_rbm_map,
>>  	.rxdma_ring_wmask_rx_mpdu_start = ath12k_hal_qcn9274_rx_mpdu_start_wmask_get,
>>  	.rxdma_ring_wmask_rx_msdu_end = ath12k_hal_qcn9274_rx_msdu_end_wmask_get,
>> -	.get_hal_rx_compact_ops = ath12k_hal_qcn9274_get_hal_rx_compact_ops,
>>  };
>>  EXPORT_SYMBOL(hal_qcn9274_ops);
>>  
>> @@ -1561,7 +1227,6 @@ const struct hal_ops hal_wcn7850_ops = {
>>  	.tcl_to_wbm_rbm_map = ath12k_hal_wcn7850_tcl_to_wbm_rbm_map,
>>  	.rxdma_ring_wmask_rx_mpdu_start = NULL,
>>  	.rxdma_ring_wmask_rx_msdu_end = NULL,
>> -	.get_hal_rx_compact_ops = NULL,
>>  };
>>  EXPORT_SYMBOL(hal_wcn7850_ops);
>>  
>> diff --git a/drivers/net/wireless/ath/ath12k/hal.h b/drivers/net/wireless/ath/ath12k/hal.h
>> index c99878262a4a..e4c46a9ad94e 100644
>> --- a/drivers/net/wireless/ath/ath12k/hal.h
>> +++ b/drivers/net/wireless/ath/ath12k/hal.h
>> @@ -1599,14 +1599,12 @@ struct hal_ops {
>>  	int (*create_srng_config)(struct ath12k_base *ab);
>>  	u16 (*rxdma_ring_wmask_rx_mpdu_start)(void);
>>  	u32 (*rxdma_ring_wmask_rx_msdu_end)(void);
>> -	const struct hal_rx_ops *(*get_hal_rx_compact_ops)(void);
>>  	const struct ath12k_hal_tcl_to_wbm_rbm_map *tcl_to_wbm_rbm_map;
>>  };
>>  
>>  extern const struct hal_ops hal_qcn9274_ops;
>>  extern const struct hal_ops hal_wcn7850_ops;
>>  
>> -extern const struct hal_rx_ops hal_rx_qcn9274_ops;
>>  extern const struct hal_rx_ops hal_rx_qcn9274_compact_ops;
>>  extern const struct hal_rx_ops hal_rx_wcn7850_ops;
>>  
>> diff --git a/drivers/net/wireless/ath/ath12k/wifi7/dp_rx.c b/drivers/net/wireless/ath/ath12k/wifi7/dp_rx.c
>> index d95e3c4daa5d..2105d9e94976 100644
>> --- a/drivers/net/wireless/ath/ath12k/wifi7/dp_rx.c
>> +++ b/drivers/net/wireless/ath/ath12k/wifi7/dp_rx.c
>> @@ -1901,15 +1901,13 @@ int ath12k_dp_rxdma_ring_sel_config_qcn9274(struct ath12k_base *ab)
>>  	tlv_filter.rx_msdu_end_offset =
>>  		ab->hal_rx_ops->rx_desc_get_msdu_end_offset();
>>  
>> -	if (ath12k_dp_wmask_compaction_rx_tlv_supported(ab)) {
>> -		tlv_filter.rx_mpdu_start_wmask =
>> -			ab->hw_params->hal_ops->rxdma_ring_wmask_rx_mpdu_start();
>> -		tlv_filter.rx_msdu_end_wmask =
>> -			ab->hw_params->hal_ops->rxdma_ring_wmask_rx_msdu_end();
>> -		ath12k_dbg(ab, ATH12K_DBG_DATA,
>> -			   "Configuring compact tlv masks rx_mpdu_start_wmask 0x%x rx_msdu_end_wmask 0x%x\n",
>> -			   tlv_filter.rx_mpdu_start_wmask, tlv_filter.rx_msdu_end_wmask);
>> -	}
>> +	tlv_filter.rx_mpdu_start_wmask =
>> +		ab->hw_params->hal_ops->rxdma_ring_wmask_rx_mpdu_start();
>> +	tlv_filter.rx_msdu_end_wmask =
>> +		ab->hw_params->hal_ops->rxdma_ring_wmask_rx_msdu_end();
>> +	ath12k_dbg(ab, ATH12K_DBG_DATA,
>> +		   "Configuring compact tlv masks rx_mpdu_start_wmask 0x%x rx_msdu_end_wmask 0x%x\n",
>> +		   tlv_filter.rx_mpdu_start_wmask, tlv_filter.rx_msdu_end_wmask);
>>  
>>  	ret = ath12k_dp_tx_htt_rx_filter_setup(ab, ring_id, 0,
>>  					       HAL_RXDMA_BUF,
>> diff --git a/drivers/net/wireless/ath/ath12k/wifi7/hal_rx_desc.h b/drivers/net/wireless/ath/ath12k/wifi7/hal_rx_desc.h
>> index 60f165a176e0..cc5e1d336376 100644
>> --- a/drivers/net/wireless/ath/ath12k/wifi7/hal_rx_desc.h
>> +++ b/drivers/net/wireless/ath/ath12k/wifi7/hal_rx_desc.h
>> @@ -1454,12 +1454,6 @@ struct rx_msdu_end_qcn9274_compact {
>>   *
>>   */
>>  
>> -struct hal_rx_desc_qcn9274 {
>> -	struct rx_msdu_end_qcn9274 msdu_end;
>> -	struct rx_mpdu_start_qcn9274 mpdu_start;
>> -	u8 msdu_payload[];
>> -} __packed;
>> -
>>  struct hal_rx_desc_qcn9274_compact {
>>  	struct rx_msdu_end_qcn9274_compact msdu_end;
>>  	struct rx_mpdu_start_qcn9274_compact mpdu_start;
>> @@ -1489,7 +1483,6 @@ struct hal_rx_desc_wcn7850 {
>>  
>>  struct hal_rx_desc {
>>  	union {
>> -		struct hal_rx_desc_qcn9274 qcn9274;
>>  		struct hal_rx_desc_qcn9274_compact qcn9274_compact;
>>  		struct hal_rx_desc_wcn7850 wcn7850;
>>  	} u;
>> diff --git a/drivers/net/wireless/ath/ath12k/wifi7/pci.c b/drivers/net/wireless/ath/ath12k/wifi7/pci.c
>> index 9b1acf6c7aa3..abdb3b8ff658 100644
>> --- a/drivers/net/wireless/ath/ath12k/wifi7/pci.c
>> +++ b/drivers/net/wireless/ath/ath12k/wifi7/pci.c
>> @@ -101,7 +101,7 @@ static int ath12k_wifi7_pci_probe(struct pci_dev *pdev,
>>  		ab_pci->msi_config = &ath12k_wifi7_msi_config[0];
>>  		ab->static_window_map = true;
>>  		ab_pci->pci_ops = &ath12k_wifi7_pci_ops_qcn9274;
>> -		ab->hal_rx_ops = &hal_rx_qcn9274_ops;
>> +		ab->hal_rx_ops = &hal_rx_qcn9274_compact_ops;
>>  		ath12k_wifi7_pci_read_hw_version(ab, &soc_hw_version_major,
>>  						 &soc_hw_version_minor);
>>  		ab->target_mem_mode = ath12k_core_get_memory_mode(ab);
> 





[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux