Browse Source

Revert "qcacmn: Add support for HMWDS add and reset cmds in Beryllium"

This reverts commit Iaa110ba26a477fc0b77647a712c377029b038940.

Change-Id: Ifed1cf1e73ac03a09fc03acdc273958c9789f8a8
CRs-Fixed: 3458091
Vignesh C 2 years ago
parent
commit
fa0f65caaa
5 changed files with 30 additions and 136 deletions
  1. 8 8
      dp/inc/cdp_txrx_cmn.h
  2. 4 6
      dp/inc/cdp_txrx_ops.h
  3. 9 10
      dp/wifi3.0/dp_main.c
  4. 9 96
      dp/wifi3.0/dp_peer.c
  5. 0 16
      dp/wifi3.0/dp_peer.h

+ 8 - 8
dp/inc/cdp_txrx_cmn.h

@@ -688,6 +688,7 @@ static inline QDF_STATUS cdp_peer_ast_delete_by_pdev
  * @vdev_id: vdev id
  * @dest_mac: AST entry mac address to delete
  * @type: cdp_txrx_ast_entry_type to send to FW
+ * @delete_in_fw: flag to indicate AST entry deletion in FW
  *
  * Return: QDF_STATUS_SUCCESS if ast entry found with ast_mac_addr and delete
  *         is sent
@@ -695,7 +696,7 @@ static inline QDF_STATUS cdp_peer_ast_delete_by_pdev
  */
 static inline QDF_STATUS cdp_peer_HMWDS_ast_delete
 	(ol_txrx_soc_handle soc, uint8_t vdev_id, uint8_t *dest_mac,
-	 uint8_t type)
+	 uint8_t type, uint8_t delete_in_fw)
 {
 	if (!soc || !soc->ops) {
 		dp_cdp_debug("Invalid Instance:");
@@ -711,7 +712,8 @@ static inline QDF_STATUS cdp_peer_HMWDS_ast_delete
 					(soc,
 					 vdev_id,
 					 dest_mac,
-					 type);
+					 type,
+					 delete_in_fw);
 }
 
 static inline int cdp_peer_add_ast
@@ -739,7 +741,7 @@ static inline int cdp_peer_add_ast
 
 static inline QDF_STATUS cdp_peer_reset_ast
 	(ol_txrx_soc_handle soc, uint8_t *wds_macaddr, uint8_t *peer_macaddr,
-	 uint8_t vdev_id, enum cdp_txrx_ast_entry_type type)
+	 uint8_t vdev_id)
 {
 
 	if (!soc || !soc->ops) {
@@ -752,12 +754,11 @@ static inline QDF_STATUS cdp_peer_reset_ast
 		return QDF_STATUS_E_FAILURE;
 
 	return soc->ops->cmn_drv_ops->txrx_peer_reset_ast(soc, wds_macaddr,
-						   peer_macaddr, vdev_id, type);
+						   peer_macaddr, vdev_id);
 }
 
 static inline QDF_STATUS cdp_peer_reset_ast_table
-	(ol_txrx_soc_handle soc, uint8_t vdev_id,
-	enum cdp_txrx_ast_entry_type type)
+	(ol_txrx_soc_handle soc, uint8_t vdev_id)
 {
 	if (!soc || !soc->ops) {
 		dp_cdp_debug("Invalid Instance:");
@@ -769,8 +770,7 @@ static inline QDF_STATUS cdp_peer_reset_ast_table
 	    !soc->ops->cmn_drv_ops->txrx_peer_reset_ast_table)
 		return QDF_STATUS_E_FAILURE;
 
-	return soc->ops->cmn_drv_ops->txrx_peer_reset_ast_table(soc, vdev_id,
-						   type);
+	return soc->ops->cmn_drv_ops->txrx_peer_reset_ast_table(soc, vdev_id);
 }
 
 static inline void cdp_peer_flush_ast_table

+ 4 - 6
dp/inc/cdp_txrx_ops.h

