Browse Source

qcacmn: send event to control path to inditate presence of backhaul

send event to control path on receiving 1st 4-address frame from backhaul
Change-Id: I7c78566d0adf275aeb2edd29233a42563d156fc5
Sai Rupesh Chevuru 3 years ago
parent
commit
b1db784a64
1 changed files with 44 additions and 0 deletions
  1. 44 0
      dp/wifi3.0/be/dp_be_rx.c

+ 44 - 0
dp/wifi3.0/be/dp_be_rx.c

@@ -56,6 +56,49 @@ dp_rx_wds_learn(struct dp_soc *soc,
 				msdu_metadata);
 }
 #else
+#ifdef QCA_SUPPORT_WDS_EXTENDED
+/**
+ * dp_wds_ext_peer_learn_be() - function to send event to control
+ * path on receiving 1st 4-address frame from backhaul.
+ * @soc: DP soc
+ * @ta_peer: WDS repeater peer
+ * @rx_tlv_hdr  : start address of rx tlvs
+ *
+ * Return: void
+ */
+static inline void dp_wds_ext_peer_learn_be(struct dp_soc *soc,
+					    struct dp_peer *ta_peer,
+					    uint8_t *rx_tlv_hdr)
+{
+	uint8_t wds_ext_src_mac[QDF_MAC_ADDR_SIZE];
+
+	/* instead of checking addr4 is valid or not in per packet path
+	 * check for init bit, which will be set on reception of
+	 * first addr4 valid packet.
+	 */
+	if (!ta_peer->vdev->wds_ext_enabled ||
+	    qdf_atomic_test_bit(WDS_EXT_PEER_INIT_BIT, &ta_peer->wds_ext.init))
+		return;
+
+	if (hal_rx_get_mpdu_mac_ad4_valid(soc->hal_soc, rx_tlv_hdr)) {
+		qdf_atomic_test_and_set_bit(WDS_EXT_PEER_INIT_BIT,
+					    &ta_peer->wds_ext.init);
+		qdf_mem_copy(wds_ext_src_mac, &ta_peer->mac_addr.raw[0],
+			     QDF_MAC_ADDR_SIZE);
+		soc->cdp_soc.ol_ops->rx_wds_ext_peer_learn(
+						soc->ctrl_psoc,
+						ta_peer->peer_id,
+						ta_peer->vdev->vdev_id,
+						wds_ext_src_mac);
+	}
+}
+#else
+static inline void dp_wds_ext_peer_learn_be(struct dp_soc *soc,
+					    struct dp_peer *ta_peer,
+					    uint8_t *rx_tlv_hdr)
+{
+}
+#endif
 static void
 dp_rx_wds_learn(struct dp_soc *soc,
 		struct dp_vdev *vdev,
@@ -64,6 +107,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_peer, rx_tlv_hdr);
 }
 #endif