qcacmn: remove ctrl_peer handle from dp peer

Remove ctrl_peer handle from dp peer and instead
use peer's mac address

Change-Id: I9e24fa94248749f9b4859bce4a1d79d70f32507e
diff --git a/dp/inc/cdp_txrx_cmn.h b/dp/inc/cdp_txrx_cmn.h
index 6174c11..88dd409 100644
--- a/dp/inc/cdp_txrx_cmn.h
+++ b/dp/inc/cdp_txrx_cmn.h
@@ -362,7 +362,7 @@
 
 static inline void *cdp_peer_create
 	(ol_txrx_soc_handle soc, struct cdp_vdev *vdev,
-	uint8_t *peer_mac_addr, struct cdp_ctrl_objmgr_peer *ctrl_peer)
+	uint8_t *peer_mac_addr)
 {
 	if (!soc || !soc->ops) {
 		QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
@@ -376,7 +376,7 @@
 		return NULL;
 
 	return soc->ops->cmn_drv_ops->txrx_peer_create(vdev,
-			peer_mac_addr, ctrl_peer);
+			peer_mac_addr);
 }
 
 static inline void cdp_peer_setup
diff --git a/dp/inc/cdp_txrx_ops.h b/dp/inc/cdp_txrx_ops.h
index 6439fe2..10aa180 100644
--- a/dp/inc/cdp_txrx_ops.h
+++ b/dp/inc/cdp_txrx_ops.h
@@ -96,8 +96,7 @@
 	void (*txrx_pdev_deinit)(struct cdp_pdev *pdev, int force);
 
 	void *(*txrx_peer_create)
-		(struct cdp_vdev *vdev, uint8_t *peer_mac_addr,
-		 struct cdp_ctrl_objmgr_peer *ctrl_peer);
+		(struct cdp_vdev *vdev, uint8_t *peer_mac_addr);
 
 	void (*txrx_peer_setup)
 		(struct cdp_vdev *vdev_hdl, void *peer_hdl);
