Merge "qca-wifi: Extract Peer Ratecode list event data"
diff --git a/dp/inc/cdp_txrx_extd_struct.h b/dp/inc/cdp_txrx_extd_struct.h
index b1342fa..0746e27 100644
--- a/dp/inc/cdp_txrx_extd_struct.h
+++ b/dp/inc/cdp_txrx_extd_struct.h
@@ -40,6 +40,9 @@
  *       <enum 1 bw_40_MHz>
  *       <enum 2 bw_80_MHz>
  *       <enum 3 bw_160_MHz>
+ * @ofdma_info_valid: RU info valid
+ * @ofdma_ru_start_index: RU index number(0-73)
+ * @ofdma_ru_width: size of RU in units of 1(26tone)RU
  * @nss: NSS 1,2, ...8
  * @mcs: MCS index
  * @preamble: preamble
diff --git a/dp/wifi3.0/dp_rx_mon_feature.c b/dp/wifi3.0/dp_rx_mon_feature.c
index 657b05e..c8b4704 100644
--- a/dp/wifi3.0/dp_rx_mon_feature.c
+++ b/dp/wifi3.0/dp_rx_mon_feature.c
@@ -74,6 +74,7 @@
 	uint32_t user)
 {
 	int i;
+	struct mon_rx_user_status *rx_user_status;
 
 	cdp_mpdu_info->ppdu_id = ppdu_info->com_info.ppdu_id;
 	cdp_mpdu_info->channel = ppdu_info->rx_status.chan_num;
@@ -92,8 +93,16 @@
 	cdp_mpdu_info->nf = ppdu_info->rx_status.chan_noise_floor;
 
 	if (ppdu_info->rx_status.reception_type == HAL_RX_TYPE_MU_OFDMA) {
-		cdp_mpdu_info->nss = ppdu_info->rx_user_status[user].nss;
-		cdp_mpdu_info->mcs = ppdu_info->rx_user_status[user].mcs;
+		rx_user_status =  &ppdu_info->rx_user_status[user];
+		cdp_mpdu_info->nss = rx_user_status->nss;
+		cdp_mpdu_info->mcs = rx_user_status->mcs;
+		cdp_mpdu_info->ofdma_info_valid =
+				rx_user_status->ofdma_info_valid;
+		cdp_mpdu_info->ofdma_ru_start_index =
+				rx_user_status->dl_ofdma_ru_start_index;
+		cdp_mpdu_info->ofdma_ru_width =
+				rx_user_status->dl_ofdma_ru_width;
+
 	} else {
 		cdp_mpdu_info->nss = ppdu_info->rx_status.nss;
 		cdp_mpdu_info->mcs = ppdu_info->rx_status.mcs;
diff --git a/target_if/cfr/src/target_if_cfr_wifi2_0.c b/target_if/cfr/src/target_if_cfr_wifi2_0.c
index 88e3a8a..8d3b5a8 100644
--- a/target_if/cfr/src/target_if_cfr_wifi2_0.c
+++ b/target_if/cfr/src/target_if_cfr_wifi2_0.c
@@ -239,7 +239,7 @@
 		return QDF_STATUS_E_FAILURE;
 
 	target_type = target_if_cfr_get_target_type(psoc);
-	tgt_hdl = (struct target_psoc_info *)wlan_psoc_get_tgt_if_handle(psoc);
+	tgt_hdl = wlan_psoc_get_tgt_if_handle(psoc);
 
 	if (tgt_hdl)
 		info = (&(tgt_hdl->info));
diff --git a/umac/dfs/core/src/misc/dfs_zero_cac.c b/umac/dfs/core/src/misc/dfs_zero_cac.c
index 6318741..f9cf7ef 100644
--- a/umac/dfs/core/src/misc/dfs_zero_cac.c
+++ b/umac/dfs/core/src/misc/dfs_zero_cac.c
@@ -508,6 +508,7 @@
 	uint8_t cur_dfs_idx = 0;
 	uint8_t vhtop_ch_freq_seg1, vhtop_ch_freq_seg2;
 	int i;
+	struct dfs_agile_cac_params adfs_param;
 
 	psoc = wlan_pdev_get_psoc(dfs->dfs_pdev_obj);
 	dfs_soc_obj = dfs->dfs_soc_obj;
@@ -551,10 +552,15 @@
 	}
 
 	if (ch_freq) {
+		adfs_param.precac_chan = ch_freq;
+		adfs_param.precac_chwidth = dfs->dfs_precac_chwidth;
+		dfs_start_agile_precac_timer(temp_dfs,
+					     dfs->dfs_soc_obj->ocac_status,
+					     &adfs_param);
 		qdf_info("%s : %d ADFS channel set request sent for pdev: %pK ch_freq: %d",
 			 __func__, __LINE__, pdev, ch_freq);
 		if (dfs_tx_ops && dfs_tx_ops->dfs_agile_ch_cfg_cmd)
-			dfs_tx_ops->dfs_agile_ch_cfg_cmd(pdev, &ch_freq);
+			dfs_tx_ops->dfs_agile_ch_cfg_cmd(pdev, &adfs_param);
 		else
 			dfs_err(NULL, WLAN_DEBUG_DFS_ALWAYS,
 				"dfs_tx_ops=%pK", dfs_tx_ops);
@@ -930,6 +936,7 @@
 			       uint32_t center_freq)
 {
 	struct wlan_dfs *dfs = NULL;
+	struct dfs_agile_cac_params adfs_param;
 
 	dfs = wlan_pdev_get_dfs_obj(pdev);
 
@@ -950,7 +957,11 @@
 		 * TRIGGER agile precac timer with 0sec timeout
 		 * with ocac_status 0 for old pdev
 		 */
-		dfs_start_agile_precac_timer(dfs, center_freq, ocac_status);
+		adfs_param.precac_chan = center_freq;
+		adfs_param.precac_chwidth = dfs->dfs_precac_chwidth;
+		dfs_start_agile_precac_timer(dfs,
+					     ocac_status,
+					     &adfs_param);
 	} else {
 		dfs_debug(NULL, WLAN_DEBUG_DFS_ALWAYS, "Error Unknown");
 	}
@@ -1627,28 +1638,94 @@
 }
 
 #ifdef QCA_SUPPORT_AGILE_DFS
