From 7e4f4bc75e5e00c9a73a6debb0f3775bdf6f52d6 Mon Sep 17 00:00:00 2001 From: Himanshu Agarwal Date: Wed, 9 Mar 2016 16:49:38 +0530 Subject: [PATCH] qcacmn: Add tlv formation of some wmi vdev commands in common wmi layer Move tlv formation of wmi vdev start/restart commands from umac to common wmi layer. Change-Id: Id040983068ff610e68880dd5f503edf9b9c8cff9 CRs-Fixed: 987362 --- wmi_unified_api.h | 10 +-- wmi_unified_param.h | 157 +++++++++++++++++++++++++++----------------- wmi_unified_priv.h | 6 ++ wmi_unified_tlv.h | 6 ++ 4 files changed, 116 insertions(+), 63 deletions(-) diff --git a/wmi_unified_api.h b/wmi_unified_api.h index 8302ecb69f..58fd3e51d0 100644 --- a/wmi_unified_api.h +++ b/wmi_unified_api.h @@ -245,10 +245,6 @@ QDF_STATUS wmi_unified_vdev_create_send(void *wmi_hdl, QDF_STATUS wmi_unified_vdev_delete_send(void *wmi_hdl, uint8_t if_id); -QDF_STATUS wmi_unified_vdev_start_send(void *wmi_hdl, - uint8_t macaddr[IEEE80211_ADDR_LEN], - struct vdev_start_params *param); - QDF_STATUS wmi_unified_vdev_restart_send(void *wmi_hdl, uint8_t macaddr[IEEE80211_ADDR_LEN], struct vdev_start_params *param); @@ -263,6 +259,12 @@ QDF_STATUS wmi_unified_vdev_up_send(void *wmi_hdl, QDF_STATUS wmi_unified_vdev_down_send(void *wmi_hdl, uint8_t vdev_id); +QDF_STATUS wmi_unified_vdev_start_send(void *wmi_hdl, + struct vdev_start_params *req); + +QDF_STATUS wmi_unified_hidden_ssid_vdev_restart_send(void *wmi_hdl, + struct hidden_ssid_vdev_restart_params *restart_params); + QDF_STATUS wmi_unified_vdev_set_param_send(void *wmi_hdl, struct vdev_set_params *param); diff --git a/wmi_unified_param.h b/wmi_unified_param.h index 009ef34168..577d54746d 100644 --- a/wmi_unified_param.h +++ b/wmi_unified_param.h @@ -88,6 +88,7 @@ #define WMI_SEC_TO_MSEC(sec) (sec * 1000) /* sec to msec */ #define WMI_MSEC_TO_USEC(msec) (msec * 1000) /* msec to usec */ #define WMI_NLO_FREQ_THRESH 1000 /* in MHz */ +#include "qdf_atomic.h" /** * struct vdev_create_params - vdev create cmd parameter @@ -109,55 +110,6 @@ struct vdev_delete_params { uint8_t if_id; }; -/** - * struct vdev_start_params - vdev start cmd parameter - * @beacon_intval: beacon intval - * @dtim_period: dtim period - * @max_txpow: max tx power - * @phy_ch_width chan_width: channel width - * @is_dfs: flag to check if dfs enabled - * @vdev_id: vdev id - * @chan: channel no - * @oper_mode: operating mode - * @length: length - * @ssId[32]: ssid - * @hidden_ssid: hidden ssid - * @pmf_enabled: is pmf enabled - * @vht_capable: is vht capable - * @ch_center_freq_seg0: center freq seq 0 - * @ch_center_freq_seg1: center freq seq 1 - * @ht_capable: is ht capable - * @dfs_pri_multiplier: DFS multiplier - * @dot11_mode: dot11 mode - * @is_half_rate: Indicates half rate channel - * @is_quarter_rate: Indicates quarter rate channel - * @preferred_tx_streams: preferred tx streams - * @preferred_rx_streams: preferred rx streams - */ -struct vdev_start_params { - uint32_t beacon_intval; - uint32_t dtim_period; - int32_t max_txpow; - bool is_dfs; - uint8_t vdev_id; - uint8_t chan; - uint8_t oper_mode; - uint8_t length; - uint8_t ssId[32]; - uint8_t hidden_ssid; - uint8_t pmf_enabled; - uint8_t vht_capable; - uint8_t ch_center_freq_seg0; - uint8_t ch_center_freq_seg1; - uint8_t ht_capable; - int32_t dfs_pri_multiplier; - uint8_t dot11_mode; - bool is_half_rate; - bool is_quarter_rate; - uint32_t preferred_tx_streams; - uint32_t preferred_rx_streams; -}; - /** * struct vdev_stop_params - vdev stop cmd parameter * @vdev_id: vdev id @@ -184,6 +136,103 @@ struct vdev_down_params { uint8_t vdev_id; }; +/** + * struct mac_ssid - mac ssid structure + * @length: + * @mac_ssid[WMI_MAC_MAX_SSID_LENGTH]: + */ +struct mac_ssid { + uint8_t length; + uint8_t mac_ssid[WMI_MAC_MAX_SSID_LENGTH]; +} qdf_packed; + +/** + * struct vdev_start_params - vdev start cmd parameter + * @vdev_id: vdev id + * @chan_freq: channel frequency + * @chan_mode: channel mode + * @band_center_freq1: center freq 1 + * @band_center_freq2: center freq 2 + * @flags: flags to set like pmf_enabled etc. + * @is_dfs: flag to check if dfs enabled + * @beacon_intval: beacon interval + * @dtim_period: dtim period + * @max_txpow: max tx power + * @is_restart: flag to check if it is vdev + * @ssid: ssid and ssid length info + * @preferred_tx_streams: preferred tx streams + * @preferred_rx_streams: preferred rx streams + * @intr_update: flag to check if need to update + * required wma interface params + * @intr_ssid: pointer to wma interface ssid + * @intr_flags: poiter to wma interface flags + * @requestor_id: to update requestor id + * @disable_hw_ack: to update disable hw ack flag + * @info: to update channel info + * @reg_info_1: to update min power, max power, + * reg power and reg class id + * @reg_info_2: to update antennamax + */ +struct vdev_start_params { + uint8_t vdev_id; + uint32_t chan_freq; + uint32_t chan_mode; + uint32_t band_center_freq1; + uint32_t band_center_freq2; + uint32_t flags; + bool is_dfs; + uint32_t beacon_intval; + uint32_t dtim_period; + int32_t max_txpow; + bool is_restart; + struct mac_ssid ssid; + uint32_t preferred_rx_streams; + uint32_t preferred_tx_streams; + bool intr_update; + wmi_ssid *intr_ssid; + uint32_t *intr_flags; + uint32_t *requestor_id; + uint32_t *disable_hw_ack; + uint32_t *info; + uint32_t *reg_info_1; + uint32_t *reg_info_2; +}; + +/** + * struct hidden_ssid_vdev_restart_params - + * vdev restart cmd parameter + * @session_id: session id + * @ssid_len: ssid length + * @ssid: ssid + * @flags: flags + * @requestor_id: requestor id + * @disable_hw_ack: flag to disable hw ack feature + * @mhz: channel frequency + * @band_center_freq1: center freq 1 + * @band_center_freq2: center freq 2 + * @info: channel info + * @reg_info_1: contains min power, max power, + * reg power and reg class id + * @reg_info_2: contains antennamax + * @hidden_ssid_restart_in_progress: + * flag to check if restart is in progress + */ +struct hidden_ssid_vdev_restart_params { + uint8_t session_id; + uint32_t ssid_len; + uint32_t ssid[8]; + uint32_t flags; + uint32_t requestor_id; + uint32_t disable_hw_ack; + uint32_t mhz; + uint32_t band_center_freq1; + uint32_t band_center_freq2; + uint32_t info; + uint32_t reg_info_1; + uint32_t reg_info_2; + qdf_atomic_t hidden_ssid_restart_in_progress; +}; + /** * struct vdev_set_params - vdev set cmd parameter * @if_id: vdev id @@ -401,16 +450,6 @@ struct ap_ps_params { uint32_t value; }; -/** - * struct mac_ssid - mac ssid structure - * @length: - * @mac_ssid[WMI_MAC_MAX_SSID_LENGTH]: - */ -struct mac_ssid { - uint8_t length; - uint8_t mac_ssid[WMI_MAC_MAX_SSID_LENGTH]; -} qdf_packed; - /** * struct scan_start_params - start scan cmd parameter * @scan_id: scan id diff --git a/wmi_unified_priv.h b/wmi_unified_priv.h index a1df724969..afdcae90f0 100644 --- a/wmi_unified_priv.h +++ b/wmi_unified_priv.h @@ -82,6 +82,12 @@ QDF_STATUS (*send_vdev_stop_cmd)(wmi_unified_t wmi, QDF_STATUS (*send_vdev_down_cmd)(wmi_unified_t wmi, uint8_t vdev_id); +QDF_STATUS (*send_vdev_start_cmd)(wmi_unified_t wmi, + struct vdev_start_params *req); + +QDF_STATUS (*send_hidden_ssid_vdev_restart_cmd)(wmi_unified_t wmi_handle, + struct hidden_ssid_vdev_restart_params *restart_params); + QDF_STATUS (*send_peer_flush_tids_cmd)(wmi_unified_t wmi, uint8_t peer_addr[IEEE80211_ADDR_LEN], struct peer_flush_params *param); diff --git a/wmi_unified_tlv.h b/wmi_unified_tlv.h index 7387ba4624..43acf781df 100644 --- a/wmi_unified_tlv.h +++ b/wmi_unified_tlv.h @@ -44,6 +44,12 @@ QDF_STATUS send_vdev_stop_cmd_tlv(wmi_unified_t wmi, QDF_STATUS send_vdev_down_cmd_tlv(wmi_unified_t wmi, uint8_t vdev_id); +QDF_STATUS send_vdev_start_cmd_tlv(wmi_unified_t wmi, + struct vdev_start_params *req); + +QDF_STATUS send_hidden_ssid_vdev_restart_cmd_tlv(wmi_unified_t wmi_handle, + struct hidden_ssid_vdev_restart_params *restart_params); + QDF_STATUS send_peer_flush_tids_cmd_tlv(wmi_unified_t wmi, uint8_t peer_addr[IEEE80211_ADDR_LEN], struct peer_flush_params *param);