]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: ath12k: using msdu end descriptor to check for rx multicast packets
authorSarika Sharma <quic_sarishar@quicinc.com>
Fri, 11 Apr 2025 06:15:22 +0000 (11:45 +0530)
committerJeff Johnson <jeff.johnson@oss.qualcomm.com>
Thu, 17 Apr 2025 22:49:33 +0000 (15:49 -0700)
Currently, the RX multicast broadcast packet check is performed using
bit 15 from the info6 field of the MPDU start descriptor. This check
can also be done using bit 9 from the info5 field of the MSDU end
descriptor. However, in some scenarios multicast bit is not set when
fetched from MPDU start descriptor.
Therefore, checking the RX multicast broadcast packet from the MSDU
end descriptor is more reliable as it is per MSDU.

Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1

Signed-off-by: Sarika Sharma <quic_sarishar@quicinc.com>
Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
Link: https://patch.msgid.link/20250411061523.859387-2-quic_sarishar@quicinc.com
Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
drivers/net/wireless/ath/ath12k/hal.c

index d00869a33fea0693d0cb3aacebbe677447fe7dbd..12d0f991a47fa3e05d6828254ebbb6ad5e079979 100644 (file)
@@ -449,8 +449,8 @@ static u8 *ath12k_hw_qcn9274_rx_desc_mpdu_start_addr2(struct hal_rx_desc *desc)
 
 static bool ath12k_hw_qcn9274_rx_desc_is_da_mcbc(struct hal_rx_desc *desc)
 {
-       return __le32_to_cpu(desc->u.qcn9274.mpdu_start.info6) &
-              RX_MPDU_START_INFO6_MCAST_BCAST;
+       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,
@@ -902,8 +902,8 @@ static u8 *ath12k_hw_qcn9274_compact_rx_desc_mpdu_start_addr2(struct hal_rx_desc
 
 static bool ath12k_hw_qcn9274_compact_rx_desc_is_da_mcbc(struct hal_rx_desc *desc)
 {
-       return __le32_to_cpu(desc->u.qcn9274_compact.mpdu_start.info6) &
-              RX_MPDU_START_INFO6_MCAST_BCAST;
+       return __le16_to_cpu(desc->u.qcn9274_compact.msdu_end.info5) &
+              RX_MSDU_END_INFO5_DA_IS_MCBC;
 }
 
 static void ath12k_hw_qcn9274_compact_rx_desc_get_dot11_hdr(struct hal_rx_desc *desc,