ソースを参照

qcacmn: Support for dynamic mode chnge in NSS ofld

Update pdev id to lmac and target pdev id mapping in NSS

Change-Id: I111a975ad9ed3ef61753c8d9afe91083a8cca4aa
Mainak Sen 5 年 前
コミット
03b82f7365
2 ファイル変更22 行追加2 行削除
  1. 5 1
      dp/inc/cdp_txrx_ops.h
  2. 17 1
      dp/wifi3.0/dp_main.c

+ 5 - 1
dp/inc/cdp_txrx_ops.h

@@ -1140,7 +1140,11 @@ struct ol_if_ops {
 					    uint8_t *dest_macaddr,
 					    uint8_t *peer_macaddr,
 					    uint32_t flags);
-
+	int
+	(*pdev_update_lmac_n_target_pdev_id)(struct cdp_ctrl_objmgr_psoc *psoc,
+					    uint8_t *pdev_id,
+					    uint8_t *lmac_id,
+					    uint8_t *target_pdev_id);
 	bool (*is_roam_inprogress)(uint32_t vdev_id);
 	enum QDF_GLOBAL_MODE (*get_con_mode)(void);
 	/* TODO: Add any other control path calls required to OL_IF/WMA layer */

+ 17 - 1
dp/wifi3.0/dp_main.c

@@ -9218,7 +9218,8 @@ dp_soc_map_pdev_to_lmac
 	struct dp_pdev *pdev = dp_get_pdev_from_soc_pdev_id_wifi3(soc,
 								  pdev_id);
 	struct dp_vdev *vdev = NULL;
-	int hw_pdev_id;
+	uint8_t hw_pdev_id, mac_id;
+	int nss_config = wlan_cfg_get_dp_soc_nss_cfg(soc->wlan_cfg_ctx);
 
 	if (qdf_unlikely(!pdev))
 		return QDF_STATUS_E_FAILURE;
@@ -9241,6 +9242,21 @@ dp_soc_map_pdev_to_lmac
 		dp_get_target_pdev_id_for_host_pdev_id(soc,
 						       pdev->pdev_id);
 
+	if (mode_change) {
+		/*
+		 * When NSS offload is enabled, send pdev_id->lmac_id
+		 * and pdev_id to hw_pdev_id to NSS FW
+		 */
+		if (nss_config) {
+			mac_id = pdev->lmac_id;
+			if (soc->cdp_soc.ol_ops->pdev_update_lmac_n_target_pdev_id)
+				soc->cdp_soc.ol_ops->
+					pdev_update_lmac_n_target_pdev_id(
+					soc->ctrl_psoc,
+					&pdev_id, &mac_id, &hw_pdev_id);
+		}
+	}
+
 	qdf_spin_lock_bh(&pdev->vdev_list_lock);
 	TAILQ_FOREACH(vdev, &pdev->vdev_list, vdev_list_elem) {
 		HTT_TX_TCL_METADATA_PDEV_ID_SET(vdev->htt_tcl_metadata,