diff options
author | Michal Kazior <michal.kazior@tieto.com> | 2014-01-23 06:48:21 -0500 |
---|---|---|
committer | Kalle Valo <kvalo@qca.qualcomm.com> | 2014-01-24 03:23:37 -0500 |
commit | 748afc4735361e21ad655c0dc021ea3aaeeb3efd (patch) | |
tree | 950155c5fdf8671375d4e0af21c7857645b5ee83 /drivers/net/wireless/ath/ath10k/wmi.h | |
parent | c2df44b39b31a730a89b13f7be90860d93d1f9d8 (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.h | 21 |
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 | ||
3406 | enum 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 | |||
3411 | struct 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); |
4224 | int ath10k_wmi_scan_chan_list(struct ath10k *ar, | 4242 | int 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); |
4226 | int ath10k_wmi_beacon_send_nowait(struct ath10k *ar, | 4244 | int ath10k_wmi_beacon_send_ref_nowait(struct ath10k_vif *arvif); |
4227 | const struct wmi_bcn_tx_arg *arg); | ||
4228 | int ath10k_wmi_pdev_set_wmm_params(struct ath10k *ar, | 4245 | int 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); |
4230 | int ath10k_wmi_request_stats(struct ath10k *ar, enum wmi_stats_id stats_id); | 4247 | int ath10k_wmi_request_stats(struct ath10k *ar, enum wmi_stats_id stats_id); |