qcacmn: Replace WMI_SOC_SET_PCL_CMDID with WMI_PDEV_SET_PCL_CMDID

Replace the obsolete WMI command WMI_SOC_SET_PCL_CMDID with
WMI_PDEV_SET_PCL_CMDID. WMI_PDEV_SET_PCL_CMDID carries the weightage
for all the channels (preferred and non-preferred) in the same order
and length as that of the command WMI_SCAN_CHAN_LIST_CMDID. This is
in contrast to the command WMI_SOC_SET_PCL_CMDID which carries only
the preferred channel list.

Change-Id: I040f4307491d3242d2e9409dbbe8005c4b307bf5
CRs-Fixed: 989502
diff --git a/wmi_unified_api.h b/wmi_unified_api.h
index c703be5..db5d249 100644
--- a/wmi_unified_api.h
+++ b/wmi_unified_api.h
@@ -705,8 +705,8 @@
 
 QDF_STATUS wmi_unified_flush_logs_to_fw_cmd(void *wmi_hdl);
 
-QDF_STATUS wmi_unified_soc_set_pcl_cmd(void *wmi_hdl,
-				struct wmi_pcl_list *msg);
+QDF_STATUS wmi_unified_pdev_set_pcl_cmd(void *wmi_hdl,
+				struct wmi_pcl_chan_weights *msg);
 
 QDF_STATUS wmi_unified_soc_set_hw_mode_cmd(void *wmi_hdl,
 				uint32_t hw_mode_index);
diff --git a/wmi_unified_param.h b/wmi_unified_param.h
index 48d9875..f26aeb7 100644
--- a/wmi_unified_param.h
+++ b/wmi_unified_param.h
@@ -91,6 +91,8 @@
 #define WMI_NLO_FREQ_THRESH          1000       /* in MHz */
 #include "qdf_atomic.h"
 
+#define MAX_NUM_CHAN 128
+
 /**
  * struct vdev_create_params - vdev create cmd parameter
  * @if_id: interface id
@@ -2293,14 +2295,37 @@
 /**
  * struct wmi_pcl_list - Format of PCL
  * @pcl_list: List of preferred channels
+ * @weight_list: Weights of the PCL
  * @pcl_len: Number of channels in the PCL
  */
 struct wmi_pcl_list {
 	uint8_t pcl_list[128];
+	uint8_t weight_list[128];
 	uint32_t pcl_len;
 };
 
 /**
+ * struct wmi_pcl_chan_weights - Params to get the valid weighed list
+ * @pcl_list: Preferred channel list already sorted in the order of preference
+ * @pcl_len: Length of the PCL
+ * @saved_chan_list: Valid channel list updated as part of
+ * WMA_UPDATE_CHAN_LIST_REQ
+ * @saved_num_chan: Length of the valid channel list
+ * @weighed_valid_list: Weights of the valid channel list. This will have one
+ * to one mapping with valid_chan_list. FW expects channel order and size to be
+ * as per the list provided in WMI_SCAN_CHAN_LIST_CMDID.
+ * @weight_list: Weights assigned by policy manager
+ */
+struct wmi_pcl_chan_weights {
+	uint8_t pcl_list[MAX_NUM_CHAN];
+	uint32_t pcl_len;
+	uint8_t saved_chan_list[MAX_NUM_CHAN];
+	uint32_t saved_num_chan;
+	uint8_t weighed_valid_list[MAX_NUM_CHAN];
+	uint8_t weight_list[MAX_NUM_CHAN];
+};
+
+/**
  * struct wmi_hw_mode_params - HW mode params
  * @mac0_tx_ss: MAC0 Tx spatial stream
  * @mac0_rx_ss: MAC0 Rx spatial stream
diff --git a/wmi_unified_priv.h b/wmi_unified_priv.h
index 2a25b63..267b687 100644
--- a/wmi_unified_priv.h
+++ b/wmi_unified_priv.h
@@ -530,8 +530,8 @@
 
 QDF_STATUS (*send_flush_logs_to_fw_cmd)(wmi_unified_t wmi_handle);
 
-QDF_STATUS (*send_soc_set_pcl_cmd)(wmi_unified_t wmi_handle,
-				struct wmi_pcl_list *msg);
+QDF_STATUS (*send_pdev_set_pcl_cmd)(wmi_unified_t wmi_handle,
+				struct wmi_pcl_chan_weights *msg);
 
 QDF_STATUS (*send_soc_set_hw_mode_cmd)(wmi_unified_t wmi_handle,
 				uint32_t hw_mode_index);
diff --git a/wmi_unified_tlv.h b/wmi_unified_tlv.h
index f9dbed0..e5ad2ff 100644
--- a/wmi_unified_tlv.h
+++ b/wmi_unified_tlv.h
@@ -492,8 +492,8 @@
 
 QDF_STATUS send_flush_logs_to_fw_cmd_tlv(wmi_unified_t wmi_handle);
 
-QDF_STATUS send_soc_set_pcl_cmd_tlv(wmi_unified_t wmi_handle,
-				struct wmi_pcl_list *msg);
+QDF_STATUS send_pdev_set_pcl_cmd_tlv(wmi_unified_t wmi_handle,
+				struct wmi_pcl_chan_weights *msg);
 
 QDF_STATUS send_soc_set_hw_mode_cmd_tlv(wmi_unified_t wmi_handle,
 				uint32_t hw_mode_index);