aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath10k/wmi.h
diff options
context:
space:
mode:
authorMichal Kazior <michal.kazior@tieto.com>2014-01-23 06:48:21 -0500
committerKalle Valo <kvalo@qca.qualcomm.com>2014-01-24 03:23:37 -0500
commit748afc4735361e21ad655c0dc021ea3aaeeb3efd (patch)
tree950155c5fdf8671375d4e0af21c7857645b5ee83 /drivers/net/wireless/ath/ath10k/wmi.h
parentc2df44b39b31a730a89b13f7be90860d93d1f9d8 (diff)
ath10k: implement and use new beacon method
Until now ath10k used a copy-by-value beacon submission. The new method passes a DMA address via WMI command only. This command contains additional metadata that fixes AP behaviour with regard to powersave buffering. This also fixes strange bug when multicast traffic would freeze TX indefinitely. Signed-off-by: Michal Kazior <michal.kazior@tieto.com> Signed-off-by: Marek Puzyniak <marek.puzyniak@tieto.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath10k/wmi.h')
-rw-r--r--drivers/net/wireless/ath/ath10k/wmi.h21
1 files changed, 19 insertions, 2 deletions
diff --git a/drivers/net/wireless/ath/ath10k/wmi.h b/drivers/net/wireless/ath/ath10k/wmi.h
index 9dc90c5dd0e4..9d9a81bfbb36 100644
--- a/drivers/net/wireless/ath/ath10k/wmi.h
+++ b/drivers/net/wireless/ath/ath10k/wmi.h
@@ -3403,6 +3403,24 @@ struct wmi_bcn_tx_arg {
3403 const void *bcn; 3403 const void *bcn;
3404}; 3404};
3405 3405
3406enum wmi_bcn_tx_ref_flags {
3407 WMI_BCN_TX_REF_FLAG_DTIM_ZERO = 0x1,
3408 WMI_BCN_TX_REF_FLAG_DELIVER_CAB = 0x2,
3409};
3410
3411struct wmi_bcn_tx_ref_cmd {
3412 __le32 vdev_id;
3413 __le32 data_len;
3414 /* physical address of the frame - dma pointer */
3415 __le32 data_ptr;
3416 /* id for host to track */
3417 __le32 msdu_id;
3418 /* frame ctrl to setup PPDU desc */
3419 __le32 frame_control;
3420 /* to control CABQ traffic: WMI_BCN_TX_REF_FLAG_ */
3421 __le32 flags;
3422} __packed;
3423
3406/* Beacon filter */ 3424/* Beacon filter */
3407#define WMI_BCN_FILTER_ALL 0 /* Filter all beacons */ 3425#define WMI_BCN_FILTER_ALL 0 /* Filter all beacons */
3408#define WMI_BCN_FILTER_NONE 1 /* Pass all beacons */ 3426#define WMI_BCN_FILTER_NONE 1 /* Pass all beacons */
@@ -4223,8 +4241,7 @@ int ath10k_wmi_set_ap_ps_param(struct ath10k *ar, u32 vdev_id, const u8 *mac,
4223 enum wmi_ap_ps_peer_param param_id, u32 value); 4241 enum wmi_ap_ps_peer_param param_id, u32 value);
4224int ath10k_wmi_scan_chan_list(struct ath10k *ar, 4242int ath10k_wmi_scan_chan_list(struct ath10k *ar,
4225 const struct wmi_scan_chan_list_arg *arg); 4243 const struct wmi_scan_chan_list_arg *arg);
4226int ath10k_wmi_beacon_send_nowait(struct ath10k *ar, 4244int ath10k_wmi_beacon_send_ref_nowait(struct ath10k_vif *arvif);
4227 const struct wmi_bcn_tx_arg *arg);
4228int ath10k_wmi_pdev_set_wmm_params(struct ath10k *ar, 4245int ath10k_wmi_pdev_set_wmm_params(struct ath10k *ar,
4229 const struct wmi_pdev_set_wmm_params_arg *arg); 4246 const struct wmi_pdev_set_wmm_params_arg *arg);
4230int ath10k_wmi_request_stats(struct ath10k *ar, enum wmi_stats_id stats_id); 4247int ath10k_wmi_request_stats(struct ath10k *ar, enum wmi_stats_id stats_id);