Bläddra i källkod

qcacmn: Add support of extended service bitmap handling

Extended service bitmap is used by FW to indicate supported services
bitmap for services excedding the current limitation of 128. Add support
to save and use this bitmap to check services supported in FW. Also,
change exisiting services bitmap to be dynamic allocated buffer to
optimize the buffer used to save the bitmap.

Change-Id: I24a0321bc1a06ee3aedf1c6acbc379e907bbd464
CRs-Fixed: 2103617
Kiran Venkatappa 7 år sedan
förälder
incheckning
34bea52100
3 ändrade filer med 24 tillägg och 5 borttagningar
  1. 17 0
      wmi_unified_api.h
  2. 1 0
      wmi_unified_param.h
  3. 6 5
      wmi_unified_priv.h

+ 17 - 0
wmi_unified_api.h

@@ -1150,9 +1150,26 @@ QDF_STATUS wmi_unified_init_cmd_send(void *wmi_hdl,
 
 
 bool wmi_service_enabled(void *wmi_hdl, uint32_t service_id);
 bool wmi_service_enabled(void *wmi_hdl, uint32_t service_id);
 
 
+/**
+ * wmi_save_service_bitmap() - save service bitmap
+ * @wmi_handle: wmi handle
+ * @param evt_buf: pointer to event buffer
+ *
+ * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS failure code
+ */
 QDF_STATUS wmi_save_service_bitmap(void *wmi_hdl, void *evt_buf,
 QDF_STATUS wmi_save_service_bitmap(void *wmi_hdl, void *evt_buf,
 				   void *bitmap_buf);
 				   void *bitmap_buf);
 
 
+/**
+ * wmi_save_ext_service_bitmap() - save extended service bitmap
+ * @wmi_handle: wmi handle
+ * @param evt_buf: pointer to event buffer
+ *
+ * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS failure code
+ */
+QDF_STATUS wmi_save_ext_service_bitmap(void *wmi_hdl, void *evt_buf,
+				   void *bitmap_buf);
+
 QDF_STATUS wmi_save_fw_version(void *wmi_hdl, void *evt_buf);
 QDF_STATUS wmi_save_fw_version(void *wmi_hdl, void *evt_buf);
 
 
 QDF_STATUS wmi_get_target_cap_from_service_ready(void *wmi_hdl,
 QDF_STATUS wmi_get_target_cap_from_service_ready(void *wmi_hdl,

+ 1 - 0
wmi_unified_param.h

@@ -5157,6 +5157,7 @@ typedef enum {
 	wmi_ext_tbttoffset_update_event_id,
 	wmi_ext_tbttoffset_update_event_id,
 	wmi_11d_new_country_event_id,
 	wmi_11d_new_country_event_id,
 	wmi_get_arp_stats_req_id,
 	wmi_get_arp_stats_req_id,
+	wmi_service_available_event_id,
 
 
 	wmi_events_max,
 	wmi_events_max,
 } wmi_conv_event_id;
 } wmi_conv_event_id;

+ 6 - 5
wmi_unified_priv.h

@@ -955,7 +955,9 @@ QDF_STATUS (*send_lteu_config_cmd)(wmi_unified_t wmi_handle,
 
 
 QDF_STATUS (*send_set_ps_mode_cmd)(wmi_unified_t wmi_handle,
 QDF_STATUS (*send_set_ps_mode_cmd)(wmi_unified_t wmi_handle,
 		       struct set_ps_mode_params *param);
 		       struct set_ps_mode_params *param);
-void (*save_service_bitmap)(wmi_unified_t wmi_handle,
+QDF_STATUS (*save_service_bitmap)(wmi_unified_t wmi_handle,
+		void *evt_buf,  void *bitmap_buf);
+QDF_STATUS (*save_ext_service_bitmap)(wmi_unified_t wmi_handle,
 		void *evt_buf,  void *bitmap_buf);
 		void *evt_buf,  void *bitmap_buf);
 bool (*is_service_enabled)(wmi_unified_t wmi_handle,
 bool (*is_service_enabled)(wmi_unified_t wmi_handle,
 	uint32_t service_id);
 	uint32_t service_id);
@@ -1452,8 +1454,6 @@ struct wmi_unified {
 	bool wmi_stopinprogress;
 	bool wmi_stopinprogress;
 	uint32_t *wmi_events;
 	uint32_t *wmi_events;
 #ifndef CONFIG_MCL
 #ifndef CONFIG_MCL
-	/* WMI service bitmap recieved from target */
-	uint32_t *wmi_service_bitmap;
 	uint32_t *pdev_param;
 	uint32_t *pdev_param;
 	uint32_t *vdev_param;
 	uint32_t *vdev_param;
 	uint32_t *services;
 	uint32_t *services;
@@ -1478,9 +1478,10 @@ struct wmi_soc {
 	uint16_t max_msg_len[WMI_MAX_RADIOS];
 	uint16_t max_msg_len[WMI_MAX_RADIOS];
 	struct wmi_ops *ops;
 	struct wmi_ops *ops;
 	uint32_t wmi_events[wmi_events_max];
 	uint32_t wmi_events[wmi_events_max];
-#ifndef CONFIG_MCL
 	/* WMI service bitmap recieved from target */
 	/* WMI service bitmap recieved from target */
-	uint32_t wmi_service_bitmap[wmi_services_max];
+	uint32_t *wmi_service_bitmap;
+	uint32_t *wmi_ext_service_bitmap;
+#ifndef CONFIG_MCL
 	uint32_t pdev_param[wmi_pdev_param_max];
 	uint32_t pdev_param[wmi_pdev_param_max];
 	uint32_t vdev_param[wmi_vdev_param_max];
 	uint32_t vdev_param[wmi_vdev_param_max];
 	uint32_t services[wmi_services_max];
 	uint32_t services[wmi_services_max];