-#define DEFAULT_CAC_DURATION 62
-void dfs_start_agile_precac_timer(struct wlan_dfs *dfs, uint8_t precac_chan,
-				  uint8_t ocac_status)
+/* FIND_IF_OVERLAP_WITH_WEATHER_RANGE() - Find if the given channel range
+ * overlaps with the weather channel range.
+ * @first_ch: First subchannel of the channel range.
+ * @last_ch:  Last subchannel of the channel range.
+ *
+ * Algorithm:
+ * If the first channel of given range is left of last weather channel
+ * and if the last channel of given range is right of the first weather channel,
+ * return true, else false.
+ */
+#define FIND_IF_OVERLAP_WITH_WEATHER_RANGE(first_ch, last_ch) \
+((first_ch <= WEATHER_CHAN_START) && (WEATHER_CHAN_END <= last_ch))
+
+/* dfs_is_precac_on_weather_channel() - Given a channel number, find if
+ * it's a weather radar channel.
+ * @dfs: Pointer to WLAN_DFS structure.
+ * @chwidth: PreCAC channel width enum.
+ * @precac_chan: Channel for preCAC.
+ *
+ * Based on the precac_width, find the first and last subchannels of the given
+ * preCAC channel and check if this range overlaps with weather channel range.
+ *
+ * Return: True if weather channel, else false.
+ */
+static bool dfs_is_precac_on_weather_channel(struct wlan_dfs *dfs,
+					     enum phy_ch_width chwidth,
+					     uint8_t precac_chan)
 {
-	int agile_cac_timeout;
+	uint8_t first_subch, last_subch;
+
+	switch (chwidth) {
+	case CH_WIDTH_20MHZ:
+		first_subch = precac_chan;
+		last_subch = precac_chan;
+		break;
+	case CH_WIDTH_40MHZ:
+		first_subch = precac_chan - DFS_5GHZ_NEXT_CHAN_OFFSET;
+		last_subch = precac_chan + DFS_5GHZ_NEXT_CHAN_OFFSET;
+		break;
+	case CH_WIDTH_80MHZ:
+		first_subch = precac_chan - DFS_5GHZ_2ND_CHAN_OFFSET;
+		last_subch = precac_chan + DFS_5GHZ_2ND_CHAN_OFFSET;
+		break;
+	default:
+		dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS,
+			"Precac channel width invalid!");
+		return false;
+	}
+	return FIND_IF_OVERLAP_WITH_WEATHER_RANGE(first_subch, last_subch);
+}
+
+void dfs_start_agile_precac_timer(struct wlan_dfs *dfs,
+				  uint8_t ocac_status,
+				  struct dfs_agile_cac_params *adfs_param)
+{
+	uint8_t precac_chan = adfs_param->precac_chan;
+	enum phy_ch_width chwidth = adfs_param->precac_chwidth;
+	uint32_t min_precac_timeout, max_precac_timeout;
 	struct dfs_soc_priv_obj *dfs_soc_obj;
 
 	dfs_soc_obj = dfs->dfs_soc_obj;
 	dfs_soc_obj->dfs_precac_timer_running = 1;
 
-	agile_cac_timeout = (dfs->dfs_precac_timeout_override != -1) ?
-				dfs->dfs_precac_timeout_override :
-				DEFAULT_CAC_DURATION;
 	if (ocac_status == OCAC_SUCCESS) {
 		dfs_soc_obj->ocac_status = OCAC_SUCCESS;
-		agile_cac_timeout = 0;
+		min_precac_timeout = 0;
+		max_precac_timeout = 0;
+	} else {
+		/* Find the minimum and maximum precac timeout. */
+		max_precac_timeout = MAX_PRECAC_DURATION;
+		if (dfs->dfs_precac_timeout_override != -1) {
+			min_precac_timeout =
+				dfs->dfs_precac_timeout_override * 1000;
+		} else if (dfs_is_precac_on_weather_channel(dfs,
+							    chwidth,
+							    precac_chan)) {
+			min_precac_timeout = MIN_WEATHER_PRECAC_DURATION;
+			max_precac_timeout = MAX_WEATHER_PRECAC_DURATION;
+		} else {
+			min_precac_timeout = MIN_PRECAC_DURATION;
+		}
 	}
 
 	dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS,
-		 "precactimeout = %d", (agile_cac_timeout) * 1000);
-	qdf_timer_mod(&dfs_soc_obj->dfs_precac_timer,
-		      (agile_cac_timeout) * 1000);
+		 "precactimeout = %d ms", (min_precac_timeout));
+	qdf_timer_mod(&dfs_soc_obj->dfs_precac_timer, min_precac_timeout);
+	adfs_param->min_precac_timeout = min_precac_timeout;
+	adfs_param->max_precac_timeout = max_precac_timeout;
 }
 #endif
 
