From 5c0f11603d9dd50ac23047b2d66934fadc422df5 Mon Sep 17 00:00:00 2001 From: Sai Rupesh Chevuru Date: Tue, 7 Jun 2022 13:07:18 +0530 Subject: [PATCH] qcacmn: Check for addr4 valid only in case of first MSDU In backhaul WDS, Check for addr4 valid only when the received frame is first msdu. Change-Id: Ib92ba0fc8b7a651c0c875cdde21f2d5538db2a32 CRs-Fixed: 3214575 --- dp/wifi3.0/be/dp_be_rx.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/dp/wifi3.0/be/dp_be_rx.c b/dp/wifi3.0/be/dp_be_rx.c index 15fc0f2c91..48da78c9e4 100644 --- a/dp/wifi3.0/be/dp_be_rx.c +++ b/dp/wifi3.0/be/dp_be_rx.c @@ -66,12 +66,14 @@ dp_rx_wds_learn(struct dp_soc *soc, * @soc: DP soc * @ta_txrx_peer: WDS repeater txrx peer * @rx_tlv_hdr : start address of rx tlvs + * @nbuf: RX packet buffer * * Return: void */ static inline void dp_wds_ext_peer_learn_be(struct dp_soc *soc, struct dp_txrx_peer *ta_txrx_peer, - uint8_t *rx_tlv_hdr) + uint8_t *rx_tlv_hdr, + qdf_nbuf_t nbuf) { uint8_t wds_ext_src_mac[QDF_MAC_ADDR_SIZE]; struct dp_peer *ta_base_peer; @@ -85,7 +87,8 @@ static inline void dp_wds_ext_peer_learn_be(struct dp_soc *soc, &ta_txrx_peer->wds_ext.init)) return; - if (hal_rx_get_mpdu_mac_ad4_valid_be(rx_tlv_hdr)) { + if (qdf_nbuf_is_rx_chfrag_start(nbuf) && + hal_rx_get_mpdu_mac_ad4_valid_be(rx_tlv_hdr)) { qdf_atomic_test_and_set_bit(WDS_EXT_PEER_INIT_BIT, &ta_txrx_peer->wds_ext.init); @@ -109,7 +112,8 @@ static inline void dp_wds_ext_peer_learn_be(struct dp_soc *soc, #else static inline void dp_wds_ext_peer_learn_be(struct dp_soc *soc, struct dp_txrx_peer *ta_txrx_peer, - uint8_t *rx_tlv_hdr) + uint8_t *rx_tlv_hdr, + qdf_nbuf_t nbuf) { } #endif @@ -121,7 +125,7 @@ dp_rx_wds_learn(struct dp_soc *soc, qdf_nbuf_t nbuf, struct hal_rx_msdu_metadata msdu_metadata) { - dp_wds_ext_peer_learn_be(soc, ta_txrx_peer, rx_tlv_hdr); + dp_wds_ext_peer_learn_be(soc, ta_txrx_peer, rx_tlv_hdr, nbuf); } #endif