diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath10k/wmi.h')
| -rw-r--r-- | drivers/net/wireless/ath/ath10k/wmi.h | 449 | 
1 files changed, 361 insertions, 88 deletions
diff --git a/drivers/net/wireless/ath/ath10k/wmi.h b/drivers/net/wireless/ath/ath10k/wmi.h index 21391929d318..20ce3603e64b 100644 --- a/drivers/net/wireless/ath/ath10k/wmi.h +++ b/drivers/net/wireless/ath/ath10k/wmi.h @@ -109,6 +109,45 @@ enum wmi_service {  	WMI_SERVICE_BURST,  	WMI_SERVICE_SMART_ANTENNA_SW_SUPPORT,  	WMI_SERVICE_SMART_ANTENNA_HW_SUPPORT, +	WMI_SERVICE_ROAM_SCAN_OFFLOAD, +	WMI_SERVICE_AP_PS_DETECT_OUT_OF_SYNC, +	WMI_SERVICE_EARLY_RX, +	WMI_SERVICE_STA_SMPS, +	WMI_SERVICE_FWTEST, +	WMI_SERVICE_STA_WMMAC, +	WMI_SERVICE_TDLS, +	WMI_SERVICE_MCC_BCN_INTERVAL_CHANGE, +	WMI_SERVICE_ADAPTIVE_OCS, +	WMI_SERVICE_BA_SSN_SUPPORT, +	WMI_SERVICE_FILTER_IPSEC_NATKEEPALIVE, +	WMI_SERVICE_WLAN_HB, +	WMI_SERVICE_LTE_ANT_SHARE_SUPPORT, +	WMI_SERVICE_BATCH_SCAN, +	WMI_SERVICE_QPOWER, +	WMI_SERVICE_PLMREQ, +	WMI_SERVICE_THERMAL_MGMT, +	WMI_SERVICE_RMC, +	WMI_SERVICE_MHF_OFFLOAD, +	WMI_SERVICE_COEX_SAR, +	WMI_SERVICE_BCN_TXRATE_OVERRIDE, +	WMI_SERVICE_NAN, +	WMI_SERVICE_L1SS_STAT, +	WMI_SERVICE_ESTIMATE_LINKSPEED, +	WMI_SERVICE_OBSS_SCAN, +	WMI_SERVICE_TDLS_OFFCHAN, +	WMI_SERVICE_TDLS_UAPSD_BUFFER_STA, +	WMI_SERVICE_TDLS_UAPSD_SLEEP_STA, +	WMI_SERVICE_IBSS_PWRSAVE, +	WMI_SERVICE_LPASS, +	WMI_SERVICE_EXTSCAN, +	WMI_SERVICE_D0WOW, +	WMI_SERVICE_HSOFFLOAD, +	WMI_SERVICE_ROAM_HO_OFFLOAD, +	WMI_SERVICE_RX_FULL_REORDER, +	WMI_SERVICE_DHCP_OFFLOAD, +	WMI_SERVICE_STA_RX_IPA_OFFLOAD_SUPPORT, +	WMI_SERVICE_MDNS_OFFLOAD, +	WMI_SERVICE_SAP_AUTH_OFFLOAD,  	/* keep last */  	WMI_SERVICE_MAX, @@ -215,6 +254,45 @@ static inline char *wmi_service_name(int service_id)  	SVCSTR(WMI_SERVICE_BURST);  	SVCSTR(WMI_SERVICE_SMART_ANTENNA_SW_SUPPORT);  	SVCSTR(WMI_SERVICE_SMART_ANTENNA_HW_SUPPORT); +	SVCSTR(WMI_SERVICE_ROAM_SCAN_OFFLOAD); +	SVCSTR(WMI_SERVICE_AP_PS_DETECT_OUT_OF_SYNC); +	SVCSTR(WMI_SERVICE_EARLY_RX); +	SVCSTR(WMI_SERVICE_STA_SMPS); +	SVCSTR(WMI_SERVICE_FWTEST); +	SVCSTR(WMI_SERVICE_STA_WMMAC); +	SVCSTR(WMI_SERVICE_TDLS); +	SVCSTR(WMI_SERVICE_MCC_BCN_INTERVAL_CHANGE); +	SVCSTR(WMI_SERVICE_ADAPTIVE_OCS); +	SVCSTR(WMI_SERVICE_BA_SSN_SUPPORT); +	SVCSTR(WMI_SERVICE_FILTER_IPSEC_NATKEEPALIVE); +	SVCSTR(WMI_SERVICE_WLAN_HB); +	SVCSTR(WMI_SERVICE_LTE_ANT_SHARE_SUPPORT); +	SVCSTR(WMI_SERVICE_BATCH_SCAN); +	SVCSTR(WMI_SERVICE_QPOWER); +	SVCSTR(WMI_SERVICE_PLMREQ); +	SVCSTR(WMI_SERVICE_THERMAL_MGMT); +	SVCSTR(WMI_SERVICE_RMC); +	SVCSTR(WMI_SERVICE_MHF_OFFLOAD); +	SVCSTR(WMI_SERVICE_COEX_SAR); +	SVCSTR(WMI_SERVICE_BCN_TXRATE_OVERRIDE); +	SVCSTR(WMI_SERVICE_NAN); +	SVCSTR(WMI_SERVICE_L1SS_STAT); +	SVCSTR(WMI_SERVICE_ESTIMATE_LINKSPEED); +	SVCSTR(WMI_SERVICE_OBSS_SCAN); +	SVCSTR(WMI_SERVICE_TDLS_OFFCHAN); +	SVCSTR(WMI_SERVICE_TDLS_UAPSD_BUFFER_STA); +	SVCSTR(WMI_SERVICE_TDLS_UAPSD_SLEEP_STA); +	SVCSTR(WMI_SERVICE_IBSS_PWRSAVE); +	SVCSTR(WMI_SERVICE_LPASS); +	SVCSTR(WMI_SERVICE_EXTSCAN); +	SVCSTR(WMI_SERVICE_D0WOW); +	SVCSTR(WMI_SERVICE_HSOFFLOAD); +	SVCSTR(WMI_SERVICE_ROAM_HO_OFFLOAD); +	SVCSTR(WMI_SERVICE_RX_FULL_REORDER); +	SVCSTR(WMI_SERVICE_DHCP_OFFLOAD); +	SVCSTR(WMI_SERVICE_STA_RX_IPA_OFFLOAD_SUPPORT); +	SVCSTR(WMI_SERVICE_MDNS_OFFLOAD); +	SVCSTR(WMI_SERVICE_SAP_AUTH_OFFLOAD);  	default:  		return NULL;  	} @@ -472,6 +550,8 @@ struct wmi_cmd_map {  	u32 force_fw_hang_cmdid;  	u32 gpio_config_cmdid;  	u32 gpio_output_cmdid; +	u32 pdev_get_temperature_cmdid; +	u32 vdev_set_wmm_params_cmdid;  };  /* @@ -1076,6 +1156,11 @@ enum wmi_10_2_cmd_id {  	WMI_10_2_PDEV_SET_MIMOGAIN_TABLE_CMDID,  	WMI_10_2_PDEV_RATEPWR_TABLE_CMDID,  	WMI_10_2_PDEV_RATEPWR_CHAINMSK_TABLE_CMDID, +	WMI_10_2_PDEV_GET_INFO, +	WMI_10_2_VDEV_GET_INFO, +	WMI_10_2_VDEV_ATF_REQUEST_CMDID, +	WMI_10_2_PEER_ATF_REQUEST_CMDID, +	WMI_10_2_PDEV_GET_TEMPERATURE_CMDID,  	WMI_10_2_PDEV_UTF_CMDID = WMI_10_2_END_CMDID - 1,  }; @@ -1117,6 +1202,8 @@ enum wmi_10_2_event_id {  	WMI_10_2_MCAST_BUF_RELEASE_EVENTID,  	WMI_10_2_MCAST_LIST_AGEOUT_EVENTID,  	WMI_10_2_WDS_PEER_EVENTID, +	WMI_10_2_PEER_STA_PS_STATECHG_EVENTID, +	WMI_10_2_PDEV_TEMPERATURE_EVENTID,  	WMI_10_2_PDEV_UTF_EVENTID = WMI_10_2_END_EVENTID - 1,  }; @@ -1862,6 +1949,11 @@ struct wmi_resource_config_10x {  	__le32 max_frag_entries;  } __packed; +enum wmi_10_2_feature_mask { +	WMI_10_2_RX_BATCH_MODE = BIT(0), +	WMI_10_2_ATF_CONFIG    = BIT(1), +}; +  struct wmi_resource_config_10_2 {  	struct wmi_resource_config_10x common;  	__le32 max_peer_ext_stats; @@ -1870,7 +1962,7 @@ struct wmi_resource_config_10_2 {  	__le32 be_min_free;  	__le32 vi_min_free;  	__le32 vo_min_free; -	__le32 rx_batchmode; /* 0-disable, 1-enable */ +	__le32 feature_mask;  } __packed;  #define NUM_UNITS_IS_NUM_VDEVS   0x1 @@ -2505,6 +2597,7 @@ struct wmi_pdev_param_map {  	u32 fast_channel_reset;  	u32 burst_dur;  	u32 burst_enable; +	u32 cal_period;  };  #define WMI_PDEV_PARAM_UNSUPPORTED 0 @@ -2715,6 +2808,9 @@ enum wmi_10x_pdev_param {  	WMI_10X_PDEV_PARAM_SET_MCAST2UCAST_MODE,  	WMI_10X_PDEV_PARAM_SET_MCAST2UCAST_BUFFER,  	WMI_10X_PDEV_PARAM_REMOVE_MCAST2UCAST_BUFFER, +	WMI_10X_PDEV_PARAM_PEER_STA_PS_STATECHG_ENABLE, +	WMI_10X_PDEV_PARAM_RTS_FIXED_RATE, +	WMI_10X_PDEV_PARAM_CAL_PERIOD  };  struct wmi_pdev_set_param_cmd { @@ -2722,6 +2818,9 @@ struct wmi_pdev_set_param_cmd {  	__le32 param_value;  } __packed; +/* valid period is 1 ~ 60000ms, unit in millisecond */ +#define WMI_PDEV_PARAM_CAL_PERIOD_MAX 60000 +  struct wmi_pdev_get_tpc_config_cmd {  	/* parameter   */  	__le32 param; @@ -2841,14 +2940,14 @@ struct wmi_wmm_params_arg {  	u32 no_ack;  }; -struct wmi_pdev_set_wmm_params_arg { +struct wmi_wmm_params_all_arg {  	struct wmi_wmm_params_arg ac_be;  	struct wmi_wmm_params_arg ac_bk;  	struct wmi_wmm_params_arg ac_vi;  	struct wmi_wmm_params_arg ac_vo;  }; -struct wal_dbg_tx_stats { +struct wmi_pdev_stats_tx {  	/* Num HTT cookies queued to dispatch list */  	__le32 comp_queued; @@ -2918,7 +3017,7 @@ struct wal_dbg_tx_stats {  	__le32 txop_ovf;  } __packed; -struct wal_dbg_rx_stats { +struct wmi_pdev_stats_rx {  	/* Cnts any change in ring routing mid-ppdu */  	__le32 mid_ppdu_route_change; @@ -2952,17 +3051,11 @@ struct wal_dbg_rx_stats {  	__le32 mpdu_errs;  } __packed; -struct wal_dbg_peer_stats { +struct wmi_pdev_stats_peer {  	/* REMOVE THIS ONCE REAL PEER STAT COUNTERS ARE ADDED */  	__le32 dummy;  } __packed; -struct wal_dbg_stats { -	struct wal_dbg_tx_stats tx; -	struct wal_dbg_rx_stats rx; -	struct wal_dbg_peer_stats peer; -} __packed; -  enum wmi_stats_id {  	WMI_REQUEST_PEER_STAT	= 0x01,  	WMI_REQUEST_AP_STAT	= 0x02 @@ -3029,23 +3122,38 @@ struct wmi_stats_event {  	u8 data[0];  } __packed; +struct wmi_10_2_stats_event { +	__le32 stats_id; /* %WMI_REQUEST_ */ +	__le32 num_pdev_stats; +	__le32 num_pdev_ext_stats; +	__le32 num_vdev_stats; +	__le32 num_peer_stats; +	__le32 num_bcnflt_stats; +	u8 data[0]; +} __packed; +  /*   * PDEV statistics   * TODO: add all PDEV stats here   */ +struct wmi_pdev_stats_base { +	__le32 chan_nf; +	__le32 tx_frame_count; +	__le32 rx_frame_count; +	__le32 rx_clear_count; +	__le32 cycle_count; +	__le32 phy_err_count; +	__le32 chan_tx_pwr; +} __packed; +  struct wmi_pdev_stats { -	__le32 chan_nf;        /* Channel noise floor */ -	__le32 tx_frame_count; /* TX frame count */ -	__le32 rx_frame_count; /* RX frame count */ -	__le32 rx_clear_count; /* rx clear count */ -	__le32 cycle_count;    /* cycle count */ -	__le32 phy_err_count;  /* Phy error count */ -	__le32 chan_tx_pwr;    /* channel tx power */ -	struct wal_dbg_stats wal; /* WAL dbg stats */ +	struct wmi_pdev_stats_base base; +	struct wmi_pdev_stats_tx tx; +	struct wmi_pdev_stats_rx rx; +	struct wmi_pdev_stats_peer peer;  } __packed; -struct wmi_10x_pdev_stats { -	struct wmi_pdev_stats old; +struct wmi_pdev_stats_extra {  	__le32 ack_rx_bad;  	__le32 rts_bad;  	__le32 rts_good; @@ -3054,6 +3162,30 @@ struct wmi_10x_pdev_stats {  	__le32 mib_int_count;  } __packed; +struct wmi_10x_pdev_stats { +	struct wmi_pdev_stats_base base; +	struct wmi_pdev_stats_tx tx; +	struct wmi_pdev_stats_rx rx; +	struct wmi_pdev_stats_peer peer; +	struct wmi_pdev_stats_extra extra; +} __packed; + +struct wmi_pdev_stats_mem { +	__le32 dram_free; +	__le32 iram_free; +} __packed; + +struct wmi_10_2_pdev_stats { +	struct wmi_pdev_stats_base base; +	struct wmi_pdev_stats_tx tx; +	__le32 mc_drop; +	struct wmi_pdev_stats_rx rx; +	__le32 pdev_rx_timeout; +	struct wmi_pdev_stats_mem mem; +	struct wmi_pdev_stats_peer peer; +	struct wmi_pdev_stats_extra extra; +} __packed; +  /*   * VDEV statistics   * TODO: add all VDEV stats here @@ -3077,6 +3209,32 @@ struct wmi_10x_peer_stats {  	__le32 peer_rx_rate;  } __packed; +struct wmi_10_2_peer_stats { +	struct wmi_peer_stats old; +	__le32 peer_rx_rate; +	__le32 current_per; +	__le32 retries; +	__le32 tx_rate_count; +	__le32 max_4ms_frame_len; +	__le32 total_sub_frames; +	__le32 tx_bytes; +	__le32 num_pkt_loss_overflow[4]; +	__le32 num_pkt_loss_excess_retry[4]; +} __packed; + +struct wmi_10_2_4_peer_stats { +	struct wmi_10_2_peer_stats common; +	__le32 unknown_value; /* FIXME: what is this word? */ +} __packed; + +struct wmi_10_2_pdev_ext_stats { +	__le32 rx_rssi_comb; +	__le32 rx_rssi[4]; +	__le32 rx_mcs[10]; +	__le32 tx_mcs[10]; +	__le32 ack_rssi; +} __packed; +  struct wmi_vdev_create_cmd {  	__le32 vdev_id;  	__le32 vdev_type; @@ -3930,6 +4088,13 @@ enum wmi_sta_ps_param_pspoll_count {  	 * Values greater than 0 indicate the maximum numer of PS-Poll frames  	 * FW will send before waking up.  	 */ + +	/* When u-APSD is enabled the firmware will be very reluctant to exit +	 * STA PS. This could result in very poor Rx performance with STA doing +	 * PS-Poll for each and every buffered frame. This value is a bit +	 * arbitrary. +	 */ +	WMI_STA_PS_PSPOLL_COUNT_UAPSD = 3,  };  /* @@ -3955,6 +4120,30 @@ enum wmi_sta_ps_param_uapsd {  	WMI_STA_PS_UAPSD_AC3_TRIGGER_EN  = (1 << 7),  }; +#define WMI_STA_UAPSD_MAX_INTERVAL_MSEC UINT_MAX + +struct wmi_sta_uapsd_auto_trig_param { +	__le32 wmm_ac; +	__le32 user_priority; +	__le32 service_interval; +	__le32 suspend_interval; +	__le32 delay_interval; +}; + +struct wmi_sta_uapsd_auto_trig_cmd_fixed_param { +	__le32 vdev_id; +	struct wmi_mac_addr peer_macaddr; +	__le32 num_ac; +}; + +struct wmi_sta_uapsd_auto_trig_arg { +	u32 wmm_ac; +	u32 user_priority; +	u32 service_interval; +	u32 suspend_interval; +	u32 delay_interval; +}; +  enum wmi_sta_powersave_param {  	/*  	 * Controls how frames are retrievd from AP while STA is sleeping @@ -4120,7 +4309,7 @@ struct wmi_bcn_info {  struct wmi_host_swba_event {  	__le32 vdev_map; -	struct wmi_bcn_info bcn_info[1]; +	struct wmi_bcn_info bcn_info[0];  } __packed;  #define WMI_MAX_AP_VDEV 16 @@ -4325,7 +4514,7 @@ struct wmi_peer_set_q_empty_callback_cmd {  #define WMI_PEER_SPATIAL_MUX    0x00200000  #define WMI_PEER_VHT            0x02000000  #define WMI_PEER_80MHZ          0x04000000 -#define WMI_PEER_PMF            0x08000000 +#define WMI_PEER_VHT_2G         0x08000000  /*   * Peer rate capabilities. @@ -4476,6 +4665,11 @@ enum wmi_sta_keepalive_method {  	WMI_STA_KEEPALIVE_METHOD_UNSOLICITATED_ARP_RESPONSE = 2,  }; +#define WMI_STA_KEEPALIVE_INTERVAL_DISABLE 0 + +/* Firmware crashes if keepalive interval exceeds this limit */ +#define WMI_STA_KEEPALIVE_INTERVAL_MAX_SECONDS 0xffff +  /* note: ip4 addresses are in network byte order, i.e. big endian */  struct wmi_sta_keepalive_arp_resp {  	__be32 src_ip4_addr; @@ -4491,6 +4685,16 @@ struct wmi_sta_keepalive_cmd {  	struct wmi_sta_keepalive_arp_resp arp_resp;  } __packed; +struct wmi_sta_keepalive_arg { +	u32 vdev_id; +	u32 enabled; +	u32 method; +	u32 interval; +	__be32 src_ip4_addr; +	__be32 dest_ip4_addr; +	const u8 dest_mac_addr[ETH_ALEN]; +}; +  enum wmi_force_fw_hang_type {  	WMI_FORCE_FW_HANG_ASSERT = 1,  	WMI_FORCE_FW_HANG_NO_DETECT, @@ -4567,6 +4771,58 @@ struct wmi_dbglog_cfg_cmd {  #define WMI_MAX_MEM_REQS 16 +struct wmi_scan_ev_arg { +	__le32 event_type; /* %WMI_SCAN_EVENT_ */ +	__le32 reason; /* %WMI_SCAN_REASON_ */ +	__le32 channel_freq; /* only valid for WMI_SCAN_EVENT_FOREIGN_CHANNEL */ +	__le32 scan_req_id; +	__le32 scan_id; +	__le32 vdev_id; +}; + +struct wmi_mgmt_rx_ev_arg { +	__le32 channel; +	__le32 snr; +	__le32 rate; +	__le32 phy_mode; +	__le32 buf_len; +	__le32 status; /* %WMI_RX_STATUS_ */ +}; + +struct wmi_ch_info_ev_arg { +	__le32 err_code; +	__le32 freq; +	__le32 cmd_flags; +	__le32 noise_floor; +	__le32 rx_clear_count; +	__le32 cycle_count; +}; + +struct wmi_vdev_start_ev_arg { +	__le32 vdev_id; +	__le32 req_id; +	__le32 resp_type; /* %WMI_VDEV_RESP_ */ +	__le32 status; +}; + +struct wmi_peer_kick_ev_arg { +	const u8 *mac_addr; +}; + +struct wmi_swba_ev_arg { +	__le32 vdev_map; +	const struct wmi_tim_info *tim_info[WMI_MAX_AP_VDEV]; +	const struct wmi_p2p_noa_info *noa_info[WMI_MAX_AP_VDEV]; +}; + +struct wmi_phyerr_ev_arg { +	__le32 num_phyerrs; +	__le32 tsf_l32; +	__le32 tsf_u32; +	__le32 buf_len; +	const struct wmi_phyerr *phyerrs; +}; +  struct wmi_svc_rdy_ev_arg {  	__le32 min_tx_power;  	__le32 max_tx_power; @@ -4574,6 +4830,7 @@ struct wmi_svc_rdy_ev_arg {  	__le32 vht_cap;  	__le32 sw_ver0;  	__le32 sw_ver1; +	__le32 fw_build;  	__le32 phy_capab;  	__le32 num_rf_chains;  	__le32 eeprom_rd; @@ -4583,83 +4840,99 @@ struct wmi_svc_rdy_ev_arg {  	const struct wlan_host_mem_req *mem_reqs[WMI_MAX_MEM_REQS];  }; +struct wmi_rdy_ev_arg { +	__le32 sw_version; +	__le32 abi_version; +	__le32 status; +	const u8 *mac_addr; +}; + +struct wmi_pdev_temperature_event { +	/* temperature value in Celcius degree */ +	__le32 temperature; +} __packed; +  struct ath10k;  struct ath10k_vif; -struct ath10k_fw_stats; +struct ath10k_fw_stats_pdev; +struct ath10k_fw_stats_peer;  int ath10k_wmi_attach(struct ath10k *ar);  void ath10k_wmi_detach(struct ath10k *ar);  int ath10k_wmi_wait_for_service_ready(struct ath10k *ar);  int ath10k_wmi_wait_for_unified_ready(struct ath10k *ar); +struct sk_buff *ath10k_wmi_alloc_skb(struct ath10k *ar, u32 len);  int ath10k_wmi_connect(struct ath10k *ar);  struct sk_buff *ath10k_wmi_alloc_skb(struct ath10k *ar, u32 len);  int ath10k_wmi_cmd_send(struct ath10k *ar, struct sk_buff *skb, u32 cmd_id); - -int ath10k_wmi_pdev_suspend_target(struct ath10k *ar, u32 suspend_opt); -int ath10k_wmi_pdev_resume_target(struct ath10k *ar); -int ath10k_wmi_pdev_set_regdomain(struct ath10k *ar, u16 rd, u16 rd2g, -				  u16 rd5g, u16 ctl2g, u16 ctl5g, -				  enum wmi_dfs_region dfs_reg); -int ath10k_wmi_pdev_set_param(struct ath10k *ar, u32 id, u32 value); -int ath10k_wmi_cmd_init(struct ath10k *ar); -int ath10k_wmi_start_scan(struct ath10k *ar, const struct wmi_start_scan_arg *); +int ath10k_wmi_cmd_send_nowait(struct ath10k *ar, struct sk_buff *skb, +			       u32 cmd_id);  void ath10k_wmi_start_scan_init(struct ath10k *ar, struct wmi_start_scan_arg *); -int ath10k_wmi_stop_scan(struct ath10k *ar, -			 const struct wmi_stop_scan_arg *arg); -int ath10k_wmi_vdev_create(struct ath10k *ar, u32 vdev_id, -			   enum wmi_vdev_type type, -			   enum wmi_vdev_subtype subtype, -			   const u8 macaddr[ETH_ALEN]); -int ath10k_wmi_vdev_delete(struct ath10k *ar, u32 vdev_id); -int ath10k_wmi_vdev_start(struct ath10k *ar, -			  const struct wmi_vdev_start_request_arg *); -int ath10k_wmi_vdev_restart(struct ath10k *ar, -			    const struct wmi_vdev_start_request_arg *); -int ath10k_wmi_vdev_stop(struct ath10k *ar, u32 vdev_id); -int ath10k_wmi_vdev_up(struct ath10k *ar, u32 vdev_id, u32 aid, -		       const u8 *bssid); -int ath10k_wmi_vdev_down(struct ath10k *ar, u32 vdev_id); -int ath10k_wmi_vdev_set_param(struct ath10k *ar, u32 vdev_id, -			      u32 param_id, u32 param_value); -int ath10k_wmi_vdev_install_key(struct ath10k *ar, -				const struct wmi_vdev_install_key_arg *arg); -int ath10k_wmi_vdev_spectral_conf(struct ath10k *ar, -				  const struct wmi_vdev_spectral_conf_arg *arg); -int ath10k_wmi_vdev_spectral_enable(struct ath10k *ar, u32 vdev_id, u32 trigger, -				    u32 enable); -int ath10k_wmi_peer_create(struct ath10k *ar, u32 vdev_id, -			   const u8 peer_addr[ETH_ALEN]); -int ath10k_wmi_peer_delete(struct ath10k *ar, u32 vdev_id, -			   const u8 peer_addr[ETH_ALEN]); -int ath10k_wmi_peer_flush(struct ath10k *ar, u32 vdev_id, -			  const u8 peer_addr[ETH_ALEN], u32 tid_bitmap); -int ath10k_wmi_peer_set_param(struct ath10k *ar, u32 vdev_id, -			      const u8 *peer_addr, -			      enum wmi_peer_param param_id, u32 param_value); -int ath10k_wmi_peer_assoc(struct ath10k *ar, -			  const struct wmi_peer_assoc_complete_arg *arg); -int ath10k_wmi_set_psmode(struct ath10k *ar, u32 vdev_id, -			  enum wmi_sta_ps_mode psmode); -int ath10k_wmi_set_sta_ps_param(struct ath10k *ar, u32 vdev_id, -				enum wmi_sta_powersave_param param_id, -				u32 value); -int ath10k_wmi_set_ap_ps_param(struct ath10k *ar, u32 vdev_id, const u8 *mac, -			       enum wmi_ap_ps_peer_param param_id, u32 value); -int ath10k_wmi_scan_chan_list(struct ath10k *ar, -			      const struct wmi_scan_chan_list_arg *arg); -int ath10k_wmi_beacon_send_ref_nowait(struct ath10k_vif *arvif); -int ath10k_wmi_pdev_set_wmm_params(struct ath10k *ar, -				   const struct wmi_pdev_set_wmm_params_arg *arg); -int ath10k_wmi_request_stats(struct ath10k *ar, enum wmi_stats_id stats_id); -int ath10k_wmi_force_fw_hang(struct ath10k *ar, -			     enum wmi_force_fw_hang_type type, u32 delay_ms); -int ath10k_wmi_mgmt_tx(struct ath10k *ar, struct sk_buff *skb); -int ath10k_wmi_dbglog_cfg(struct ath10k *ar, u32 module_enable); -int ath10k_wmi_pull_fw_stats(struct ath10k *ar, struct sk_buff *skb, -			     struct ath10k_fw_stats *stats); -int ath10k_wmi_pdev_pktlog_enable(struct ath10k *ar, u32 ev_list); -int ath10k_wmi_pdev_pktlog_disable(struct ath10k *ar); + +void ath10k_wmi_pull_pdev_stats_base(const struct wmi_pdev_stats_base *src, +				     struct ath10k_fw_stats_pdev *dst); +void ath10k_wmi_pull_pdev_stats_tx(const struct wmi_pdev_stats_tx *src, +				   struct ath10k_fw_stats_pdev *dst); +void ath10k_wmi_pull_pdev_stats_rx(const struct wmi_pdev_stats_rx *src, +				   struct ath10k_fw_stats_pdev *dst); +void ath10k_wmi_pull_pdev_stats_extra(const struct wmi_pdev_stats_extra *src, +				      struct ath10k_fw_stats_pdev *dst); +void ath10k_wmi_pull_peer_stats(const struct wmi_peer_stats *src, +				struct ath10k_fw_stats_peer *dst); +void ath10k_wmi_put_host_mem_chunks(struct ath10k *ar, +				    struct wmi_host_mem_chunks *chunks); +void ath10k_wmi_put_start_scan_common(struct wmi_start_scan_common *cmn, +				      const struct wmi_start_scan_arg *arg); +void ath10k_wmi_set_wmm_param(struct wmi_wmm_params *params, +			      const struct wmi_wmm_params_arg *arg); +void ath10k_wmi_put_wmi_channel(struct wmi_channel *ch, +				const struct wmi_channel_arg *arg); +int ath10k_wmi_start_scan_verify(const struct wmi_start_scan_arg *arg); + +int ath10k_wmi_event_scan(struct ath10k *ar, struct sk_buff *skb); +int ath10k_wmi_event_mgmt_rx(struct ath10k *ar, struct sk_buff *skb); +void ath10k_wmi_event_chan_info(struct ath10k *ar, struct sk_buff *skb); +void ath10k_wmi_event_echo(struct ath10k *ar, struct sk_buff *skb); +int ath10k_wmi_event_debug_mesg(struct ath10k *ar, struct sk_buff *skb); +void ath10k_wmi_event_update_stats(struct ath10k *ar, struct sk_buff *skb); +void ath10k_wmi_event_vdev_start_resp(struct ath10k *ar, struct sk_buff *skb); +void ath10k_wmi_event_vdev_stopped(struct ath10k *ar, struct sk_buff *skb); +void ath10k_wmi_event_peer_sta_kickout(struct ath10k *ar, struct sk_buff *skb); +void ath10k_wmi_event_host_swba(struct ath10k *ar, struct sk_buff *skb); +void ath10k_wmi_event_tbttoffset_update(struct ath10k *ar, struct sk_buff *skb); +void ath10k_wmi_event_dfs(struct ath10k *ar, +			  const struct wmi_phyerr *phyerr, u64 tsf); +void ath10k_wmi_event_spectral_scan(struct ath10k *ar, +				    const struct wmi_phyerr *phyerr, +				    u64 tsf); +void ath10k_wmi_event_phyerr(struct ath10k *ar, struct sk_buff *skb); +void ath10k_wmi_event_roam(struct ath10k *ar, struct sk_buff *skb); +void ath10k_wmi_event_profile_match(struct ath10k *ar, struct sk_buff *skb); +void ath10k_wmi_event_debug_print(struct ath10k *ar, struct sk_buff *skb); +void ath10k_wmi_event_pdev_qvit(struct ath10k *ar, struct sk_buff *skb); +void ath10k_wmi_event_wlan_profile_data(struct ath10k *ar, struct sk_buff *skb); +void ath10k_wmi_event_rtt_measurement_report(struct ath10k *ar, +					     struct sk_buff *skb); +void ath10k_wmi_event_tsf_measurement_report(struct ath10k *ar, +					     struct sk_buff *skb); +void ath10k_wmi_event_rtt_error_report(struct ath10k *ar, struct sk_buff *skb); +void ath10k_wmi_event_wow_wakeup_host(struct ath10k *ar, struct sk_buff *skb); +void ath10k_wmi_event_dcs_interference(struct ath10k *ar, struct sk_buff *skb); +void ath10k_wmi_event_pdev_tpc_config(struct ath10k *ar, struct sk_buff *skb); +void ath10k_wmi_event_pdev_ftm_intg(struct ath10k *ar, struct sk_buff *skb); +void ath10k_wmi_event_gtk_offload_status(struct ath10k *ar, +					 struct sk_buff *skb); +void ath10k_wmi_event_gtk_rekey_fail(struct ath10k *ar, struct sk_buff *skb); +void ath10k_wmi_event_delba_complete(struct ath10k *ar, struct sk_buff *skb); +void ath10k_wmi_event_addba_complete(struct ath10k *ar, struct sk_buff *skb); +void ath10k_wmi_event_vdev_install_key_complete(struct ath10k *ar, +						struct sk_buff *skb); +void ath10k_wmi_event_inst_rssi_stats(struct ath10k *ar, struct sk_buff *skb); +void ath10k_wmi_event_vdev_standby_req(struct ath10k *ar, struct sk_buff *skb); +void ath10k_wmi_event_vdev_resume_req(struct ath10k *ar, struct sk_buff *skb); +void ath10k_wmi_event_service_ready(struct ath10k *ar, struct sk_buff *skb); +int ath10k_wmi_event_ready(struct ath10k *ar, struct sk_buff *skb);  #endif /* _WMI_H_ */  | 

