Selaa lähdekoodia

qcacmn: store peer_id instead of peer_ids array in dp_peer

In lithium a peer will have only single peer_id hence remove
peer_ids array from dp_peer structure

Change-Id: Ib98270b7fd98f1199b862e4608f990687914b7cc
Chaithanya Garrepalli 5 vuotta sitten
vanhempi
sitoutus
1d144f88bd

+ 14 - 16
dp/wifi3.0/dp_main.c

@@ -859,7 +859,7 @@ static bool dp_peer_get_ast_info_by_soc_wifi3
 	ast_entry_info->type = ast_entry->type;
 	ast_entry_info->pdev_id = ast_entry->pdev_id;
 	ast_entry_info->vdev_id = ast_entry->peer->vdev->vdev_id;
-	ast_entry_info->peer_id = ast_entry->peer->peer_ids[0];
+	ast_entry_info->peer_id = ast_entry->peer->peer_id;
 	qdf_mem_copy(&ast_entry_info->peer_mac_addr[0],
 		     &ast_entry->peer->mac_addr.raw[0],
 		     QDF_MAC_ADDR_SIZE);
@@ -904,7 +904,7 @@ static bool dp_peer_get_ast_info_by_pdevid_wifi3
 	ast_entry_info->type = ast_entry->type;
 	ast_entry_info->pdev_id = ast_entry->pdev_id;
 	ast_entry_info->vdev_id = ast_entry->peer->vdev->vdev_id;
-	ast_entry_info->peer_id = ast_entry->peer->peer_ids[0];
+	ast_entry_info->peer_id = ast_entry->peer->peer_id;
 	qdf_mem_copy(&ast_entry_info->peer_mac_addr[0],
 		     &ast_entry->peer->mac_addr.raw[0],
 		     QDF_MAC_ADDR_SIZE);
@@ -1236,7 +1236,7 @@ void dp_print_ast_stats(struct dp_soc *soc)
 					    ++num_entries,
 					    ase->mac_addr.raw,
 					    ase->peer->mac_addr.raw,
-					    ase->peer->peer_ids[0],
+					    ase->peer->peer_id,
 					    type[ase->type],
 					    ase->next_hop,
 					    ase->is_active,
@@ -1291,7 +1291,7 @@ static void dp_print_peer_table(struct dp_vdev *vdev)
 			       peer->tx_cap_enabled,
 			       peer->rx_cap_enabled,
 			       peer->delete_in_progress,
-			       peer->peer_ids[0]);
+			       peer->peer_id);
 	}
 }
 
@@ -4859,7 +4859,7 @@ static void dp_vdev_flush_peers(struct cdp_vdev *vdev_handle, bool unmap_only)
 	uint8_t i = 0, j = 0;
 	uint8_t m = 0, n = 0;
 
-	peer_ids = qdf_mem_malloc(soc->max_peers * sizeof(peer_ids[0]));
+	peer_ids = qdf_mem_malloc(soc->max_peers * sizeof(*peer_ids));
 	if (!peer_ids) {
 		dp_err("DP alloc failure - unable to flush peers");
 		return;
@@ -4880,10 +4880,9 @@ static void dp_vdev_flush_peers(struct cdp_vdev *vdev_handle, bool unmap_only)
 		if (!unmap_only && n < soc->max_peers)
 			peer_array[n++] = peer;
 
-		for (i = 0; i < MAX_NUM_PEER_ID_PER_PEER; i++)
-			if (peer->peer_ids[i] != HTT_INVALID_PEER)
-				if (j < soc->max_peers)
-					peer_ids[j++] = peer->peer_ids[i];
+		if (peer->peer_id != HTT_INVALID_PEER)
+			if (j < soc->max_peers)
+				peer_ids[j++] = peer->peer_id;
 	}
 	qdf_spin_unlock_bh(&soc->peer_ref_mutex);
 
@@ -5274,8 +5273,7 @@ dp_peer_create_wifi3(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
 		&peer->mac_addr.raw[0], peer_mac_addr, QDF_MAC_ADDR_SIZE);
 
 	/* initialize the peer_id */
-	for (i = 0; i < MAX_NUM_PEER_ID_PER_PEER; i++)
-		peer->peer_ids[i] = HTT_INVALID_PEER;
+	peer->peer_id = HTT_INVALID_PEER;
 
 	/* reset the ast index to flowid table */
 	dp_peer_reset_flowq_map(peer);