@@ -2137,7 +2214,7 @@
 		return CH_WIDTH_80MHZ;
 	default:
 		dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, "Invalid chwidth enum!");
-		return 0;
+		return CH_WIDTH_INVALID;
 	}
 }
 
@@ -2159,7 +2236,7 @@
 	 */
 	dfs_find_chwidth_and_center_chan(dfs, &chwidth, NULL, NULL);
 	dfs->dfs_precac_chwidth = dfs_find_agile_width(dfs, chwidth);
-	if (!dfs->dfs_precac_chwidth) {
+	if (dfs->dfs_precac_chwidth == CH_WIDTH_INVALID) {
 		dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, "cannot start agile CAC!");
 		return;
 	}
@@ -2172,15 +2249,10 @@
 						pri_ch_ieee,
 						sec_ch_ieee,
 						chwidth_val);
-	if (ieee_chan) {
+	if (ieee_chan)
 		dfs->dfs_agile_precac_freq = ieee_chan;
-		/* Start the pre_cac_timer */
-		dfs_start_agile_precac_timer(dfs,
-					     dfs->dfs_agile_precac_freq,
-					     dfs->dfs_soc_obj->ocac_status);
-	} else {
+	else
 		dfs->dfs_agile_precac_freq = 0;
-	}
 
 	*ch_ieee = dfs->dfs_agile_precac_freq;
 }
@@ -2322,7 +2394,7 @@
 	tx_ops = &psoc->soc_cb.tx_ops.target_tx_ops;
 	target_type = lmac_get_target_type(dfs->dfs_pdev_obj);
 
-	tgt_hdl = (struct target_psoc_info *)wlan_psoc_get_tgt_if_handle(psoc);
+	tgt_hdl = wlan_psoc_get_tgt_if_handle(psoc);
 	if (!tgt_hdl) {
 		dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, "target_psoc_info is null");
 		return;
