diff --git a/wmi_unified_api.h b/wmi_unified_api.h index c703be5040..db5d24994a 100644 --- a/wmi_unified_api.h +++ b/wmi_unified_api.h @@ -705,8 +705,8 @@ QDF_STATUS wmi_unified_enable_specific_fw_logs_cmd(void *wmi_hdl, 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 48d98757a7..f26aeb73a4 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,13 +2295,36 @@ struct wmi_wifi_start_log { /** * 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 diff --git a/wmi_unified_priv.h b/wmi_unified_priv.h index 2a25b63c20..267b68785c 100644 --- a/wmi_unified_priv.h +++ b/wmi_unified_priv.h @@ -530,8 +530,8 @@ QDF_STATUS (*send_enable_specific_fw_logs_cmd)(wmi_unified_t wmi_handle, 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 f9dbed0460..e5ad2ffdea 100644 --- a/wmi_unified_tlv.h +++ b/wmi_unified_tlv.h @@ -492,8 +492,8 @@ QDF_STATUS send_enable_specific_fw_logs_cmd_tlv(wmi_unified_t wmi_handle, 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);