@@ -935,8 +934,7 @@
 					uint8_t vdev_id, uint8_t *peer_macaddr,
 					uint32_t tid_mask);
 	int (*peer_unref_delete)(void *scn_handle, uint8_t *peer_mac,
-				 uint8_t *vdev_mac, enum wlan_op_mode opmode,
-				 void *old_peer, void *new_peer);
+				 uint8_t *vdev_mac, enum wlan_op_mode opmode);
 	bool (*is_hw_dbs_2x2_capable)(struct wlan_objmgr_psoc *psoc);
 	int (*peer_add_wds_entry)(void *vdev_handle,
 				  struct cdp_peer *peer_handle,
@@ -993,15 +991,15 @@
 
 	/**
 	 * send_delba() - Send delba to peer
-	 * @pdev_handle: Dp pdev handle
-	 * @ctrl_peer: Peer handle
+	 * @psoc: Objmgr soc handle
+	 * @vdev_id: dp vdev id
 	 * @peer_macaddr: Peer mac addr
 	 * @tid: Tid number
 	 *
 	 * Return: 0 for success, non-zero for failure
 	 */
-	int (*send_delba)(void *pdev_handle,  void *ctrl_peer,
-			  uint8_t *peer_macaddr, uint8_t tid, void *vdev_handle,
+	int (*send_delba)(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
+			  uint8_t *peer_macaddr, uint8_t tid,
 			  uint8_t reason_code);
 	int (*peer_delete_multiple_wds_entries)(void *vdev_handle,
 						uint8_t *dest_macaddr,
diff --git a/dp/inc/cdp_txrx_stats_struct.h b/dp/inc/cdp_txrx_stats_struct.h
index a7a1eee..9435e28 100644
--- a/dp/inc/cdp_txrx_stats_struct.h
+++ b/dp/inc/cdp_txrx_stats_struct.h
@@ -957,7 +957,8 @@
 };
 
 /* struct cdp_interface_peer_stats - interface structure for txrx peer stats
- * @peer_hdl: control path peer handle
+ * @peer_mac: peer mac address
+ * @vdev_id : vdev_id for the peer
  * @last_peer_tx_rate: peer tx rate for last transmission
  * @peer_tx_rate: tx rate for current transmission
  * @peer_rssi: current rssi value of peer
@@ -970,17 +971,18 @@
  * @rssi_changed: denotes rssi is changed
  */
 struct cdp_interface_peer_stats {
-	void  *peer_hdl;
+	uint8_t  peer_mac[QDF_MAC_ADDR_SIZE];
+	uint8_t  vdev_id;
+	uint8_t  rssi_changed;
 	uint32_t last_peer_tx_rate;
 	uint32_t peer_tx_rate;
-	uint32_t  peer_rssi;
+	uint32_t peer_rssi;
 	uint32_t tx_packet_count;
 	uint32_t rx_packet_count;
 	uint32_t tx_byte_count;
 	uint32_t rx_byte_count;
 	uint32_t per;
 	uint32_t ack_rssi;
-	uint8_t  rssi_changed;
 };
 
 /* Tx completions per interrupt */
diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c
index d3b6d62..d30559a 100644
--- a/dp/wifi3.0/dp_main.c
+++ b/dp/wifi3.0/dp_main.c
@@ -139,8 +139,7 @@
 	      struct ol_if_ops *ol_ops, uint16_t device_id);
 static void dp_pktlogmod_exit(struct dp_pdev *handle);
 static void *dp_peer_create_wifi3(struct cdp_vdev *vdev_handle,
-				uint8_t *peer_mac_addr,
-				struct cdp_ctrl_objmgr_peer *ctrl_peer);
+				uint8_t *peer_mac_addr);
 static void dp_peer_delete_wifi3(void *peer_handle, uint32_t bitmap);
 static void dp_ppdu_ring_reset(struct dp_pdev *pdev);
 static void dp_ppdu_ring_cfg(struct dp_pdev *pdev);
@@ -4851,8 +4850,7 @@
 
 	if (wlan_op_mode_sta == vdev->opmode)
 		dp_peer_create_wifi3((struct cdp_vdev *)vdev,
-							vdev->mac_addr.raw,
-							NULL);
+							vdev->mac_addr.raw);
 
 	return (struct cdp_vdev *)vdev;
 
@@ -5214,7 +5212,7 @@
  * Return: DP peeer handle on success, NULL on failure
  */
 static void *dp_peer_create_wifi3(struct cdp_vdev *vdev_handle,
-		uint8_t *peer_mac_addr, struct cdp_ctrl_objmgr_peer *ctrl_peer)
+		uint8_t *peer_mac_addr)
 {
 	struct dp_peer *peer;
 	int i;
@@ -5262,9 +5260,8 @@
 		if (soc->cdp_soc.ol_ops->peer_unref_delete) {
 			soc->cdp_soc.ol_ops->peer_unref_delete(pdev->ctrl_pdev,
 				peer->mac_addr.raw, vdev->mac_addr.raw,
-				vdev->opmode, peer->ctrl_peer, ctrl_peer);
+				vdev->opmode);
 		}
-		peer->ctrl_peer = ctrl_peer;
 
 		dp_local_peer_id_alloc(pdev, peer);
 
@@ -5302,7 +5299,6 @@
 
 	/* store provided params */
 	peer->vdev = vdev;
