Browse Source

qcacmn: Add support for vdev/peer create/delete cfgmgr message support

Add support for vdev/peer create/delete cfgmgr message support

Change-Id: I623b1339fe706ff4204199ff9e8745ebcdc9cae2
CRs-Fixed: 3636364
Himanshu Batra 1 year ago
parent
commit
f6c56895c1
4 changed files with 61 additions and 2 deletions
  1. 50 0
      dp/inc/cdp_txrx_cmn.h
  2. 6 0
      dp/inc/cdp_txrx_ops.h
  3. 2 0
      dp/wifi3.0/dp_main.c
  4. 3 2
      dp/wifi3.0/dp_peer.c

+ 50 - 0
dp/inc/cdp_txrx_cmn.h

@@ -3476,5 +3476,55 @@ int cdp_cfgmgr_get_peer_info(struct cdp_soc_t *soc, uint8_t soc_id,
 
 
 	return soc->ops->cmn_drv_ops->cfgmgr_get_peer_info(soc, soc_id, ev_buf);
 	return soc->ops->cmn_drv_ops->cfgmgr_get_peer_info(soc, soc_id, ev_buf);
 }
 }
+
+/*
+ * cdp_cfgmgr_get_vdev_create_evt_info - get vdev create info of a soc for dpdk
+ * @soc: soc handle
+ * @vdev_id: vdev id
+ * @ev_buf: pointer to fill vdev info
+ *
+ * Return: 0 if info filled successful, error otherwise
+ */
+static inline
+int cdp_cfgmgr_get_vdev_create_evt_info(struct cdp_soc_t *soc, uint8_t vdev_id,
+					struct dpdk_wlan_vdev_create_info *ev_buf)
+{
+	if (!soc) {
+		dp_cdp_debug("Invalid Instance");
+		return -EINVAL;
+	}
+
+	if (!soc->ops->cmn_drv_ops ||
+	    !soc->ops->cmn_drv_ops->cfgmgr_get_vdev_create_evt_info)
+		return -EINVAL;
+
+	return soc->ops->cmn_drv_ops->cfgmgr_get_vdev_create_evt_info(
+						soc, vdev_id, ev_buf);
+}
+
+/*
+ * cdp_cfgmgr_get_peer_create_evt_info - get peer create info of a soc for dpdk
+ * @soc: soc handle
+ * @peer_id: peer id
+ * @ev_buf: pointer to fill peer info
+ *
+ * Return: 0 if info filled successful, error otherwise
+ */
+static inline
+int cdp_cfgmgr_get_peer_create_evt_info(struct cdp_soc_t *soc, uint16_t peer_id,
+					struct dpdk_wlan_peer_create_info *ev_buf)
+{
+	if (!soc) {
+		dp_cdp_debug("Invalid Instance");
+		return -EINVAL;
+	}
+
+	if (!soc->ops->cmn_drv_ops ||
+	    !soc->ops->cmn_drv_ops->cfgmgr_get_peer_create_evt_info)
+		return -EINVAL;
+
+	return soc->ops->cmn_drv_ops->cfgmgr_get_peer_create_evt_info(
+						soc, peer_id, ev_buf);
+}
 #endif
 #endif
 #endif /* _CDP_TXRX_CMN_H_ */
 #endif /* _CDP_TXRX_CMN_H_ */

+ 6 - 0
dp/inc/cdp_txrx_ops.h

@@ -758,6 +758,12 @@ struct cdp_cmn_ops {
 				    struct dpdk_wlan_vdev_info_event *ev_buf);
 				    struct dpdk_wlan_vdev_info_event *ev_buf);
 	int (*cfgmgr_get_peer_info)(struct cdp_soc_t *soc_hdl, uint8_t soc_id,
 	int (*cfgmgr_get_peer_info)(struct cdp_soc_t *soc_hdl, uint8_t soc_id,
 				    struct dpdk_wlan_peer_info *ev_buf);
 				    struct dpdk_wlan_peer_info *ev_buf);
+	int (*cfgmgr_get_vdev_create_evt_info)(
+				struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
+				struct dpdk_wlan_vdev_create_info *ev_buf);
+	int (*cfgmgr_get_peer_create_evt_info)(
+				struct cdp_soc_t *soc_hdl, uint16_t peer_id,
+				struct dpdk_wlan_peer_create_info *ev_buf);
 #endif
 #endif
 };
 };
 
 

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

@@ -12347,6 +12347,8 @@ static struct cdp_cmn_ops dp_ops_cmn = {
 	.cfgmgr_get_soc_info = dp_cfgmgr_get_soc_info,
 	.cfgmgr_get_soc_info = dp_cfgmgr_get_soc_info,
 	.cfgmgr_get_vdev_info = dp_cfgmgr_get_vdev_info,
 	.cfgmgr_get_vdev_info = dp_cfgmgr_get_vdev_info,
 	.cfgmgr_get_peer_info = dp_cfgmgr_get_peer_info,
 	.cfgmgr_get_peer_info = dp_cfgmgr_get_peer_info,
+	.cfgmgr_get_vdev_create_evt_info = dp_cfgmgr_get_vdev_create_evt_info,
+	.cfgmgr_get_peer_create_evt_info = dp_cfgmgr_get_peer_create_evt_info,
 #endif
 #endif
 };
 };
 
 

+ 3 - 2
dp/wifi3.0/dp_peer.c

@@ -1531,7 +1531,7 @@ static inline QDF_STATUS dp_peer_map_ast(struct dp_soc *soc,
 	txrx_ast_free_cb cb = NULL;
 	txrx_ast_free_cb cb = NULL;
 	QDF_STATUS err = QDF_STATUS_SUCCESS;
 	QDF_STATUS err = QDF_STATUS_SUCCESS;
 
 
-	if (soc->ast_offload_support)
+	if (soc->ast_offload_support && !wlan_cfg_get_dp_soc_dpdk_cfg(soc->ctrl_psoc))
 		return QDF_STATUS_SUCCESS;
 		return QDF_STATUS_SUCCESS;
 
 
 	if (!peer) {
 	if (!peer) {
@@ -1611,7 +1611,8 @@ static inline QDF_STATUS dp_peer_map_ast(struct dp_soc *soc,
 				  ase_list_elem);
 				  ase_list_elem);
 	}
 	}
 
 
-	if (ast_entry || (peer->vdev && peer->vdev->proxysta_vdev)) {
+	if (ast_entry || (peer->vdev && peer->vdev->proxysta_vdev) ||
+	    wlan_cfg_get_dp_soc_dpdk_cfg(soc->ctrl_psoc)) {
 		if (soc->cdp_soc.ol_ops->peer_map_event) {
 		if (soc->cdp_soc.ol_ops->peer_map_event) {
 			soc->cdp_soc.ol_ops->peer_map_event(
 			soc->cdp_soc.ol_ops->peer_map_event(
 			soc->ctrl_psoc, peer->peer_id,
 			soc->ctrl_psoc, peer->peer_id,