| /* |
| * Copyright (c) 2019 The Linux Foundation. All rights reserved. |
| * |
| * Permission to use, copy, modify, and/or distribute this software for |
| * any purpose with or without fee is hereby granted, provided that the |
| * above copyright notice and this permission notice appear in all |
| * copies. |
| * |
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL |
| * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED |
| * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE |
| * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL |
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR |
| * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER |
| * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR |
| * PERFORMANCE OF THIS SOFTWARE. |
| */ |
| |
| /** |
| * DOC: wlan_vdev_mgr_tgt_if_tx_defs.h |
| * |
| * This file provides definitions to data structures required for vdev Tx ops |
| */ |
| |
| #ifndef __WLAN_VDEV_MGR_TX_OPS_DEFS_H__ |
| #define __WLAN_VDEV_MGR_TX_OPS_DEFS_H__ |
| |
| #include <qdf_nbuf.h> |
| |
| /** |
| * struct mac_ssid - mac ssid structure |
| * @length: ssid length |
| * @mac_ssid: ssid |
| */ |
| struct mlme_mac_ssid { |
| uint8_t length; |
| uint8_t mac_ssid[WLAN_SSID_MAX_LEN]; |
| } qdf_packed; |
| |
| /** slot time long */ |
| #define WLAN_MLME_VDEV_SLOT_TIME_LONG 0x1 |
| /** slot time short */ |
| #define WLAN_MLME_VDEV_SLOT_TIME_SHORT 0x2 |
| |
| /** |
| * enum MLME_bcn_tx_rate_code - beacon tx rate code |
| */ |
| enum mlme_bcn_tx_rate_code { |
| MLME_BCN_TX_RATE_CODE_1_M = 0x43, |
| MLME_BCN_TX_RATE_CODE_2_M = 0x42, |
| MLME_BCN_TX_RATE_CODE_5_5_M = 0x41, |
| MLME_BCN_TX_RATE_CODE_6_M = 0x03, |
| MLME_BCN_TX_RATE_CODE_9_M = 0x07, |
| MLME_BCN_TX_RATE_CODE_11M = 0x40, |
| MLME_BCN_TX_RATE_CODE_12_M = 0x02, |
| MLME_BCN_TX_RATE_CODE_18_M = 0x06, |
| MLME_BCN_TX_RATE_CODE_24_M = 0x01, |
| MLME_BCN_TX_RATE_CODE_36_M = 0x05, |
| MLME_BCN_TX_RATE_CODE_48_M = 0x00, |
| MLME_BCN_TX_RATE_CODE_54_M = 0x04, |
| }; |
| |
| /** |
| * enum wlan_mlme_host_sta_ps_param_uapsd - STA UPASD params |
| */ |
| enum wlan_mlme_host_sta_ps_param_uapsd { |
| WLAN_MLME_HOST_STA_PS_UAPSD_AC0_DELIVERY_EN = (1 << 0), |
| WLAN_MLME_HOST_STA_PS_UAPSD_AC0_TRIGGER_EN = (1 << 1), |
| WLAN_MLME_HOST_STA_PS_UAPSD_AC1_DELIVERY_EN = (1 << 2), |
| WLAN_MLME_HOST_STA_PS_UAPSD_AC1_TRIGGER_EN = (1 << 3), |
| WLAN_MLME_HOST_STA_PS_UAPSD_AC2_DELIVERY_EN = (1 << 4), |
| WLAN_MLME_HOST_STA_PS_UAPSD_AC2_TRIGGER_EN = (1 << 5), |
| WLAN_MLME_HOST_STA_PS_UAPSD_AC3_DELIVERY_EN = (1 << 6), |
| WLAN_MLME_HOST_STA_PS_UAPSD_AC3_TRIGGER_EN = (1 << 7), |
| }; |
| |
| /** |
| * enum wlan_mlme_host_vdev_start_status - vdev start status code |
| */ |
| enum wlan_mlme_host_vdev_start_status { |
| WLAN_MLME_HOST_VDEV_START_OK = 0, |
| WLAN_MLME_HOST_VDEV_START_CHAN_INVALID, |
| WLAN_MLME_HOST_VDEV_START_CHAN_BLOCKED, |
| WLAN_MLME_HOST_VDEV_START_CHAN_DFS_VIOLATION, |
| WLAN_MLME_HOST_VDEV_START_CHAN_INVALID_REGDOMAIN, |
| WLAN_MLME_HOST_VDEV_START_CHAN_INVALID_BAND, |
| WLAN_MLME_HOST_VDEV_START_TIMEOUT, |
| }; |
| |
| /** |
| * enum wlan_mlme_host_start_event_param - start/restart resp event |
| */ |
| enum wlan_mlme_host_start_event_param { |
| WLAN_MLME_HOST_VDEV_START_RESP_EVENT = 0, |
| WLAN_MLME_HOST_VDEV_RESTART_RESP_EVENT, |
| }; |
| |
| /** |
| * enum wlan_mlme_custom_aggr_type: custon aggregate type |
| * @WLAN_MLME_CUSTOM_AGGR_TYPE_AMPDU: A-MPDU aggregation |
| * @WLAN_MLME_CUSTOM_AGGR_TYPE_AMSDU: A-MSDU aggregation |
| * @WLAN_MLME_CUSTOM_AGGR_TYPE_MAX: Max type |
| */ |
| enum wlan_mlme_custom_aggr_type { |
| WLAN_MLME_CUSTOM_AGGR_TYPE_AMPDU = 0, |
| WLAN_MLME_CUSTOM_AGGR_TYPE_AMSDU = 1, |
| WLAN_MLME_CUSTOM_AGGR_TYPE_MAX, |
| }; |
| |
| /** |
| * struct sta_ps_params - sta ps cmd parameter |
| * @vdev_id: vdev id |
| * @param_id: sta ps parameter |
| * @value: sta ps parameter value |
| */ |
| struct sta_ps_params { |
| uint32_t vdev_id; |
| uint32_t param_id; |
| uint32_t value; |
| }; |
| |
| /** |
| * struct tbttoffset_params - Tbttoffset event params |
| * @vdev_id: Virtual AP device identifier |
| * @tbttoffset : Tbttoffset for the virtual AP device |
| */ |
| struct tbttoffset_params { |
| uint32_t vdev_id; |
| uint32_t tbttoffset; |
| }; |
| |
| /** |
| * struct beacon_tmpl_params - beacon template cmd parameter |
| * @vdev_id: vdev id |
| * @tim_ie_offset: tim ie offset |
| * @mbssid_ie_offset: mbssid ie offset |
| * @tmpl_len: beacon template length |
| * @tmpl_len_aligned: beacon template alignment |
| * @csa_switch_count_offset: CSA swith count offset in beacon frame |
| * @ext_csa_switch_count_offset: ECSA switch count offset in beacon frame |
| * @esp_ie_offset: ESP IE offset in beacon frame |
| * @mu_edca_ie_offset: Mu EDCA IE offset in beacon frame |
| * @frm: beacon template parameter |
| */ |
| struct beacon_tmpl_params { |
| uint8_t vdev_id; |
| uint32_t tim_ie_offset; |
| uint32_t mbssid_ie_offset; |
| uint32_t tmpl_len; |
| uint32_t tmpl_len_aligned; |
| uint32_t csa_switch_count_offset; |
| uint32_t ext_csa_switch_count_offset; |
| uint32_t esp_ie_offset; |
| uint32_t mu_edca_ie_offset; |
| uint8_t *frm; |
| }; |
| |
| /** |
| * struct beacon_params - beacon cmd parameter |
| * @vdev_id: vdev id |
| * @beacon_interval: Beacon interval |
| * @wbuf: beacon buffer |
| * @frame_ctrl: frame control field |
| * @bcn_txant: beacon antenna |
| * @is_dtim_count_zero: is it dtim beacon |
| * @is_bitctl_reqd: is Bit control required |
| * @is_high_latency: Is this high latency target |
| */ |
| struct beacon_params { |
| uint8_t vdev_id; |
| uint16_t beacon_interval; |
| qdf_nbuf_t wbuf; |
| uint16_t frame_ctrl; |
| uint32_t bcn_txant; |
| bool is_dtim_count_zero; |
| bool is_bitctl_reqd; |
| bool is_high_latency; |
| }; |
| |
| /* struct fils_discovery_tmpl_params - FILS Discovery template cmd parameter |
| * @vdev_id: vdev ID |
| * @tmpl_len: FILS Discovery template length |
| * @tmpl_aligned: FILS Discovery template alignment |
| * @frm: FILS Discovery template parameter |
| */ |
| struct fils_discovery_tmpl_params { |
| uint8_t vdev_id; |
| uint32_t tmpl_len; |
| uint32_t tmpl_len_aligned; |
| uint8_t *frm; |
| }; |
| |
| /** |
| * struct mlme_channel_param - Channel parameters with all |
| * info required by target. |
| * @chan_id: channel id |
| * @pwr: channel power |
| * @mhz: channel frequency |
| * @half_rate: is half rate |
| * @quarter_rate: is quarter rate |
| * @dfs_set: is dfs channel |
| * @dfs_set_cfreq2: is secondary freq dfs channel |
| * @is_chan_passive: is this passive channel |
| * @allow_ht: HT allowed in chan |
| * @allow_vht: VHT allowed on chan |
| * @set_agile: is agile mode |
| * @phy_mode: phymode (vht80 or ht40 or ...) |
| * @cfreq1: centre frequency on primary |
| * @cfreq2: centre frequency on secondary |
| * @maxpower: max power for channel |
| * @minpower: min power for channel |
| * @maxreqpower: Max regulatory power |
| * @antennamac: Max antenna |
| * @reg_class_id: Regulatory class id. |
| */ |
| struct mlme_channel_param { |
| uint8_t chan_id; |
| uint8_t pwr; |
| uint32_t mhz; |
| uint32_t half_rate:1, |
| quarter_rate:1, |
| dfs_set:1, |
| dfs_set_cfreq2:1, |
| is_chan_passive:1, |
| allow_ht:1, |
| allow_vht:1, |
| set_agile:1; |
| enum wlan_phymode phy_mode; |
| uint32_t cfreq1; |
| uint32_t cfreq2; |
| int8_t maxpower; |
| int8_t minpower; |
| int8_t maxregpower; |
| uint8_t antennamax; |
| uint8_t reg_class_id; |
| }; |
| |
| /** |
| * struct multiple_vdev_restart_params - Multiple vdev restart cmd parameter |
| * @pdev_id: Pdev identifier |
| * @requestor_id: Unique id identifying the module |
| * @disable_hw_ack: Flag to indicate disabling HW ACK during CAC |
| * @cac_duration_ms: CAC duration on the given channel |
| * @num_vdevs: No. of vdevs that need to be restarted |
| * @ch_param: Pointer to channel_param |
| * @vdev_ids: Pointer to array of vdev_ids |
| */ |
| struct multiple_vdev_restart_params { |
| uint32_t pdev_id; |
| uint32_t requestor_id; |
| uint32_t disable_hw_ack; |
| uint32_t cac_duration_ms; |
| uint32_t num_vdevs; |
| struct mlme_channel_param ch_param; |
| uint32_t vdev_ids[WLAN_UMAC_PDEV_MAX_VDEVS]; |
| }; |
| |
| /** |
| * struct peer_flush_params - peer flush cmd parameter |
| * @peer_tid_bitmap: peer tid bitmap |
| * @vdev_id: vdev id |
| * @peer_mac: peer mac address |
| */ |
| struct peer_flush_params { |
| uint32_t peer_tid_bitmap; |
| uint8_t vdev_id; |
| uint8_t peer_mac[QDF_MAC_ADDR_SIZE]; |
| }; |
| |
| /* Default FILS DISCOVERY sent in period of 20TU */ |
| #define DEFAULT_FILS_DISCOVERY_PERIOD 20 |
| |
| /** |
| * struct config_fils_params - FILS config params |
| * @vdev_id: vdev id |
| * @fd_period: 0 - Disabled, non-zero - Period in ms (mili seconds) |
| * @send_prb_rsp_frame: send broadcast prb resp frame |
| */ |
| struct config_fils_params { |
| uint8_t vdev_id; |
| uint32_t fd_period; |
| uint32_t send_prb_rsp_frame: 1; |
| }; |
| |
| /** |
| * struct config_ratemask_params - ratemask config parameters |
| * @vdev_id: vdev id |
| * @type: Type |
| * @lower32: Lower 32 bits in the 1st 64-bit value |
| * @higher32: Higher 32 bits in the 1st 64-bit value |
| * @lower32_2: Lower 32 bits in the 2nd 64-bit value |
| */ |
| struct config_ratemask_params { |
| uint8_t vdev_id; |
| uint8_t type; |
| uint32_t lower32; |
| uint32_t higher32; |
| uint32_t lower32_2; |
| }; |
| |
| /** |
| * struct set_custom_aggr_size_params - custom aggr size params |
| * @vdev_id : vdev id |
| * @tx_aggr_size : TX aggr size |
| * @rx_aggr_size : RX aggr size |
| * @enable_bitmap: Bitmap for aggr size check |
| */ |
| struct set_custom_aggr_size_params { |
| uint32_t vdev_id; |
| uint32_t tx_aggr_size; |
| uint32_t rx_aggr_size; |
| uint32_t ac:2, |
| aggr_type:1, |
| tx_aggr_size_disable:1, |
| rx_aggr_size_disable:1, |
| tx_ac_enable:1, |
| reserved:26; |
| }; |
| |
| /** |
| * struct sifs_trigger_param - sifs_trigger cmd parameter |
| * @vdev_id: vdev id |
| * @param_value: parameter value |
| */ |
| struct sifs_trigger_param { |
| uint32_t vdev_id; |
| uint32_t param_value; |
| }; |
| |
| /** |
| * struct set_neighbour_rx_params - Neighbour RX params |
| * @vdev_id: vdev id |
| * @idx: index of param |
| * @action: action |
| * @type: Type of param |
| */ |
| struct set_neighbour_rx_params { |
| uint8_t vdev_id; |
| uint32_t idx; |
| uint32_t action; |
| uint32_t type; |
| }; |
| |
| /** |
| * struct vdev_scan_nac_rssi_params - NAC_RSSI cmd parameter |
| * @vdev_id: vdev id |
| * @bssid_addr: BSSID address |
| * @client_addr: client address |
| * @chan_num: channel number |
| * @action:NAC_RSSI action, |
| */ |
| struct vdev_scan_nac_rssi_params { |
| uint32_t vdev_id; |
| uint8_t bssid_addr[QDF_MAC_ADDR_SIZE]; |
| uint8_t client_addr[QDF_MAC_ADDR_SIZE]; |
| uint32_t chan_num; |
| uint32_t action; /* WMI_FILTER_NAC_RSSI_ACTION */ |
| }; |
| |
| /** |
| * struct vdev_start_params - vdev start cmd parameter |
| * @vdev_id: vdev id |
| * @beacon_interval: beacon interval |
| * @dtim_period: dtim period |
| * @is_restart: flag to check if it is vdev |
| * @disable_hw_ack: to update disable hw ack flag |
| * @hidden_ssid: hidden ssid |
| * @pmf_enabled: pmf enabled |
| * @ssid: ssid MAC |
| * @num_noa_descriptors: number of noa descriptors |
| * @preferred_tx_streams: preferred tx streams |
| * @preferred_rx_streams: preferred rx streams |
| * @cac_duration_ms: cac duration in milliseconds |
| * @regdomain: Regulatory domain |
| * @he_ops: HE ops |
| * @channel_param: Channel params required by target. |
| * @bcn_tx_rate_code: Beacon tx rate code. |
| * @ldpc_rx_enabled: Enable/Disable LDPC RX for this vdev |
| */ |
| struct vdev_start_params { |
| uint8_t vdev_id; |
| uint32_t beacon_interval; |
| uint32_t dtim_period; |
| bool is_restart; |
| uint32_t disable_hw_ack; |
| bool hidden_ssid; |
| bool pmf_enabled; |
| struct mlme_mac_ssid ssid; |
| uint32_t num_noa_descriptors; |
| uint32_t preferred_rx_streams; |
| uint32_t preferred_tx_streams; |
| uint32_t cac_duration_ms; |
| uint32_t regdomain; |
| uint32_t he_ops; |
| struct mlme_channel_param channel; |
| enum mlme_bcn_tx_rate_code bcn_tx_rate_code; |
| bool ldpc_rx_enabled; |
| }; |
| |
| /** |
| * struct vdev_set_params - vdev set cmd parameter |
| * @vdev_id: vdev id |
| * @param_id: parameter id |
| * @param_value: parameter value |
| */ |
| struct vdev_set_params { |
| uint32_t vdev_id; |
| uint32_t param_id; |
| uint32_t param_value; |
| }; |
| |
| /** |
| * struct vdev_create_params - vdev create cmd parameter |
| * @vdev_id: interface id |
| * @type: interface type |
| * @subtype: interface subtype |
| * @nss_2g: NSS for 2G |
| * @nss_5g: NSS for 5G |
| * @pdev_id: pdev id on pdev for this vdev |
| * @mbssid_flags: MBSS IE flags indicating vdev type |
| * @vdevid_trans: id of transmitting vdev for MBSS IE |
| */ |
| struct vdev_create_params { |
| uint8_t vdev_id; |
| uint32_t type; |
| uint32_t subtype; |
| uint8_t nss_2g; |
| uint8_t nss_5g; |
| uint32_t pdev_id; |
| uint32_t mbssid_flags; |
| uint8_t vdevid_trans; |
| }; |
| |
| /** |
| * struct vdev_delete_params - vdev delete cmd parameter |
| * @vdev_id: vdev id |
| */ |
| struct vdev_delete_params { |
| uint8_t vdev_id; |
| }; |
| |
| /** |
| * struct vdev_stop_params - vdev stop cmd parameter |
| * @vdev_id: vdev id |
| */ |
| struct vdev_stop_params { |
| uint8_t vdev_id; |
| }; |
| |
| /** |
| * struct vdev_up_params - vdev up cmd parameter |
| * @vdev_id: vdev id |
| * @assoc_id: association id |
| * @profile_idx: profile index of the connected non-trans ap (mbssid case). |
| * 0 means invalid. |
| * @profile_num: the total profile numbers of non-trans aps (mbssid case). |
| * 0 means non-MBSS AP. |
| * @trans_bssid: bssid of transmitted AP (MBSS IE case) |
| */ |
| struct vdev_up_params { |
| uint8_t vdev_id; |
| uint16_t assoc_id; |
| uint32_t profile_idx; |
| uint32_t profile_num; |
| uint8_t trans_bssid[QDF_MAC_ADDR_SIZE]; |
| }; |
| |
| /** |
| * struct vdev_down_params - vdev down cmd parameter |
| * @vdev_id: vdev id |
| */ |
| struct vdev_down_params { |
| uint8_t vdev_id; |
| }; |
| |
| /** |
| * struct peer_delete_all_params - peer delete all request parameter |
| * @vdev_id: vdev id |
| */ |
| struct peer_delete_all_params { |
| uint8_t vdev_id; |
| }; |
| |
| #endif /* __WLAN_VDEV_MGR_TX_OPS_DEFS_H__ */ |