-	peer->ctrl_peer = ctrl_peer;
 
 	if ((vdev->opmode == wlan_op_mode_sta) &&
 	    !qdf_mem_cmp(peer_mac_addr, &vdev->mac_addr.raw[0],
@@ -5898,10 +5894,10 @@
 {
 	if (soc->cdp_soc.ol_ops->peer_unref_delete)
 		soc->cdp_soc.ol_ops->peer_unref_delete(
-				pdev->ctrl_pdev,
+				soc->ctrl_psoc,
+				pdev->pdev_id,
 				peer->mac_addr.raw, vdev_mac_addr,
-				vdev_opmode, peer->ctrl_peer,
-				NULL);
+				vdev_opmode);
 
 	/*
 	 * Peer AST list hast to be empty here
@@ -6105,19 +6101,6 @@
 {
 	struct dp_peer *peer = (struct dp_peer *)peer_handle;
 
-	/* redirect the peer's rx delivery function to point to a
-	 * discard func
-	 */
-
-	/* Do not make ctrl_peer to NULL for connected sta peers.
-	 * We need ctrl_peer to release the reference during dp
-	 * peer free. This reference was held for
-	 * obj_mgr peer during the creation of dp peer.
-	 */
-	if (!(peer->vdev && (peer->vdev->opmode != wlan_op_mode_sta) &&
-	      !peer->bss_peer))
-		peer->ctrl_peer = NULL;
-
 	peer->valid = 0;
 
 	QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_INFO_HIGH,
diff --git a/dp/wifi3.0/dp_peer.c b/dp/wifi3.0/dp_peer.c
index 193ed75..23c9c9c 100644
--- a/dp/wifi3.0/dp_peer.c
+++ b/dp/wifi3.0/dp_peer.c
@@ -2507,11 +2507,10 @@
 					qdf_spin_unlock_bh(&rx_tid->tid_lock);
 					if (peer->vdev->pdev->soc->cdp_soc.ol_ops->send_delba)
 						peer->vdev->pdev->soc->cdp_soc.ol_ops->send_delba(
-								peer->vdev->pdev->ctrl_pdev,
-								peer->ctrl_peer,
-								peer->mac_addr.raw,
-								tid, peer->vdev->ctrl_vdev,
-								delba_rcode);
+							peer->vdev->pdev->soc->ctrl_psoc,
+							peer->vdev->vdev_id,
+							peer->mac_addr.raw,
+							tid, delba_rcode);
 				} else {
 					qdf_spin_unlock_bh(&rx_tid->tid_lock);
 				}
@@ -2824,8 +2823,9 @@
 			qdf_spin_unlock_bh(&rx_tid->tid_lock);
 			if (peer->vdev->pdev->soc->cdp_soc.ol_ops->send_delba)
 				peer->vdev->pdev->soc->cdp_soc.ol_ops->send_delba(
-					peer->vdev->pdev->ctrl_pdev, peer->ctrl_peer,
-					peer->mac_addr.raw, tid, peer->vdev->ctrl_vdev,
+					peer->vdev->pdev->soc->ctrl_psoc,
+					peer->vdev->vdev_id,
+					peer->mac_addr.raw, tid,
 					rx_tid->delba_rcode);
 		}
 		return QDF_STATUS_SUCCESS;
