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
This commit is contained in:
Sai Rupesh Chevuru
2022-06-07 13:07:18 +05:30
committed by Madan Koyyalamudi
parent 242339083b
commit 5c0f11603d

View File

@@ -66,12 +66,14 @@ dp_rx_wds_learn(struct dp_soc *soc,
* @soc: DP soc * @soc: DP soc
* @ta_txrx_peer: WDS repeater txrx peer * @ta_txrx_peer: WDS repeater txrx peer
* @rx_tlv_hdr : start address of rx tlvs * @rx_tlv_hdr : start address of rx tlvs
* @nbuf: RX packet buffer
* *
* Return: void * Return: void
*/ */
static inline void dp_wds_ext_peer_learn_be(struct dp_soc *soc, static inline void dp_wds_ext_peer_learn_be(struct dp_soc *soc,
struct dp_txrx_peer *ta_txrx_peer, 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]; uint8_t wds_ext_src_mac[QDF_MAC_ADDR_SIZE];
struct dp_peer *ta_base_peer; 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)) &ta_txrx_peer->wds_ext.init))
return; 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, qdf_atomic_test_and_set_bit(WDS_EXT_PEER_INIT_BIT,
&ta_txrx_peer->wds_ext.init); &ta_txrx_peer->wds_ext.init);
@@ -109,7 +112,8 @@ static inline void dp_wds_ext_peer_learn_be(struct dp_soc *soc,
#else #else
static inline void dp_wds_ext_peer_learn_be(struct dp_soc *soc, static inline void dp_wds_ext_peer_learn_be(struct dp_soc *soc,
struct dp_txrx_peer *ta_txrx_peer, struct dp_txrx_peer *ta_txrx_peer,
uint8_t *rx_tlv_hdr) uint8_t *rx_tlv_hdr,
qdf_nbuf_t nbuf)
{ {
} }
#endif #endif
@@ -121,7 +125,7 @@ dp_rx_wds_learn(struct dp_soc *soc,
qdf_nbuf_t nbuf, qdf_nbuf_t nbuf,
struct hal_rx_msdu_metadata msdu_metadata) 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 #endif