فهرست منبع

qcacmn: Cleanup local peer id from DP APIs

Local peer_id is being cleaned up across DP, HDD and PS/WMA.
So, any references to local peer_id/sta_id will be replaced
by peer mac address and all interactions between the layers
will be based on peer mac address.

Cleanup local peer id usage from DP APIs.

Change-Id: I930e1c6a09092a373c093239632d6f310fee18e2
CRs-Fixed: 2529041
Yeshwanth Sriram Guntuka 5 سال پیش
والد
کامیت
65d547730f

+ 0 - 2
dp/inc/cdp_txrx_mob_def.h

@@ -232,13 +232,11 @@ enum peer_debug_id_type {
 
 /**
  * struct ol_txrx_desc_type - txrx descriptor type
- * @sta_id: sta id
  * @is_qos_enabled: is station qos enabled
  * @is_wapi_supported: is station wapi supported
  * @peer_addr: peer mac address
  */
 struct ol_txrx_desc_type {
-	uint8_t sta_id;
 	uint8_t is_qos_enabled;
 	uint8_t is_wapi_supported;
 	struct qdf_mac_addr peer_addr;

+ 6 - 6
dp/inc/cdp_txrx_ops.h

@@ -1189,21 +1189,21 @@ struct cdp_peer_ops {
 			enum ol_txrx_peer_state sta_state,
 			bool roam_synch_in_progress);
 	void * (*peer_get_ref_by_addr)(struct cdp_pdev *pdev,
-				       uint8_t *peer_addr, uint8_t *peer_id,
+				       uint8_t *peer_addr,
 				       enum peer_debug_id_type debug_id);
 	void (*peer_release_ref)(void *peer, enum peer_debug_id_type debug_id);
 	void * (*find_peer_by_addr)(struct cdp_pdev *pdev,
-			uint8_t *peer_addr, uint8_t *peer_id);
+			uint8_t *peer_addr);
 	void * (*find_peer_by_addr_and_vdev)(struct cdp_pdev *pdev,
 			struct cdp_vdev *vdev,
-			uint8_t *peer_addr, uint8_t *peer_id);
+			uint8_t *peer_addr);
 	QDF_STATUS (*peer_state_update)(struct cdp_pdev *pdev,
 			uint8_t *peer_addr,
 			enum ol_txrx_peer_state state);
 	QDF_STATUS (*get_vdevid)(void *peer, uint8_t *vdev_id);
 	struct cdp_vdev * (*get_vdev_by_peer_addr)(struct cdp_pdev *pdev,
 			struct qdf_mac_addr peer_addr);
-	QDF_STATUS (*register_ocb_peer)(uint8_t *mac_addr, uint8_t *peer_id);
+	QDF_STATUS (*register_ocb_peer)(uint8_t *mac_addr);
 	uint8_t * (*peer_get_peer_mac_addr)(void *peer);
 	int (*get_peer_state)(void *peer);
 	struct cdp_vdev * (*get_vdev_for_peer)(void *peer);
@@ -1217,10 +1217,10 @@ struct cdp_peer_ops {
 			void *callback_context);
 	void (*copy_mac_addr_raw)(struct cdp_vdev *vdev, uint8_t *bss_addr);
 	void (*add_last_real_peer)(struct cdp_pdev *pdev,
-		struct cdp_vdev *vdev, uint8_t *peer_id);
+		struct cdp_vdev *vdev);
 	bool (*is_vdev_restore_last_peer)(void *peer);
 	void (*update_last_real_peer)(struct cdp_pdev *pdev, void *vdev,
-			uint8_t *peer_id, bool restore_last_peer);
+			bool restore_last_peer);
 	void (*peer_detach_force_delete)(void *peer);
 	void (*set_tdls_offchan_enabled)(void *peer, bool val);
 	void (*set_peer_as_tdls_peer)(void *peer, bool val);

+ 12 - 18
dp/inc/cdp_txrx_peer_ops.h