diff --git a/dp/wifi3.0/dp_rx_defrag.c b/dp/wifi3.0/dp_rx_defrag.c
index 9a49ac1..8b14835 100644
--- a/dp/wifi3.0/dp_rx_defrag.c
+++ b/dp/wifi3.0/dp_rx_defrag.c
@@ -1292,27 +1292,22 @@
 
 	if (tkip_demic) {
 		msdu = frag_list_head;
-		if (soc->cdp_soc.ol_ops->rx_frag_tkip_demic) {
-			status = soc->cdp_soc.ol_ops->rx_frag_tkip_demic(
-				(void *)peer->ctrl_peer, msdu, hdr_space);
-		} else {
-			qdf_mem_copy(key,
-				     &peer->security[index].michael_key[0],
-				IEEE80211_WEP_MICLEN);
-			status = dp_rx_defrag_tkip_demic(key, msdu,
-							 RX_PKT_TLVS_LEN +
-							 hdr_space);
+		qdf_mem_copy(key,
+			     &peer->security[index].michael_key[0],
+			     IEEE80211_WEP_MICLEN);
+		status = dp_rx_defrag_tkip_demic(key, msdu,
+						 RX_PKT_TLVS_LEN +
+						 hdr_space);
 
-			if (status) {
-				dp_rx_defrag_err(vdev, frag_list_head);
+		if (status) {
+			dp_rx_defrag_err(vdev, frag_list_head);
 
-				QDF_TRACE(QDF_MODULE_ID_TXRX,
-					  QDF_TRACE_LEVEL_ERROR,
-					  "%s: TKIP demic failed status %d",
-					  __func__, status);
+			QDF_TRACE(QDF_MODULE_ID_TXRX,
+				  QDF_TRACE_LEVEL_ERROR,
+				  "%s: TKIP demic failed status %d",
+				   __func__, status);
 
-				return QDF_STATUS_E_DEFRAG_ERROR;
-			}
+			return QDF_STATUS_E_DEFRAG_ERROR;
 		}
 	}
 
diff --git a/dp/wifi3.0/dp_rx_err.c b/dp/wifi3.0/dp_rx_err.c
index 9cb00a8..a125910 100644
--- a/dp/wifi3.0/dp_rx_err.c
+++ b/dp/wifi3.0/dp_rx_err.c
@@ -561,12 +561,12 @@
 			IEEE80211_REASON_QOS_SETUP_REQUIRED;
 		qdf_spin_unlock_bh(&rx_tid->tid_lock);
 		if (soc->cdp_soc.ol_ops->send_delba)
-			soc->cdp_soc.ol_ops->send_delba(peer->vdev->pdev->ctrl_pdev,
-							peer->ctrl_peer,
-							peer->mac_addr.raw,
-							tid,
-							peer->vdev->ctrl_vdev,
-							rx_tid->delba_rcode);
+			soc->cdp_soc.ol_ops->send_delba(
+					peer->vdev->pdev->soc->ctrl_psoc,
+					peer->vdev->vdev_id,
+					peer->mac_addr.raw,
+					tid,
+					rx_tid->delba_rcode);
 	} else {
 		qdf_spin_unlock_bh(&rx_tid->tid_lock);
 	}
diff --git a/dp/wifi3.0/dp_stats.c b/dp/wifi3.0/dp_stats.c
index 3bc634a..0c0ad3c 100644
--- a/dp/wifi3.0/dp_stats.c
+++ b/dp/wifi3.0/dp_stats.c
@@ -4056,7 +4056,9 @@
 	if ((peer_stats->rx.rssi && peer_stats_intf.rssi_changed) ||
 	    (peer_stats->tx.tx_rate &&
 	     peer_stats->tx.tx_rate != peer_stats->tx.last_tx_rate)) {
-		peer_stats_intf.peer_hdl = peer->ctrl_peer;
+		qdf_mem_copy(peer_stats_intf.peer_mac, peer->mac_addr.raw,
+			     QDF_MAC_ADDR_SIZE);
+		peer_stats_intf.vdev_id = peer->vdev->vdev_id;
 		peer_stats_intf.last_peer_tx_rate = peer_stats->tx.last_tx_rate;
 		peer_stats_intf.peer_tx_rate = peer_stats->tx.tx_rate;
 		peer_stats_intf.peer_rssi = peer_stats->rx.rssi;
diff --git a/dp/wifi3.0/dp_types.h b/dp/wifi3.0/dp_types.h
index 8e41285..fb6ac33 100644
--- a/dp/wifi3.0/dp_types.h
+++ b/dp/wifi3.0/dp_types.h
@@ -1979,8 +1979,6 @@
 	/* VDEV to which this peer is associated */
 	struct dp_vdev *vdev;
 
-	struct cdp_ctrl_objmgr_peer *ctrl_peer;
-
 	struct dp_ast_entry *self_ast_entry;
 
 	qdf_atomic_t ref_cnt;