@@ -2374,16 +2446,12 @@
 #ifdef QCA_SUPPORT_AGILE_DFS
 void dfs_agile_precac_start(struct wlan_dfs *dfs)
 {
-	uint8_t agile_freq = 0;
+	struct dfs_agile_cac_params adfs_param;
 	uint8_t ocac_status = 0;
 	struct dfs_soc_priv_obj *dfs_soc_obj;
 	uint8_t cur_dfs_idx;
 
 	dfs_soc_obj = dfs->dfs_soc_obj;
-	/*
-	 * Initiate first call to start preCAC here, for agile_freq as 0,
-	 * and ocac_status as 0
-	 */
 
 	qdf_info("%s : %d agile_precac_started: %d",
 		 __func__, __LINE__,
@@ -2400,12 +2468,16 @@
 		 dfs->dfs_soc_obj->dfs_priv[cur_dfs_idx].dfs);
 
 	if (!dfs->dfs_soc_obj->precac_state_started) {
+		/*
+		 * Initiate first call to start preCAC here, for channel as 0,
+		 * and ocac_status as 0
+		 */
+		adfs_param.precac_chan = 0;
+		adfs_param.precac_chwidth = CH_WIDTH_INVALID;
 		qdf_info("%s : %d Initiated agile precac",
 			 __func__, __LINE__);
 		dfs->dfs_soc_obj->precac_state_started = true;
-		dfs_start_agile_precac_timer(dfs,
-					     agile_freq,
-					     ocac_status);
+		dfs_start_agile_precac_timer(dfs, ocac_status, &adfs_param);
 	}
 }
 #endif
@@ -2424,7 +2496,7 @@
 		retval = 0;
 	}
 
