Message ID | 20250411061523.859387-3-quic_sarishar@quicinc.com (mailing list archive) |
---|---|
State | New |
Delegated to: | Jeff Johnson |
Headers | show |
Series | wifi: ath12k: correctly check RX multicast bit | expand |
On 4/11/2025 11:45 AM, Sarika Sharma wrote: > Currently, RX is_mcbc bit is set for packest send from client as > destination address (DA) is multicast/broadcast address, but packets > are actually unicast as receiver address (RA) is not multicast address. > Hence, packets are not handled properly due to this is_mcbc bit. > > Therefore, reset the is_mcbc bit if interface type is AP. > > Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1 > > Signed-off-by: Sarika Sharma <quic_sarishar@quicinc.com> Should there be a fixes tag?
On 4/11/2025 11:55 AM, Vasanthakumar Thiagarajan wrote: > > > On 4/11/2025 11:45 AM, Sarika Sharma wrote: >> Currently, RX is_mcbc bit is set for packest send from client as >> destination address (DA) is multicast/broadcast address, but packets >> are actually unicast as receiver address (RA) is not multicast address. >> Hence, packets are not handled properly due to this is_mcbc bit. >> >> Therefore, reset the is_mcbc bit if interface type is AP. >> >> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1 >> >> Signed-off-by: Sarika Sharma <quic_sarishar@quicinc.com> > > Should there be a fixes tag? This patch independently does not fix any known issue, this is required because of patch 1 in the series. Due to 1st patch some existing issue is exposed, to address that 2nd patch is required.
On 4/11/2025 12:27 PM, Sarika Sharma wrote: > On 4/11/2025 11:55 AM, Vasanthakumar Thiagarajan wrote: >> >> >> On 4/11/2025 11:45 AM, Sarika Sharma wrote: >>> Currently, RX is_mcbc bit is set for packest send from client as >>> destination address (DA) is multicast/broadcast address, but packets >>> are actually unicast as receiver address (RA) is not multicast address. >>> Hence, packets are not handled properly due to this is_mcbc bit. >>> >>> Therefore, reset the is_mcbc bit if interface type is AP. >>> >>> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1 >>> >>> Signed-off-by: Sarika Sharma <quic_sarishar@quicinc.com> >> >> Should there be a fixes tag? > > This patch independently does not fix any known issue, this is required because of patch 1 > in the series. Due to 1st patch some existing issue is exposed, to address that 2nd patch > is required. > Ok Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
diff --git a/drivers/net/wireless/ath/ath12k/dp_rx.c b/drivers/net/wireless/ath/ath12k/dp_rx.c index cffff66c5ec4..308d9656b57e 100644 --- a/drivers/net/wireless/ath/ath12k/dp_rx.c +++ b/drivers/net/wireless/ath/ath12k/dp_rx.c @@ -2269,6 +2269,11 @@ static void ath12k_dp_rx_h_mpdu(struct ath12k *ar, spin_lock_bh(&ar->ab->base_lock); peer = ath12k_dp_rx_h_find_peer(ar->ab, msdu); if (peer) { + /* resetting mcbc bit because mcbc packets are unicast + * packets only for AP as STA sends unicast packets. + */ + rxcb->is_mcbc = rxcb->is_mcbc && !peer->ucast_ra_only; + if (rxcb->is_mcbc) enctype = peer->sec_type_grp; else diff --git a/drivers/net/wireless/ath/ath12k/peer.c b/drivers/net/wireless/ath/ath12k/peer.c index 792cca8a3fb1..ec7236bbccc0 100644 --- a/drivers/net/wireless/ath/ath12k/peer.c +++ b/drivers/net/wireless/ath/ath12k/peer.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: BSD-3-Clause-Clear /* * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2022, 2024 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2022, 2024-2025 Qualcomm Innovation Center, Inc. All rights reserved. */ #include "core.h" @@ -383,6 +383,9 @@ int ath12k_peer_create(struct ath12k *ar, struct ath12k_link_vif *arvif, arvif->ast_idx = peer->hw_peer_id; } + if (vif->type == NL80211_IFTYPE_AP) + peer->ucast_ra_only = true; + if (sta) { ahsta = ath12k_sta_to_ahsta(sta); arsta = wiphy_dereference(ath12k_ar_to_hw(ar)->wiphy, diff --git a/drivers/net/wireless/ath/ath12k/peer.h b/drivers/net/wireless/ath/ath12k/peer.h index 5870ee11a8c7..f3a5e054d2b5 100644 --- a/drivers/net/wireless/ath/ath12k/peer.h +++ b/drivers/net/wireless/ath/ath12k/peer.h @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: BSD-3-Clause-Clear */ /* * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved. */ #ifndef ATH12K_PEER_H @@ -62,6 +62,7 @@ struct ath12k_peer { /* for reference to ath12k_link_sta */ u8 link_id; + bool ucast_ra_only; }; struct ath12k_ml_peer {
Currently, RX is_mcbc bit is set for packest send from client as destination address (DA) is multicast/broadcast address, but packets are actually unicast as receiver address (RA) is not multicast address. Hence, packets are not handled properly due to this is_mcbc bit. Therefore, reset the is_mcbc bit if interface type is AP. Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1 Signed-off-by: Sarika Sharma <quic_sarishar@quicinc.com> --- drivers/net/wireless/ath/ath12k/dp_rx.c | 5 +++++ drivers/net/wireless/ath/ath12k/peer.c | 5 ++++- drivers/net/wireless/ath/ath12k/peer.h | 3 ++- 3 files changed, 11 insertions(+), 2 deletions(-)