wifi: ath12k: fix incorrect handling of AMSDU frames
When a data traffic with size greater than 1500 is initiated, say size 65500, it is sent as a set of AMSDUs (3 MSDUs) in a MPDU. These AMSDUs are incorrectly classified as multicast and peer id gets changed, except for first msdu, because of mcast_bcast bit derived from rx_desc for every msdu received. The mcast_bcast bit in rx_desc is only valid for first msdu. Hence, add changes to derive mcast_bcast only if it is a first msdu. Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1 Signed-off-by: Harshitha Prem <quic_hprem@quicinc.com> Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com> Link: https://lore.kernel.org/r/20230320090400.30027-1-quic_hprem@quicinc.compull/795/merge
parent
e93bbd6554
commit
392b6b76fd
|
|
@ -196,7 +196,8 @@ static void ath12k_dp_rxdesc_set_msdu_len(struct ath12k_base *ab,
|
|||
static bool ath12k_dp_rx_h_is_mcbc(struct ath12k_base *ab,
|
||||
struct hal_rx_desc *desc)
|
||||
{
|
||||
return ab->hw_params->hal_ops->rx_desc_is_mcbc(desc);
|
||||
return (ath12k_dp_rx_h_first_msdu(ab, desc) &&
|
||||
ab->hw_params->hal_ops->rx_desc_is_mcbc(desc));
|
||||
}
|
||||
|
||||
static bool ath12k_dp_rxdesc_mac_addr2_valid(struct ath12k_base *ab,
|
||||
|
|
|
|||
Loading…
Reference in New Issue