-	tgt_hdl = (struct target_psoc_info *)wlan_psoc_get_tgt_if_handle(psoc);
+	tgt_hdl = wlan_psoc_get_tgt_if_handle(psoc);
 
 	info = (struct tgt_info *)(&tgt_hdl->info);
 	if (!tgt_hdl) {
diff --git a/umac/mlme/vdev_mgr/core/src/vdev_mlme_sm_actions.c b/umac/mlme/vdev_mgr/core/src/vdev_mlme_sm_actions.c
index 1b840a4..a9440d9 100644
--- a/umac/mlme/vdev_mgr/core/src/vdev_mlme_sm_actions.c
+++ b/umac/mlme/vdev_mgr/core/src/vdev_mlme_sm_actions.c
@@ -289,6 +289,10 @@
 		wlan_pdev_mlme_op_clear(pdev, WLAN_PDEV_OP_MBSSID_RESTART);
 		wlan_pdev_mlme_op_clear(pdev, WLAN_PDEV_OP_RESTART_INPROGRESS);
 
+		qdf_mem_copy(&pdev_mlme->pdev_restart.restart_bmap,
+			     &pdev_mlme->restart_send_vdev_bmap,
+			     sizeof(pdev_mlme->pdev_restart.restart_bmap));
+
 		if (!wlan_pdev_nif_feat_cap_get(pdev,
 						WLAN_PDEV_F_MULTIVDEV_RESTART))
 			wlan_objmgr_pdev_iterate_obj_list
diff --git a/wmi/src/wmi_unified_non_tlv.c b/wmi/src/wmi_unified_non_tlv.c
index 172aaa7..20b83e6 100644
--- a/wmi/src/wmi_unified_non_tlv.c
+++ b/wmi/src/wmi_unified_non_tlv.c
@@ -911,6 +911,37 @@
 }
 
 /**
+ * send_peer_delete_all_cmd_non_tlv() - send PEER delete all command to fw
+ * @wmi_handle: wmi handle
+ * @vdev_id: vdev id
+ *
+ * Return: 0 for success or error code
+ */
+static QDF_STATUS send_peer_delete_all_cmd_non_tlv(wmi_unified_t wmi_handle,
+				struct peer_delete_all_params *param)
+{
+	wmi_vdev_delete_all_peer_cmd *cmd;
+	wmi_buf_t buf;
+	QDF_STATUS ret;
+	int len = sizeof(wmi_vdev_delete_all_peer_cmd);
+
+	buf = wmi_buf_alloc(wmi_handle, len);
+	if (!buf) {
+		WMI_LOGE("%s:wmi_buf_alloc failed", __func__);
+		return QDF_STATUS_E_NOMEM;
+	}
+	cmd = (wmi_vdev_delete_all_peer_cmd *)wmi_buf_data(buf);
+	cmd->vdev_id = param->vdev_id;
+	ret =  wmi_unified_cmd_send(wmi_handle, buf, len,
+				    WMI_VDEV_DELETE_ALL_PEER_CMDID);
+	if (QDF_IS_STATUS_ERROR(ret)) {
+		WMI_LOGE("Failed to send WMI_VDEV_DELETE_ALL_PEER_CMDID ");
+		wmi_buf_free(buf);
+	}
+	return ret;
+}
+
+/**
  * convert_host_peer_param_id_to_target_id_non_tlv - convert host peer param_id
  * to target id.
  * @peer_param_id: host param id.
@@ -5383,79 +5414,6 @@
 }
 
 /**
- * send_pdev_set_chan_cmd_non_tlv() - send pdev set chan cmd to fw
- * @wmi_handle: wmi handle
- * @param: pointer to hold set chan param
- *
- * Return: 0 for success or error code
- */
-static QDF_STATUS
-send_pdev_set_chan_cmd_non_tlv(wmi_unified_t wmi_handle,
-				struct channel_param *param)
-{
-	wmi_set_channel_cmd *cmd;
-	wmi_buf_t buf;
-	QDF_STATUS ret;
-	int len = sizeof(wmi_set_channel_cmd);
-
-	buf = wmi_buf_alloc(wmi_handle, len);
-	if (!buf) {
-		WMI_LOGE("%s:wmi_buf_alloc failed", __func__);
-		return QDF_STATUS_E_FAILURE;
-	}
-
-	cmd = (wmi_set_channel_cmd *)wmi_buf_data(buf);
-
-	cmd->chan.mhz = param->mhz;
-
-	WMI_SET_CHANNEL_MODE(&cmd->chan, param->phy_mode);
-
-	cmd->chan.band_center_freq1 = param->cfreq1;
-	cmd->chan.band_center_freq2 = param->cfreq2;
-
-	WMI_SET_CHANNEL_MIN_POWER(&cmd->chan, param->minpower);
-	WMI_SET_CHANNEL_MAX_POWER(&cmd->chan, param->maxpower);
-	WMI_SET_CHANNEL_REG_POWER(&cmd->chan, param->maxregpower);
-	WMI_SET_CHANNEL_ANTENNA_MAX(&cmd->chan, param->antennamax);
-	WMI_SET_CHANNEL_REG_CLASSID(&cmd->chan, param->reg_class_id);
-
-	if (param->dfs_set)
-		WMI_SET_CHANNEL_FLAG(&cmd->chan, WMI_CHAN_FLAG_DFS);
-
-	if (param->dfs_set_cfreq2)
-		WMI_SET_CHANNEL_FLAG(&cmd->chan, WMI_CHAN_FLAG_DFS_CFREQ2);
-
-	if (param->half_rate)
-		WMI_SET_CHANNEL_FLAG(&cmd->chan, WMI_CHAN_FLAG_HALF);
-
-	if (param->quarter_rate)
-		WMI_SET_CHANNEL_FLAG(&cmd->chan, WMI_CHAN_FLAG_QUARTER);
-
-	if ((param->phy_mode == MODE_11AC_VHT80_80) ||
-			(param->phy_mode == MODE_11AC_VHT160)) {
-		WMI_LOGD(
-		"WMI channel freq=%d, mode=%x band_center_freq1=%d band_center_freq2=%d",
-		cmd->chan.mhz,
-		WMI_GET_CHANNEL_MODE(&cmd->chan), cmd->chan.band_center_freq1,
-		cmd->chan.band_center_freq2);
-	} else {
-		WMI_LOGD("WMI channel freq=%d, mode=%x band_center_freq1=%d\n"
-			, cmd->chan.mhz,
-			WMI_GET_CHANNEL_MODE(&cmd->chan),
-			cmd->chan.band_center_freq1);
-	}
-
-	ret =  wmi_unified_cmd_send(wmi_handle, buf, len,
-					WMI_PDEV_SET_CHANNEL_CMDID);
-	if (QDF_IS_STATUS_ERROR(ret)) {
-		WMI_LOGE("Failed to send WMI_PDEV_SET_CHANNEL_CMDID");
-		wmi_buf_free(buf);
-	}
-
-	return ret;
-}
-
-/**
  * send_mcast_group_update_cmd_non_tlv() - send mcast group update cmd to fw
  * @wmi_handle: wmi handle
  * @param: pointer to hold mcast update param
@@ -7359,6 +7317,34 @@
 	return QDF_STATUS_SUCCESS;
 }
 
+/*
+ * extract_vdev_peer_delete_all_response_event_non_tlv() -
+ * extract peer delete all response event
+ * @wmi_handle: wmi handle
+ * @param evt_buf: pointer to event buffer
+ * @param pointer: Pointer to hold vdev_id of peer delete all response
+ *
+ * Return: QDF_STATUS_SUCCESS for success or error code
+ */
+static QDF_STATUS extract_vdev_peer_delete_all_response_event_non_tlv(
+		wmi_unified_t wmi_hdl,
+		void *evt_buf,
+		struct wmi_host_vdev_peer_delete_all_response_event *param)
+{
+	wmi_vdev_delete_all_peer_resp_event *ev;
+
+	ev = (wmi_vdev_delete_all_peer_resp_event *) evt_buf;
+	if (!ev) {
+		WMI_LOGE("%s: Invalid peer_delete all response", __func__);
+		return QDF_STATUS_E_FAILURE;
+	}
+
+	param->vdev_id = ev->vdev_id;
+	param->status = ev->status;
+
+	return QDF_STATUS_SUCCESS;
+}
+
 /**
  * extract_tbttoffset_num_vdevs_non_tlv() - extract tbtt offset num vdevs
  * @wmi_handle: wmi handle
@@ -9921,6 +9907,7 @@
 	.send_vdev_up_cmd = send_vdev_up_cmd_non_tlv,
 	.send_peer_create_cmd = send_peer_create_cmd_non_tlv,
 	.send_peer_delete_cmd = send_peer_delete_cmd_non_tlv,
+	.send_peer_delete_all_cmd = send_peer_delete_all_cmd_non_tlv,
 #ifdef WLAN_SUPPORT_GREEN_AP
 	.send_green_ap_ps_cmd = send_green_ap_ps_cmd_non_tlv,
 #endif
@@ -9957,7 +9944,6 @@
 	.send_pdev_fips_cmd = send_pdev_fips_cmd_non_tlv,
 	.send_wlan_profile_enable_cmd = send_wlan_profile_enable_cmd_non_tlv,
 	.send_wlan_profile_trigger_cmd = send_wlan_profile_trigger_cmd_non_tlv,
-	.send_pdev_set_chan_cmd = send_pdev_set_chan_cmd_non_tlv,
 	.send_set_ht_ie_cmd = send_set_ht_ie_cmd_non_tlv,
 	.send_set_vht_ie_cmd = send_set_vht_ie_cmd_non_tlv,
 	.send_wmm_update_cmd = send_wmm_update_cmd_non_tlv,
@@ -10083,6 +10069,8 @@
 	.extract_dcs_cw_int = extract_dcs_cw_int_non_tlv,
 	.extract_dcs_im_tgt_stats = extract_dcs_im_tgt_stats_non_tlv,
 	.extract_vdev_start_resp = extract_vdev_start_resp_non_tlv,
+	.extract_vdev_peer_delete_all_response_event =
+				extract_vdev_peer_delete_all_response_event_non_tlv,
 	.extract_tbttoffset_update_params =
 			extract_tbttoffset_update_params_non_tlv,
 	.extract_tbttoffset_num_vdevs =
@@ -10375,6 +10363,8 @@
 				WMI_SERVICE_UNAVAILABLE;
 	wmi_service[wmi_service_host_dfs_check_support] =
 		WMI_SERVICE_HOST_DFS_CHECK_SUPPORT;
+	wmi_service[wmi_service_vdev_delete_all_peer] =
+		WMI_SERVICE_VDEV_DELETE_ALL_PEER;
 	wmi_service[wmi_service_cfr_capture_support] =
 		WMI_SERVICE_CFR_CAPTURE_SUPPORT;
 }
@@ -10488,6 +10478,8 @@
 					WMI_ESP_ESTIMATE_EVENTID;
 	event_ids[wmi_pdev_ctl_failsafe_check_event_id] =
 					WMI_PDEV_CTL_FAILSAFE_CHECK_EVENTID;
+	event_ids[wmi_peer_delete_all_response_event_id] =
+					WMI_VDEV_DELETE_ALL_PEER_RESP_EVENTID;
 }
 #endif