@@ -85,7 +85,6 @@ cdp_clear_peer(ol_txrx_soc_handle soc, struct cdp_pdev *pdev,
  * @soc - data path soc handle
  * @cds_ctx - cds void context
  * @mac_addr - mac address for ocb self peer
- * @peer_id - local peer id
  *
  * register ocb peer from physical device
  *
@@ -94,7 +93,7 @@ cdp_clear_peer(ol_txrx_soc_handle soc, struct cdp_pdev *pdev,
  */
 static inline QDF_STATUS
 cdp_peer_register_ocb_peer(ol_txrx_soc_handle soc,
-		uint8_t *mac_addr, uint8_t *peer_id)
+		uint8_t *mac_addr)
 {
 	if (!soc || !soc->ops || !soc->ops->peer_ops) {
 		QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_FATAL,
@@ -103,7 +102,7 @@ cdp_peer_register_ocb_peer(ol_txrx_soc_handle soc,
 	}
 
 	if (soc->ops->peer_ops->register_ocb_peer)
-		return soc->ops->peer_ops->register_ocb_peer(mac_addr, peer_id);
+		return soc->ops->peer_ops->register_ocb_peer(mac_addr);
 
 	return QDF_STATUS_E_NOSUPPORT;
 }
@@ -171,7 +170,6 @@ cdp_peer_remove_for_vdev_no_lock(ol_txrx_soc_handle soc,
  * @soc - data path soc handle
  * @pdev - data path device instance
  * @peer_addr - peer mac address
- * @peer_id - local peer id with target mac address
  * @debug_id - debug_id to track caller
  *
  * To release the peer ref, cdp_peer_release_ref needs to be called.
@@ -181,7 +179,7 @@ cdp_peer_remove_for_vdev_no_lock(ol_txrx_soc_handle soc,
  */
 static inline void
 *cdp_peer_get_ref_by_addr(ol_txrx_soc_handle soc, struct cdp_pdev *pdev,
-			  uint8_t *peer_addr, uint8_t *peer_id,
+			  uint8_t *peer_addr,
 			  enum peer_debug_id_type debug_id)
 {
 	if (!soc || !soc->ops || !soc->ops->peer_ops) {
@@ -192,7 +190,7 @@ static inline void
 
 	if (soc->ops->peer_ops->peer_get_ref_by_addr)
 		return soc->ops->peer_ops->peer_get_ref_by_addr(
-			pdev, peer_addr, peer_id, debug_id);
+			pdev, peer_addr, debug_id);
 
 	return NULL;
 }
@@ -224,7 +222,6 @@ cdp_peer_release_ref(ol_txrx_soc_handle soc, void *peer,
  * @soc - data path soc handle
  * @pdev - data path device instance
  * @peer_addr - peer mac address
- * @peer_id - local peer id with target mac address
  *
  * Find peer and local peer id by peer mac address
  *
@@ -233,7 +230,7 @@ cdp_peer_release_ref(ol_txrx_soc_handle soc, void *peer,
  */
 static inline void
 *cdp_peer_find_by_addr(ol_txrx_soc_handle soc, struct cdp_pdev *pdev,
-		uint8_t *peer_addr, uint8_t *peer_id)
+		uint8_t *peer_addr)
 {
 	if (!soc || !soc->ops || !soc->ops->peer_ops) {
 		QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_FATAL,
@@ -243,7 +240,7 @@ static inline void
 
 	if (soc->ops->peer_ops->find_peer_by_addr)
 		return soc->ops->peer_ops->find_peer_by_addr(
-			pdev, peer_addr, peer_id);
+			pdev, peer_addr);
 
 	return NULL;
 }
@@ -254,7 +251,6 @@ static inline void
  * @pdev - data path device instance
  * @vdev - virtual interface instance
  * @peer_addr - peer mac address
- * @peer_id - local peer id with target mac address
  *
  * Find peer by peer mac address within vdev
  *
@@ -263,7 +259,7 @@ static inline void
  */
 static inline void
 *cdp_peer_find_by_addr_and_vdev(ol_txrx_soc_handle soc, struct cdp_pdev *pdev,
-		struct cdp_vdev *vdev, uint8_t *peer_addr, uint8_t *peer_id)
+		struct cdp_vdev *vdev, uint8_t *peer_addr)
 {
 	if (!soc || !soc->ops || !soc->ops->peer_ops) {
 		QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_FATAL,
@@ -273,7 +269,7 @@ static inline void
 
 	if (soc->ops->peer_ops->find_peer_by_addr_and_vdev)
 		return soc->ops->peer_ops->find_peer_by_addr_and_vdev(
-			pdev, vdev, peer_addr, peer_id);
+			pdev, vdev, peer_addr);
 
 	return NULL;
 }
@@ -494,7 +490,6 @@ cdp_peer_copy_mac_addr_raw(ol_txrx_soc_handle soc,
  * @soc - data path soc handle
  * @pdev - data path device instance
  * @vdev - virtual interface instance
- * @peer_id - local peer id
  *
  * copy peer mac address
  *
@@ -502,7 +497,7 @@ cdp_peer_copy_mac_addr_raw(ol_txrx_soc_handle soc,
  */
 static inline void
 cdp_peer_add_last_real_peer(ol_txrx_soc_handle soc,
-		struct cdp_pdev *pdev, struct cdp_vdev *vdev, uint8_t *peer_id)
+		struct cdp_pdev *pdev, struct cdp_vdev *vdev)
 {
 	if (!soc || !soc->ops || !soc->ops->peer_ops) {
 		QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_FATAL,
@@ -512,7 +507,7 @@ cdp_peer_add_last_real_peer(ol_txrx_soc_handle soc,
 
 	if (soc->ops->peer_ops->add_last_real_peer)
 		return soc->ops->peer_ops->add_last_real_peer(
-			pdev, vdev, peer_id);
+			pdev, vdev);
 	return;
 }
 
@@ -546,7 +541,6 @@ cdp_peer_is_vdev_restore_last_peer(ol_txrx_soc_handle soc, void *peer)
  * @soc - data path soc handle
  * @pdev - data path device instance
  * @peer - peer instance pointer
- * @peer_id - local peer id
  * @restore_last_peer - restore last peer or not
  *
  * update last real peer
@@ -555,7 +549,7 @@ cdp_peer_is_vdev_restore_last_peer(ol_txrx_soc_handle soc, void *peer)
  */
 static inline void
 cdp_peer_update_last_real_peer(ol_txrx_soc_handle soc, struct cdp_pdev *pdev,
-		void *vdev, uint8_t *peer_id, bool restore_last_peer)
+		void *vdev, bool restore_last_peer)
 {
 	if (!soc || !soc->ops || !soc->ops->peer_ops) {
 		QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_FATAL,
@@ -565,7 +559,7 @@ cdp_peer_update_last_real_peer(ol_txrx_soc_handle soc, struct cdp_pdev *pdev,
 
 	if (soc->ops->peer_ops->update_last_real_peer)
 		return soc->ops->peer_ops->update_last_real_peer(pdev, vdev,
-			peer_id, restore_last_peer);
+			restore_last_peer);
 
 	return;
 }

+ 2 - 2
dp/wifi3.0/dp_internal.h

@@ -900,7 +900,7 @@ void dp_peer_rx_cleanup(struct dp_vdev *vdev, struct dp_peer *peer,
 			bool reuse);
 void dp_peer_unref_delete(struct dp_peer *peer);
 extern void *dp_find_peer_by_addr(struct cdp_pdev *dev,
-	uint8_t *peer_mac_addr, uint8_t *peer_id);
+	uint8_t *peer_mac_addr);
 extern struct dp_peer *dp_peer_find_hash_find(struct dp_soc *soc,
 	uint8_t *peer_mac_addr, int mac_addr_is_aligned, uint8_t vdev_id);
 
@@ -911,7 +911,7 @@ QDF_STATUS dp_clear_peer(struct cdp_pdev *pdev_handle,
 			 struct qdf_mac_addr peer_addr);
 void *dp_find_peer_by_addr_and_vdev(struct cdp_pdev *pdev_handle,
 		struct cdp_vdev *vdev,
-		uint8_t *peer_addr, uint8_t *local_id);
+		uint8_t *peer_addr);
 QDF_STATUS dp_peer_state_update(struct cdp_pdev *pdev_handle, uint8_t *peer_mac,
 		enum ol_txrx_peer_state state);
 QDF_STATUS dp_get_vdevid(void *peer_handle, uint8_t *vdev_id);

+ 2 - 5
dp/wifi3.0/dp_ipa.c

@@ -1720,7 +1720,6 @@ bool dp_ipa_rx_intrabss_fwd(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
 	qdf_nbuf_t nbuf_copy;
 	uint8_t da_is_bcmc;
 	struct ethhdr *eh;
-	uint8_t local_id;
 
 	*fwd_success = false; /* set default as failure */
 
@@ -1761,16 +1760,14 @@ bool dp_ipa_rx_intrabss_fwd(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
 	if (!qdf_mem_cmp(eh->h_dest, vdev->mac_addr.raw, QDF_MAC_ADDR_SIZE))
 		return false;
 
-	da_peer = dp_find_peer_by_addr((struct cdp_pdev *)pdev, eh->h_dest,
-				       &local_id);
+	da_peer = dp_find_peer_by_addr((struct cdp_pdev *)pdev, eh->h_dest);
 	if (!da_peer)
 		return false;
 
 	if (da_peer->vdev != vdev)
 		return false;
 
-	sa_peer = dp_find_peer_by_addr((struct cdp_pdev *)pdev, eh->h_source,
-				       &local_id);
+	sa_peer = dp_find_peer_by_addr((struct cdp_pdev *)pdev, eh->h_source);
 	if (!sa_peer)
 		return false;
 

+ 5 - 11
dp/wifi3.0/dp_main.c

@@ -7200,7 +7200,6 @@ static void
 dp_get_host_peer_stats(struct cdp_pdev *pdev_handle, char *mac_addr)
 {
 	struct dp_peer *peer;
-	uint8_t local_id;
 
 	if (!mac_addr) {
 		QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR,
@@ -7208,8 +7207,7 @@ dp_get_host_peer_stats(struct cdp_pdev *pdev_handle, char *mac_addr)
 		return;
 	}
 
-	peer = (struct dp_peer *)dp_find_peer_by_addr(pdev_handle, mac_addr,
-			&local_id);
+	peer = (struct dp_peer *)dp_find_peer_by_addr(pdev_handle, mac_addr);
 
 	if (!peer) {
 		QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR,
@@ -7958,10 +7956,9 @@ dp_peer_update_pkt_capture_params(struct cdp_pdev *pdev,
 
 {
 	struct dp_peer *peer;
-	uint8_t local_id;
 
 	peer = (struct dp_peer *)dp_find_peer_by_addr(pdev,
-			peer_mac, &local_id);
+			peer_mac);
 
 	if (!peer) {
 		dp_err("Invalid Peer");
@@ -8808,11 +8805,10 @@ dp_enable_peer_based_pktlog(
 	char *mac_addr, uint8_t enb_dsb)
 {
 	struct dp_peer *peer;
-	uint8_t local_id;
 	struct dp_pdev *pdev = (struct dp_pdev *)txrx_pdev_handle;
 
 	peer = (struct dp_peer *)dp_find_peer_by_addr(txrx_pdev_handle,
-			mac_addr, &local_id);
+			mac_addr);
 
 	if (!peer) {
 		dp_err("Invalid Peer");
@@ -9753,14 +9749,12 @@ static struct cdp_mob_stats_ops dp_ops_mob_stats = {
  * dp_peer_get_ref_find_by_addr - get peer with addr by ref count inc
  * @dev: physical device instance
  * @peer_mac_addr: peer mac address
- * @local_id: local id for the peer
  * @debug_id: to track enum peer access
  *
  * Return: peer instance pointer
  */
 static inline void *
 dp_peer_get_ref_find_by_addr(struct cdp_pdev *dev, uint8_t *peer_mac_addr,
-			     uint8_t *local_id,
 			     enum peer_debug_id_type debug_id)
 {
 	struct dp_pdev *pdev = (struct dp_pdev *)dev;
@@ -9771,8 +9765,8 @@ dp_peer_get_ref_find_by_addr(struct cdp_pdev *dev, uint8_t *peer_mac_addr,
 	if (!peer)
 		return NULL;
 
-	*local_id = peer->local_id;
-	DP_TRACE(INFO, "%s: peer %pK id %d", __func__, peer, *local_id);
+	DP_TRACE(INFO, "%s: peer %pK mac: %pM", __func__, peer,
+		 peer->mac_addr.raw);
 
 	return peer;
 }

+ 7 - 21
dp/wifi3.0/dp_peer.c

@@ -1679,12 +1679,10 @@ static void dp_rx_tid_update_cb(struct dp_soc *soc, void *cb_ctxt,
  * dp_find_peer_by_addr - find peer instance by mac address
  * @dev: physical device instance
  * @peer_mac_addr: peer mac address
- * @local_id: local id for the peer
  *
  * Return: peer instance pointer
  */
-void *dp_find_peer_by_addr(struct cdp_pdev *dev, uint8_t *peer_mac_addr,
-		uint8_t *local_id)
+void *dp_find_peer_by_addr(struct cdp_pdev *dev, uint8_t *peer_mac_addr)
 {
 	struct dp_pdev *pdev = (struct dp_pdev *)dev;
 	struct dp_peer *peer;
@@ -1694,9 +1692,8 @@ void *dp_find_peer_by_addr(struct cdp_pdev *dev, uint8_t *peer_mac_addr,
 	if (!peer)
 		return NULL;
 
-	/* Multiple peer ids? How can know peer id? */
-	*local_id = peer->local_id;
-	dp_verbose_debug("peer %pK id %d", peer, *local_id);
+	dp_verbose_debug("peer %pK mac: %pM", peer,
+			 peer->mac_addr.raw);
 
 	/* ref_cnt is incremented inside dp_peer_find_hash_find().
 	 * Decrement it here.
@@ -3040,11 +3037,9 @@ QDF_STATUS dp_register_peer(struct cdp_pdev *pdev_handle,
 {
 	struct dp_peer *peer;
 	struct dp_pdev *pdev = (struct dp_pdev *)pdev_handle;
-	uint8_t peer_id;
 
 	peer = dp_find_peer_by_addr((struct cdp_pdev *)pdev,
-				    sta_desc->peer_addr.bytes,
-				    &peer_id);
+				    sta_desc->peer_addr.bytes);
 
 	if (!peer)
 		return QDF_STATUS_E_FAULT;
@@ -3073,11 +3068,8 @@ dp_clear_peer(struct cdp_pdev *pdev_handle, struct qdf_mac_addr peer_addr)
 {
 	struct dp_peer *peer;
 	struct dp_pdev *pdev = (struct dp_pdev *)pdev_handle;
-	/* peer_id to be removed */
-	uint8_t peer_id;
 
-	peer = dp_find_peer_by_addr((struct cdp_pdev *)pdev, peer_addr.bytes,
-				    &peer_id);
+	peer = dp_find_peer_by_addr((struct cdp_pdev *)pdev, peer_addr.bytes);
 	if (!peer)
 		return QDF_STATUS_E_FAULT;
 
@@ -3095,7 +3087,6 @@ dp_clear_peer(struct cdp_pdev *pdev_handle, struct qdf_mac_addr peer_addr)
  * @pdev - data path device instance
  * @vdev - virtual interface instance
  * @peer_addr - peer mac address
- * @peer_id - local peer id with target mac address
  *
  * Find peer by peer mac address within vdev
  *
@@ -3104,7 +3095,7 @@ dp_clear_peer(struct cdp_pdev *pdev_handle, struct qdf_mac_addr peer_addr)
  */
 void *dp_find_peer_by_addr_and_vdev(struct cdp_pdev *pdev_handle,
 		struct cdp_vdev *vdev_handle,
-		uint8_t *peer_addr, uint8_t *local_id)
+		uint8_t *peer_addr)
 {
 	struct dp_pdev *pdev = (struct dp_pdev *)pdev_handle;
 	struct dp_vdev *vdev = (struct dp_vdev *)vdev_handle;
@@ -3120,8 +3111,6 @@ void *dp_find_peer_by_addr_and_vdev(struct cdp_pdev *pdev_handle,
 		return NULL;
 	}
 
-	*local_id = peer->local_id;
-
 	/* ref_cnt is incremented inside dp_peer_find_hash_find().
 	 * Decrement it here.
 	 */
@@ -3188,8 +3177,6 @@ dp_get_vdev_by_peer_addr(struct cdp_pdev *pdev_handle,
 {
 	struct dp_pdev *pdev = (struct dp_pdev *)pdev_handle;
 	struct dp_peer *peer = NULL;
-	/* peer_id to be removed PEER_ID_CLEANUP */
-	uint8_t peer_id;
 
 	if (!pdev) {
 		QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_INFO_HIGH,
@@ -3198,8 +3185,7 @@ dp_get_vdev_by_peer_addr(struct cdp_pdev *pdev_handle,
 		return NULL;
 	}
 
-	peer = dp_find_peer_by_addr((struct cdp_pdev *)pdev, peer_addr.bytes,
-				    &peer_id);
+	peer = dp_find_peer_by_addr((struct cdp_pdev *)pdev, peer_addr.bytes);
 	if (!peer) {
 		QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_INFO_HIGH,
 			  "PDEV not found for peer_addr:" QDF_MAC_ADDR_STR,

+ 1 - 2
dp/wifi3.0/dp_rx_err.c

@@ -599,7 +599,6 @@ dp_rx_null_q_handle_invalid_peer_id_exception(struct dp_soc *soc,
 					      uint8_t *rx_tlv_hdr,
 					      qdf_nbuf_t nbuf)
 {
-	uint8_t local_id;
 	struct dp_peer *peer = NULL;
 	uint8_t *rx_pkt_hdr = hal_rx_pkt_hdr_get(rx_tlv_hdr);
 	struct dp_pdev *pdev = soc->pdev_list[pool_id];
@@ -612,7 +611,7 @@ dp_rx_null_q_handle_invalid_peer_id_exception(struct dp_soc *soc,
 	 */
 	if (wh)
 		peer = dp_find_peer_by_addr((struct cdp_pdev *)pdev,
-					    wh->i_addr2, &local_id);
+					    wh->i_addr2);
 	if (peer) {
 		dp_verbose_debug("MPDU sw_peer_id & ast_idx is corrupted");
 		hal_rx_dump_pkt_tlvs(soc->hal_soc, rx_tlv_hdr,

+ 1 - 2
target_if/crypto/src/target_if_crypto.c

@@ -117,7 +117,6 @@ QDF_STATUS target_if_crypto_set_key(struct wlan_objmgr_vdev *vdev,
 	struct cdp_vdev *txrx_vdev;
 	uint32_t pn[4] = {0, 0, 0, 0};
 	struct cdp_peer *peer = NULL;
-	uint8_t peer_id;
 	uint8_t def_tx_idx;
 	wmi_unified_t pdev_wmi_handle;
 	bool pairwise;
@@ -160,7 +159,7 @@ QDF_STATUS target_if_crypto_set_key(struct wlan_objmgr_vdev *vdev,
 		     &req->keyrsc[0], sizeof(uint64_t));
 	txrx_vdev = (struct cdp_vdev *)cdp_get_vdev_from_vdev_id(soc,
 				(struct cdp_pdev *)txrx_pdev, params.vdev_id);
-	peer = cdp_peer_find_by_addr(soc, txrx_pdev, req->macaddr, &peer_id);
+	peer = cdp_peer_find_by_addr(soc, txrx_pdev, req->macaddr);
 
 	if (!txrx_vdev) {
 		target_if_err("Invalid txrx vdev");