From f47172a7622dfc87a87c5cdbfb05b99a634c8e10 Mon Sep 17 00:00:00 2001 From: Aditya Sathish Date: Mon, 15 Oct 2018 22:44:58 +0530 Subject: [PATCH] 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 --- wmi_unified_ap_api.h | 3 +++ wmi_unified_param.h | 21 +++++++++++++++++++++ wmi_unified_priv.h | 3 +++ 3 files changed, 27 insertions(+) diff --git a/wmi_unified_ap_api.h b/wmi_unified_ap_api.h index 5a0f73f251..fca365d658 100644 --- a/wmi_unified_ap_api.h +++ b/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, 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_ */ diff --git a/wmi_unified_param.h b/wmi_unified_param.h index d956d8598b..baf6399c04 100644 --- a/wmi_unified_param.h +++ b/wmi_unified_param.h @@ -3089,7 +3089,28 @@ struct set_qdepth_thresh_params { 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 diff --git a/wmi_unified_priv.h b/wmi_unified_priv.h index 1be405fa70..16c07c9ba3 100644 --- a/wmi_unified_priv.h +++ b/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, 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_add_wakeup_event_cmd)(wmi_unified_t wmi_handle,