@@ -281,7 +281,7 @@ struct cdp_cmn_ops {
 
 	QDF_STATUS (*txrx_peer_HMWDS_ast_delete)
 		(ol_txrx_soc_handle soc, uint8_t vdev_id, uint8_t *dest_mac,
-		 uint8_t type);
+		 uint8_t type, uint8_t delete_in_fw);
 
 	QDF_STATUS
 	(*txrx_peer_delete)(struct cdp_soc_t *soc, uint8_t vdev_id,
@@ -596,12 +596,10 @@ struct cdp_cmn_ops {
 
 	QDF_STATUS (*txrx_peer_reset_ast)
 		(ol_txrx_soc_handle soc, uint8_t *ast_macaddr,
-		 uint8_t *peer_macaddr, uint8_t vdev_id,
-		 enum cdp_txrx_ast_entry_type type);
+		 uint8_t *peer_macaddr, uint8_t vdev_id);
 
-	QDF_STATUS (*txrx_peer_reset_ast_table)
-		(ol_txrx_soc_handle soc, uint8_t vdev_id,
-		 enum cdp_txrx_ast_entry_type type);
+	QDF_STATUS (*txrx_peer_reset_ast_table)(ol_txrx_soc_handle soc,
+						uint8_t vdev_id);
 
 	void (*txrx_peer_flush_ast_table)(ol_txrx_soc_handle soc);
 	void (*txrx_set_ba_aging_timeout)(struct cdp_soc_t *soc_handle,

+ 9 - 10
dp/wifi3.0/dp_main.c

@@ -581,15 +581,13 @@ dp_peer_reset_ast_entries(struct dp_soc *soc, struct dp_peer *peer, void *arg)
  * @wds_macaddr:	WDS entry MAC Address
  * @peer_mac_addr:	WDS entry MAC Address
  * @vdev_id:		id of vdev handle
- * @type:		Type of AST entry
  *
  * Return: QDF_STATUS
  */
 static QDF_STATUS dp_wds_reset_ast_wifi3(struct cdp_soc_t *soc_hdl,
 					 uint8_t *wds_macaddr,
 					 uint8_t *peer_mac_addr,
-					 uint8_t vdev_id,
-					 enum cdp_txrx_ast_entry_type type)
+					 uint8_t vdev_id)
 {
 	struct dp_soc *soc = (struct dp_soc *)soc_hdl;
 	struct dp_ast_entry *ast_entry = NULL;
@@ -597,7 +595,7 @@ static QDF_STATUS dp_wds_reset_ast_wifi3(struct cdp_soc_t *soc_hdl,
 	struct dp_pdev *pdev;
 	struct dp_vdev *vdev;
 
-	if (soc->ast_offload_support && type != CDP_TXRX_AST_TYPE_WDS_HM)
+	if (soc->ast_offload_support)
 		return QDF_STATUS_E_FAILURE;
 
 	vdev = dp_vdev_get_ref_by_id(soc, vdev_id, DP_MOD_ID_CDP);
@@ -641,17 +639,16 @@ static QDF_STATUS dp_wds_reset_ast_wifi3(struct cdp_soc_t *soc_hdl,
  * dp_wds_reset_ast_table_wifi3() - Reset the is_active param for all ast entry
  * @soc_hdl:		Datapath SOC handle
  * @vdev_id:		id of vdev object
- * @type:		Type of AST entry
  *
  * Return: QDF_STATUS
  */
 static QDF_STATUS
 dp_wds_reset_ast_table_wifi3(struct cdp_soc_t  *soc_hdl,
-			     uint8_t vdev_id, enum cdp_txrx_ast_entry_type type)
+			     uint8_t vdev_id)
 {
 	struct dp_soc *soc = (struct dp_soc *) soc_hdl;
 
-	if (soc->ast_offload_support && type != CDP_TXRX_AST_TYPE_WDS_HM)
+	if (soc->ast_offload_support)
 		return QDF_STATUS_SUCCESS;
 
 	qdf_spin_lock_bh(&soc->ast_lock);
@@ -975,6 +972,7 @@ static QDF_STATUS dp_peer_ast_entry_del_by_pdev(struct cdp_soc_t *soc_handle,
  * @vdev_id: vdev id
  * @wds_macaddr: AST entry mac address to delete
  * @type: cdp_txrx_ast_entry_type to send to FW
+ * @delete_in_fw: flag to indicate AST entry deletion in FW
  *
  * Return: QDF_STATUS_SUCCESS if ast entry found with ast_mac_addr and delete
  *         is sent
@@ -983,13 +981,14 @@ static QDF_STATUS dp_peer_ast_entry_del_by_pdev(struct cdp_soc_t *soc_handle,
 static QDF_STATUS dp_peer_HMWDS_ast_entry_del(struct cdp_soc_t *soc_handle,
 					      uint8_t vdev_id,
 					      uint8_t *wds_macaddr,
-					      uint8_t type)
+					      uint8_t type,
+					      uint8_t delete_in_fw)
 {
 	struct dp_soc *soc = (struct dp_soc *)soc_handle;
 
 	if (soc->ast_offload_support) {
-		dp_wds_reset_ast_wifi3(soc_handle, wds_macaddr, NULL, vdev_id,
-				       type);
+		dp_del_wds_entry_wrapper(soc, vdev_id, wds_macaddr, type,
+					 delete_in_fw);
 		return QDF_STATUS_SUCCESS;
 	}
 

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

@@ -201,14 +201,11 @@ dp_peer_ast_free_in_unmap_supported(struct dp_soc *soc,
 	 * for the peer free ast entry from here only in this case
 	 */
 
-	switch (ast_entry->type) {
-	case CDP_TXRX_AST_TYPE_WDS_HM_SEC:
-	case CDP_TXRX_AST_TYPE_SELF:
-	case CDP_TXRX_AST_TYPE_WDS_HM:
-		return false;
-	default:
+	if ((ast_entry->type != CDP_TXRX_AST_TYPE_WDS_HM_SEC) &&
+	    (ast_entry->type != CDP_TXRX_AST_TYPE_SELF))
 		return true;
-	}
+
+	return false;
 }
 #else
 static inline bool
@@ -1560,71 +1557,6 @@ void dp_peer_free_hmwds_cb(struct cdp_ctrl_objmgr_psoc *ctrl_psoc,
 	qdf_mem_free(cookie);
 }
 
-QDF_STATUS dp_peer_add_ast_hmwds(struct dp_soc *soc,
-				 struct dp_peer *peer,
-				 uint8_t *mac_addr,
-				 enum cdp_txrx_ast_entry_type type,
-				 uint32_t flags)
-{
-	struct dp_ast_entry *ast_entry = NULL;
-	struct dp_vdev *vdev = NULL;
-	struct dp_ast_entry *tmp_ast_entry;
-	int status = 0;
-
-	vdev = peer->vdev;
-	if (!vdev) {
-		dp_peer_err("%pK: Peers vdev is NULL", soc);
-		QDF_ASSERT(0);
-		return QDF_STATUS_E_INVAL;
-	}
-	qdf_spin_lock_bh(&soc->ast_lock);
-
-	/* Check if the mac_addr is already been part of ast_list_elem
-	 * Return STATUS Already if found
-	 */
-	DP_PEER_ITERATE_ASE_LIST(peer, ast_entry, tmp_ast_entry) {
-		if ((ast_entry->type == CDP_TXRX_AST_TYPE_WDS_HM) &&
-		    (!ast_entry->delete_in_progress) &&
-		    (qdf_mem_cmp(mac_addr, ast_entry->mac_addr.raw,
-				 QDF_MAC_ADDR_SIZE) == 0)) {
-			qdf_spin_unlock_bh(&soc->ast_lock);
-			return QDF_STATUS_E_ALREADY;
-		}
-	}
-	ast_entry = (struct dp_ast_entry *)
-			qdf_mem_malloc(sizeof(struct dp_ast_entry));
-
-	if (!ast_entry) {
-		qdf_spin_unlock_bh(&soc->ast_lock);
-		dp_peer_err("%pK: fail to allocate ast_entry", soc);
-		QDF_ASSERT(0);
-		return QDF_STATUS_E_NOMEM;
-	}
-
-	qdf_mem_copy(&ast_entry->mac_addr.raw[0], mac_addr, QDF_MAC_ADDR_SIZE);
-	ast_entry->pdev_id = vdev->pdev->pdev_id;
-	ast_entry->is_mapped = false;
-	ast_entry->delete_in_progress = false;
-	ast_entry->peer_id = peer->peer_id;
-	ast_entry->next_hop = 0;
-	ast_entry->vdev_id = vdev->vdev_id;
-	ast_entry->type = CDP_TXRX_AST_TYPE_WDS_HM;
-	ast_entry->is_active = TRUE;
-	DP_STATS_INC(soc, ast.added, 1);
-	dp_peer_ast_hash_add(soc, ast_entry);
-	soc->num_ast_entries++;
-
-	TAILQ_INSERT_TAIL(&peer->ast_entry_list, ast_entry, ase_list_elem);
-
-	status = dp_update_wds_entry_wrapper(soc,
-					     peer,
-					     ast_entry->mac_addr.raw,
-					     flags);
-
-	qdf_spin_unlock_bh(&soc->ast_lock);
-	return qdf_status_from_os_return(status);
-}
-
 QDF_STATUS dp_peer_add_ast(struct dp_soc *soc,
 			   struct dp_peer *peer,
 			   uint8_t *mac_addr,
@@ -1640,17 +1572,8 @@ QDF_STATUS dp_peer_add_ast(struct dp_soc *soc,
 	bool is_peer_found = false;
 	int status = 0;
 
-	if (soc->ast_offload_support) {
-		if (type == CDP_TXRX_AST_TYPE_WDS_HM) {
-			return dp_peer_add_ast_hmwds(soc,
-						     peer,
-						     mac_addr,
-						     flags,
-						     type);
-		} else {
-			return QDF_STATUS_E_INVAL;
-		}
-	}
+	if (soc->ast_offload_support)
+		return QDF_STATUS_E_INVAL;
 
 	vdev = peer->vdev;
 	if (!vdev) {
@@ -1934,15 +1857,14 @@ void dp_peer_del_ast(struct dp_soc *soc, struct dp_ast_entry *ast_entry)
 {
 	struct dp_peer *peer = NULL;
 
+	if (soc->ast_offload_support)
+		return;
+
 	if (!ast_entry) {
 		dp_info_rl("NULL AST entry");
 		return;
 	}
 
-	if (soc->ast_offload_support && ast_entry->type !=
-			CDP_TXRX_AST_TYPE_WDS_HM)
-		return;
-
 	if (ast_entry->delete_in_progress) {
 		dp_info_rl("AST entry deletion in progress mac addr:"QDF_MAC_ADDR_FMT" type:%d",
 			  QDF_MAC_ADDR_REF(ast_entry->mac_addr.raw),
@@ -2138,15 +2060,6 @@ struct dp_ast_entry *dp_peer_ast_hash_find_by_vdevid(struct dp_soc *soc,
 	return NULL;
 }
 
-QDF_STATUS dp_peer_add_ast_hmwds(struct dp_soc *soc,
-				 struct dp_peer *peer,
-				 uint8_t *mac_addr,
-				 enum cdp_txrx_ast_entry_type type,
-				 uint32_t flags)
-{
-	return QDF_STATUS_E_FAILURE;
-}
-
 QDF_STATUS dp_peer_add_ast(struct dp_soc *soc,
 			   struct dp_peer *peer,
 			   uint8_t *mac_addr,

+ 0 - 16
dp/wifi3.0/dp_peer.h

@@ -710,22 +710,6 @@ QDF_STATUS dp_peer_add_ast(struct dp_soc *soc, struct dp_peer *peer,
 			   uint8_t *mac_addr, enum cdp_txrx_ast_entry_type type,
 			   uint32_t flags);
 
-/**
- * dp_peer_add_ast_hmwds() - Allocate and add hmwds AST entry into peer list
- * @soc: SoC handle
- * @peer: peer to which ast node belongs
- * @mac_addr: MAC address of ast node
- * @type: AST entry type
- * @flags: AST configuration flags
- *
- * This function adds new HMWDS AST entry into peer AST list
- *
- * Return: QDF_STATUS code
- */
-QDF_STATUS dp_peer_add_ast_hmwds(struct dp_soc *soc, struct dp_peer *peer,
-				 uint8_t *mac_addr,
-				 enum cdp_txrx_ast_entry_type type,
-				 uint32_t flags);
 /**
  * dp_peer_del_ast() - Delete and free AST entry
  * @soc: SoC handle