Browse Source

qcacmn: Set Mcast control parameter for isolation mode

Set Mcast control parameter for isolation mode.

Change-Id: Id582e89d897af609c8584daca774d36f7d889d8c
Rathees kumar Chinannan 3 years ago
parent
commit
b0f35c7a6c
4 changed files with 16 additions and 2 deletions
  1. 4 0
      dp/inc/cdp_txrx_cmn_struct.h
  2. 7 2
      dp/wifi3.0/be/dp_be.c
  3. 3 0
      dp/wifi3.0/dp_main.c
  4. 2 0
      dp/wifi3.0/dp_types.h

+ 4 - 0
dp/inc/cdp_txrx_cmn_struct.h

@@ -1178,6 +1178,7 @@ enum cdp_peer_param_type {
  * @CDP_SET_ATF_STATS_ENABLE: set ATF stats flag
  * @CDP_CONFIG_SPECIAL_VAP: Configure Special vap
  * @CDP_RESET_SCAN_SPCL_VAP_STATS_ENABLE: Enable scan spcl vap stats reset
+ * @CDP_ISOLATION: set isolation flag
  */
 enum cdp_pdev_param_type {
 	CDP_CONFIG_DEBUG_SNIFFER,
@@ -1211,6 +1212,7 @@ enum cdp_pdev_param_type {
 	CDP_CONFIG_SPECIAL_VAP,
 	CDP_RESET_SCAN_SPCL_VAP_STATS_ENABLE,
 	CDP_CONFIG_ENHANCED_STATS_ENABLE,
+	CDP_ISOLATION,
 };
 
 /*
@@ -1275,6 +1277,7 @@ enum cdp_pdev_param_type {
  * @cdp_pdev_param_monitor_chan: monitor channel
  * @cdp_pdev_param_atf_stats_enable: ATF stats enable
  * @cdp_pdev_param_config_special_vap: Configure Special vap
+ * @cdp_pdev_param_isolation : set isolation mode
  *
  * @cdp_psoc_param_en_rate_stats: set rate stats enable/disable
  * @cdp_psoc_param_en_nss_cfg: set nss cfg
@@ -1350,6 +1353,7 @@ typedef union cdp_config_param_t {
 	bool cdp_pdev_param_config_special_vap;
 	bool cdp_pdev_param_reset_scan_spcl_vap_stats_enable;
 	bool cdp_pdev_param_enhanced_stats_enable;
+	bool cdp_pdev_param_isolation;
 
 	/* psoc params */
 	bool cdp_psoc_param_en_rate_stats;

+ 7 - 2
dp/wifi3.0/be/dp_be.c

@@ -565,6 +565,7 @@ static QDF_STATUS dp_vdev_attach_be(struct dp_soc *soc, struct dp_vdev *vdev)
 {
 	struct dp_soc_be *be_soc = dp_get_be_soc_from_dp_soc(soc);
 	struct dp_vdev_be *be_vdev = dp_get_be_vdev_from_dp_vdev(vdev);
+	struct dp_pdev *pdev = vdev->pdev;
 
 	be_vdev->vdev_id_check_en = DP_TX_VDEV_ID_CHECK_ENABLE;
 
@@ -582,8 +583,12 @@ static QDF_STATUS dp_vdev_attach_be(struct dp_soc *soc, struct dp_vdev *vdev)
 					vdev->vdev_id,
 					DP_AST_AGING_TIMER_DEFAULT_MS);
 
-		hal_tx_vdev_mcast_ctrl_set(soc->hal_soc, vdev->vdev_id,
-					   HAL_TX_MCAST_CTRL_MEC_NOTIFY);
+		if (pdev->isolation)
+			hal_tx_vdev_mcast_ctrl_set(soc->hal_soc, vdev->vdev_id,
+						   HAL_TX_MCAST_CTRL_FW_EXCEPTION);
+		else
+			hal_tx_vdev_mcast_ctrl_set(soc->hal_soc, vdev->vdev_id,
+						   HAL_TX_MCAST_CTRL_MEC_NOTIFY);
 	}
 
 	dp_mlo_init_ptnr_list(vdev);

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

@@ -9407,6 +9407,9 @@ static QDF_STATUS dp_set_pdev_param(struct cdp_soc_t *cdp_soc, uint8_t pdev_id,
 	case CDP_CONFIG_ENHANCED_STATS_ENABLE:
 		pdev->enhanced_stats_en = val.cdp_pdev_param_enhanced_stats_enable;
 		break;
+	case CDP_ISOLATION:
+		pdev->isolation = val.cdp_pdev_param_isolation;
+		break;
 	default:
 		return QDF_STATUS_E_INVAL;
 	}

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

@@ -2833,6 +2833,8 @@ struct dp_pdev {
 #ifdef WLAN_FEATURE_11BE_MLO
 	struct dp_mlo_sync_timestamp timestamp;
 #endif
+	/* Is isolation mode enabled */
+	bool  isolation;
 };
 
 struct dp_peer;