ath10k: handle 10.4 firmware wmi swba event

10.4 firmware swba event payload has space to accommodate upto
512 client traffic indication info & one p2p noa descriptor.
It's is not matching with exiting swba event format defined for
non 10.4 firmware. Non 10.4 firmware swba event format is designed
to support only upto only 128 client and four p2p notice of absence
descriptor.

following changes are done in this patch to enable ath10k to handle
10.4 firmware swba event,

 - link generic ath10k_wmi_event_host_swba() to handle 10.4 swba
   event in 10.4 wmi rx handler.

 - add 10.4 specific swba event structure wmi_10_4_host_swba_event.

 - new function ath10k_wmi_10_4_op_pull_swba_ev() to parse
   10.4 swba event.

 - increase tim_bitmap[] size in ath10k_vif to 64 to hold 512 station
   power save state.

Signed-off-by: Raja Mani <rmani@qti.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
This commit is contained in:
Raja Mani
2015-06-22 20:22:21 +05:30
committed by Kalle Valo
부모 a03fee347c
커밋 3cec3be3d1
3개의 변경된 파일104개의 추가작업 그리고 2개의 파일을 삭제

파일 보기

@@ -5199,6 +5199,47 @@ struct wmi_host_swba_event {
struct wmi_bcn_info bcn_info[0];
} __packed;
/* 16 words = 512 client + 1 word = for guard */
#define WMI_10_4_TIM_BITMAP_ARRAY_SIZE 17
struct wmi_10_4_tim_info {
__le32 tim_len;
__le32 tim_mcast;
__le32 tim_bitmap[WMI_10_4_TIM_BITMAP_ARRAY_SIZE];
__le32 tim_changed;
__le32 tim_num_ps_pending;
} __packed;
#define WMI_10_4_P2P_MAX_NOA_DESCRIPTORS 1
struct wmi_10_4_p2p_noa_info {
/* Bit 0 - Flag to indicate an update in NOA schedule
* Bits 7-1 - Reserved
*/
u8 changed;
/* NOA index */
u8 index;
/* Bit 0 - Opp PS state of the AP
* Bits 1-7 - Ctwindow in TUs
*/
u8 ctwindow_oppps;
/* Number of NOA descriptors */
u8 num_descriptors;
struct wmi_p2p_noa_descriptor
noa_descriptors[WMI_10_4_P2P_MAX_NOA_DESCRIPTORS];
} __packed;
struct wmi_10_4_bcn_info {
struct wmi_10_4_tim_info tim_info;
struct wmi_10_4_p2p_noa_info p2p_noa_info;
} __packed;
struct wmi_10_4_host_swba_event {
__le32 vdev_map;
struct wmi_10_4_bcn_info bcn_info[0];
} __packed;
#define WMI_MAX_AP_VDEV 16
struct wmi_tbtt_offset_event {