소스 검색

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
Sai Rupesh Chevuru 3 년 전
부모
커밋
5c0f11603d
1개의 변경된 파일8개의 추가작업 그리고 4개의 파일을 삭제
  1. 8 4
      dp/wifi3.0/be/dp_be_rx.c

+ 8 - 4
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