Browse Source

qcacmn: Provide WMI support for AP channel switching enhancements

Provide WMI support for AP channel switching enhancements.

As part of FR50393, AP is provided with the ability to notify
capable connected peers to follow it to the new channel bandwidth.

This change provides WMI support for sending required parameters to
the firmware to update the peer list internally with the MAC address
of the capable peer along with it's new channel width.

Change-Id: I0696efd2b1c883d15de23364677050618f114743
CRs-Fixed: 2316625
Aditya Sathish 6 years ago
parent
commit
f47172a762
3 changed files with 27 additions and 0 deletions
  1. 3 0
      wmi_unified_ap_api.h
  2. 21 0
      wmi_unified_param.h
  3. 3 0
      wmi_unified_priv.h

+ 3 - 0
wmi_unified_ap_api.h

@@ -230,4 +230,7 @@ QDF_STATUS wmi_extract_chan_info_event(void *wmi_hdl, void *evt_buf,
 
 
 QDF_STATUS wmi_extract_channel_hopping_event(void *wmi_hdl, void *evt_buf,
 QDF_STATUS wmi_extract_channel_hopping_event(void *wmi_hdl, void *evt_buf,
 			wmi_host_pdev_channel_hopping_event *ch_hopping);
 			wmi_host_pdev_channel_hopping_event *ch_hopping);
+
+QDF_STATUS wmi_unified_peer_chan_width_switch_cmd_send(void *wmi_hdl,
+			struct peer_chan_width_switch_params *param);
 #endif /* _WMI_UNIFIED_AP_API_H_ */
 #endif /* _WMI_UNIFIED_AP_API_H_ */

+ 21 - 0
wmi_unified_param.h

@@ -3089,7 +3089,28 @@ struct set_qdepth_thresh_params {
 	msduq_update_params update_params[QDEPTH_THRESH_MAX_UPDATES];
 	msduq_update_params update_params[QDEPTH_THRESH_MAX_UPDATES];
 };
 };
 
 
+/**
+ * struct peer_chan_width_switch_info - Peer channel width capability params
+ * @mac_addr: MAC address of peer
+ * @chan_width: Max supported channel width of peer
+ *              (enum ieee80211_cwm_width)
+ */
+
+struct peer_chan_width_switch_info {
+	uint8_t mac_addr[IEEE80211_ADDR_LEN];
+	uint32_t chan_width;
+};
 
 
+/**
+ * struct peer_chan_width_switch_params - Peer channel width capability wrapper
+ * @num_peers: Total number of peers connected to AP
+ * @chan_width_peer_list: List of capabilities for all connected peers
+ */
+
+struct peer_chan_width_switch_params {
+	uint32_t num_peers;
+	struct peer_chan_width_switch_info *chan_width_peer_list;
+};
 
 
 /**
 /**
  * struct config_ratemask_params - ratemask config parameters
  * struct config_ratemask_params - ratemask config parameters

+ 3 - 0
wmi_unified_priv.h

@@ -1124,6 +1124,9 @@ QDF_STATUS (*send_vdev_set_custom_aggr_size_cmd)(wmi_unified_t wmi_handle,
 QDF_STATUS (*send_vdev_set_qdepth_thresh_cmd)(wmi_unified_t wmi_handle,
 QDF_STATUS (*send_vdev_set_qdepth_thresh_cmd)(wmi_unified_t wmi_handle,
 		struct set_qdepth_thresh_params *param);
 		struct set_qdepth_thresh_params *param);
 
 
+QDF_STATUS (*send_peer_chan_width_switch_cmd)(wmi_unified_t wmi_handle,
+		struct peer_chan_width_switch_params *param);
+
 QDF_STATUS (*send_wow_wakeup_cmd)(wmi_unified_t wmi_handle);
 QDF_STATUS (*send_wow_wakeup_cmd)(wmi_unified_t wmi_handle);
 
 
 QDF_STATUS (*send_wow_add_wakeup_event_cmd)(wmi_unified_t wmi_handle,
 QDF_STATUS (*send_wow_add_wakeup_event_cmd)(wmi_unified_t wmi_handle,