@@ -5337,7 +5335,7 @@ dp_peer_create_wifi3(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
 #if defined(FEATURE_PERPKT_INFO) && WDI_EVENT_ENABLE
 	dp_wdi_event_handler(WDI_EVENT_PEER_CREATE, pdev->soc,
 			     (void *)&peer_cookie,
-			     peer->peer_ids[0], WDI_NO_VAL, pdev->pdev_id);
+			     peer->peer_id, WDI_NO_VAL, pdev->pdev_id);
 #endif
 	if (soc->wlanstats_enabled) {
 		if (!peer_cookie.ctx) {
@@ -6021,7 +6019,7 @@ void dp_peer_unref_delete(struct dp_peer *peer)
 	 */
 	qdf_spin_lock_bh(&soc->peer_ref_mutex);
 	if (qdf_atomic_dec_and_test(&peer->ref_cnt)) {
-		peer_id = peer->peer_ids[0];
+		peer_id = peer->peer_id;
 		vdev_id = vdev->vdev_id;
 
 		/*
@@ -6070,7 +6068,7 @@ void dp_peer_unref_delete(struct dp_peer *peer)
 		dp_wdi_event_handler(WDI_EVENT_PEER_DESTROY,
 				     pdev->soc,
 				     (void *)&peer_cookie,
-				     peer->peer_ids[0],
+				     peer->peer_id,
 				     WDI_NO_VAL,
 				     pdev->pdev_id);
 #endif
@@ -7066,7 +7064,7 @@ dp_txrx_host_stats_clr(struct dp_vdev *vdev)
 
 #if defined(FEATURE_PERPKT_INFO) && WDI_EVENT_ENABLE
 		dp_wdi_event_handler(WDI_EVENT_UPDATE_DP_STATS, vdev->pdev->soc,
-				     &peer->stats,  peer->peer_ids[0],
+				     &peer->stats,  peer->peer_id,
 				     UPDATE_PEER_STATS, vdev->pdev->pdev_id);
 #endif
 	}
@@ -9421,7 +9419,7 @@ static QDF_STATUS dp_flush_rate_stats_req(struct cdp_soc_t *soc_hdl,
 				dp_wdi_event_handler(
 					WDI_EVENT_FLUSH_RATE_STATS_REQ,
 					soc, peer->wlanstats_ctx,
-					peer->peer_ids[0],
+					peer->peer_id,
 					WDI_NO_VAL, pdev_id);
 		}
 	}

+ 9 - 18
dp/wifi3.0/dp_peer.c

@@ -152,13 +152,10 @@ static int dp_peer_find_add_id_to_obj(
 	struct dp_peer *peer,
 	uint16_t peer_id)
 {
-	int i;
 
-	for (i = 0; i < MAX_NUM_PEER_ID_PER_PEER; i++) {
-		if (peer->peer_ids[i] == HTT_INVALID_PEER) {
-			peer->peer_ids[i] = peer_id;
-			return 0; /* success */
-		}
+	if (peer->peer_id == HTT_INVALID_PEER) {
+		peer->peer_id = peer_id;
+		return 0; /* success */
 	}
 	return QDF_STATUS_E_FAILURE; /* failure */
 }
@@ -533,7 +530,7 @@ static inline void dp_peer_map_ast(struct dp_soc *soc,
 	if (ast_entry || (peer->vdev && peer->vdev->proxysta_vdev)) {
 		if (soc->cdp_soc.ol_ops->peer_map_event) {
 			soc->cdp_soc.ol_ops->peer_map_event(
-			soc->ctrl_psoc, peer->peer_ids[0],
+			soc->ctrl_psoc, peer->peer_id,
 			hw_peer_id, vdev_id,
 			mac_addr, peer_type, ast_hash);
 		}
@@ -849,7 +846,7 @@ add_ast_entry:
 				soc->ctrl_psoc,
 				peer->vdev->vdev_id,
 				peer->mac_addr.raw,
-				peer->peer_ids[0],
+				peer->peer_id,
 				mac_addr,
 				next_node_mac,
 				flags,
@@ -1607,7 +1604,7 @@ static inline struct dp_peer *dp_peer_find_add_id(struct dp_soc *soc,
 			/* TBDXXX: assert for now */
 			QDF_ASSERT(0);
 		} else {
-			dp_peer_tid_peer_id_update(peer, peer->peer_ids[0]);
+			dp_peer_tid_peer_id_update(peer, peer->peer_id);
 		}
 
 		return peer;
@@ -1668,7 +1665,7 @@ dp_rx_peer_map_handler(struct dp_soc *soc, uint16_t peer_id,
 				return;
 
 			dp_alert("AST entry not found with peer %pK peer_id %u peer_mac %pM mac_addr %pM vdev_id %u next_hop %u",
-				 peer, peer->peer_ids[0],
+				 peer, peer->peer_id,
 				 peer->mac_addr.raw, peer_mac_addr, vdev_id,
 				 is_wds);
 
@@ -1750,7 +1747,6 @@ dp_rx_peer_unmap_handler(struct dp_soc *soc, uint16_t peer_id,
 			 uint8_t is_wds, uint32_t free_wds_count)
 {
 	struct dp_peer *peer;
-	uint8_t i;
 
 	peer = __dp_peer_find_by_id(soc, peer_id);
 
@@ -1771,7 +1767,7 @@ dp_rx_peer_unmap_handler(struct dp_soc *soc, uint16_t peer_id,
 			return;
 
 		dp_alert("AST entry not found with peer %pK peer_id %u peer_mac %pM mac_addr %pM vdev_id %u next_hop %u",
-			 peer, peer->peer_ids[0],
+			 peer, peer->peer_id,
 			 peer->mac_addr.raw, mac_addr, vdev_id,
 			 is_wds);
 
@@ -1784,12 +1780,7 @@ dp_rx_peer_unmap_handler(struct dp_soc *soc, uint16_t peer_id,
 		soc, peer_id, peer);
 
 	soc->peer_id_to_obj_map[peer_id] = NULL;
-	for (i = 0; i < MAX_NUM_PEER_ID_PER_PEER; i++) {
-		if (peer->peer_ids[i] == peer_id) {
-			peer->peer_ids[i] = HTT_INVALID_PEER;
-			break;
-		}
-	}
+	peer->peer_id = HTT_INVALID_PEER;
 
 	/*
 	 * Reset ast flow mapping table

+ 1 - 1
dp/wifi3.0/dp_rx.c

@@ -1647,7 +1647,7 @@ static void dp_rx_msdu_stats_update(struct dp_soc *soc,
 			return;
 
 		dp_wdi_event_handler(WDI_EVENT_UPDATE_DP_STATS, vdev->pdev->soc,
-				     &peer->stats, peer->peer_ids[0],
+				     &peer->stats, peer->peer_id,
 				     UPDATE_PEER_STATS,
 				     vdev->pdev->pdev_id);
 #endif

+ 2 - 2
dp/wifi3.0/dp_rx_defrag.c

@@ -212,7 +212,7 @@ void dp_rx_defrag_waitlist_flush(struct dp_soc *soc)
 				     rx_tid[rx_reorder->tid]);
 		qdf_spin_unlock_bh(&rx_reorder->tid_lock);
 
-		temp_peer = dp_peer_find_by_id(soc, peer->peer_ids[0]);
+		temp_peer = dp_peer_find_by_id(soc, peer->peer_id);
 		if (temp_peer == peer) {
 			qdf_spin_lock_bh(&rx_reorder->tid_lock);
 			dp_rx_reorder_flush_frag(peer, rx_reorder->tid);
@@ -1781,7 +1781,7 @@ QDF_STATUS dp_rx_defrag_add_last_frag(struct dp_soc *soc,
 	if (!rx_reorder_array_elem) {
 		dp_verbose_debug(
 			"peer id:%d mac: %pM drop rx frame!",
-			peer->peer_ids[0],
+			peer->peer_id,
 			peer->mac_addr.raw);
 		DP_STATS_INC(soc, rx.err.defrag_peer_uninit, 1);
 		qdf_nbuf_free(nbuf);

+ 7 - 7
dp/wifi3.0/dp_rx_mon_status.c

@@ -224,7 +224,7 @@ dp_rx_populate_cdp_indication_ppdu_user(struct dp_pdev *pdev,
 		}
 
 		peer = ast_entry->peer;
-		if (!peer || peer->peer_ids[0] == HTT_INVALID_PEER) {
+		if (!peer || peer->peer_id == HTT_INVALID_PEER) {
 			rx_stats_peruser->peer_id = HTT_INVALID_PEER;
 			continue;
 		}
@@ -279,7 +279,7 @@ dp_rx_populate_cdp_indication_ppdu_user(struct dp_pdev *pdev,
 
 		qdf_mem_copy(rx_stats_peruser->mac_addr,
 			     peer->mac_addr.raw, QDF_MAC_ADDR_SIZE);
-		rx_stats_peruser->peer_id = peer->peer_ids[0];
+		rx_stats_peruser->peer_id = peer->peer_id;
 		cdp_rx_ppdu->vdev_id = peer->vdev->vdev_id;
 		rx_stats_peruser->vdev_id = peer->vdev->vdev_id;
 		rx_stats_peruser->mu_ul_info_valid = 0;
@@ -376,7 +376,7 @@ dp_rx_populate_cdp_indication_ppdu(struct dp_pdev *pdev,
 		goto end;
 	}
 	peer = ast_entry->peer;
-	if (!peer || peer->peer_ids[0] == HTT_INVALID_PEER) {
+	if (!peer || peer->peer_id == HTT_INVALID_PEER) {
 		cdp_rx_ppdu->peer_id = HTT_INVALID_PEER;
 		cdp_rx_ppdu->num_users = 0;
 		goto end;
@@ -384,7 +384,7 @@ dp_rx_populate_cdp_indication_ppdu(struct dp_pdev *pdev,
 
 	qdf_mem_copy(cdp_rx_ppdu->mac_addr,
 		     peer->mac_addr.raw, QDF_MAC_ADDR_SIZE);
-	cdp_rx_ppdu->peer_id = peer->peer_ids[0];
+	cdp_rx_ppdu->peer_id = peer->peer_id;
 	cdp_rx_ppdu->vdev_id = peer->vdev->vdev_id;
 
 	cdp_rx_ppdu->ppdu_id = ppdu_info->com_info.ppdu_id;
@@ -1080,7 +1080,7 @@ dp_rx_mon_handle_cfr_mu_info(struct dp_pdev *pdev,
 		}
 
 		peer = ast_entry->peer;
-		if (!peer || peer->peer_ids[0] == HTT_INVALID_PEER) {
+		if (!peer || peer->peer_id == HTT_INVALID_PEER) {
 			rx_stats_peruser->peer_id = HTT_INVALID_PEER;
 			continue;
 		}
@@ -1456,12 +1456,12 @@ dp_rx_process_peer_based_pktlog(struct dp_soc *soc,
 		ast_entry = soc->ast_table[ast_index];
 		if (ast_entry) {
 			peer = ast_entry->peer;
-			if (peer && (peer->peer_ids[0] != HTT_INVALID_PEER)) {
+			if (peer && (peer->peer_id != HTT_INVALID_PEER)) {
 				if (peer->peer_based_pktlog_filter) {
 					dp_wdi_event_handler(
 							WDI_EVENT_RX_DESC, soc,
 							status_nbuf,
-							peer->peer_ids[0],
+							peer->peer_id,
 							WDI_NO_VAL, mac_id);
 				}
 			}

+ 4 - 4
dp/wifi3.0/dp_tx.c

@@ -1662,8 +1662,8 @@ int dp_tx_frame_is_drop(struct dp_vdev *vdev, uint8_t *srcmac, uint8_t *dstmac)
 	src_ast_entry = dp_peer_ast_hash_find_by_pdevid
 				(soc, srcmac, vdev->pdev->pdev_id);
 	if (dst_ast_entry && src_ast_entry) {
-		if (dst_ast_entry->peer->peer_ids[0] ==
-				src_ast_entry->peer->peer_ids[0])
+		if (dst_ast_entry->peer->peer_id ==
+				src_ast_entry->peer->peer_id)
 			return 1;
 	}
 
@@ -2396,7 +2396,7 @@ void dp_tx_nawds_handler(struct cdp_soc_t *soc, struct dp_vdev *vdev,
 	qdf_spin_lock_bh(&dp_soc->peer_ref_mutex);
 	TAILQ_FOREACH(peer, &vdev->peer_list, peer_list_elem) {
 		if (!peer->bss_peer && peer->nawds_enabled) {
-			peer_id = peer->peer_ids[0];
+			peer_id = peer->peer_id;
 			/* Multicast packets needs to be
 			 * dropped in case of intra bss forwarding
 			 */
@@ -2676,7 +2676,7 @@ void dp_tx_reinject_handler(struct dp_tx_desc_s *tx_desc, uint8_t *status)
 		DP_TX_FREE_SINGLE_BUF(vdev->pdev->soc, tx_desc->nbuf);
 	} else {
 		TAILQ_FOREACH(peer, &vdev->peer_list, peer_list_elem) {
-			if ((peer->peer_ids[0] != HTT_INVALID_PEER) &&
+			if ((peer->peer_id != HTT_INVALID_PEER) &&
 #ifdef WDS_VENDOR_EXTENSION
 			/*
 			 * . if 3-addr STA, then send on BSS Peer

+ 2 - 3
dp/wifi3.0/dp_types.h

@@ -2208,9 +2208,8 @@ struct dp_peer {
 
 	qdf_atomic_t ref_cnt;
 
-	/* TODO: See if multiple peer IDs are required in wifi3.0 */
-	/* peer ID(s) for this peer */
-	uint16_t peer_ids[MAX_NUM_PEER_ID_PER_PEER];
+	/* peer ID for this peer */
+	uint16_t peer_id;
 
 	union dp_align_mac_addr mac_addr;
 

+ 0 - 1
wlan_cfg/wlan_cfg.h

@@ -75,7 +75,6 @@
 #define MAX_IDLE_SCATTER_BUFS 16
 #define DP_MAX_IRQ_PER_CONTEXT 12
 #define MAX_HTT_METADATA_LEN 32
-#define MAX_NUM_PEER_ID_PER_PEER 8
 #define DP_MAX_TIDS 17
 #define DP_NON_QOS_TID 16
 #define DP_NULL_DATA_TID 17