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