summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/ath/ath6kl/htc.h
diff options
context:
space:
mode:
authorChilam Ng <chilamng@qca.qualcomm.com>2012-02-07 09:33:00 (GMT)
committerKalle Valo <kvalo@qca.qualcomm.com>2012-02-08 09:33:49 (GMT)
commitb29072cc7b0e08ace48ab709c40cf6246fb2e8b0 (patch)
treea360185622713df0934983e90d7a9277eaeb661a /drivers/net/wireless/ath/ath6kl/htc.h
parent1b2df4073447234034e2329f0df584c6346a8ec3 (diff)
downloadlinux-b29072cc7b0e08ace48ab709c40cf6246fb2e8b0.tar.xz
ath6kl: prioritize Tx bundling based on AC priorities
Tx bundling is the more efficient use of SDIO bus and allows more packet transfers with fewer bus transactions, and is a way to improve overall throughput. However, Tx bundling has only 4 scatter request resources available. When there are multiple traffic streams of different priorities, it's possible that lower priority traffic may hog all the scatter requests and lock out the higher prioirty traffic from bundling. Tx bundling is now enabled per AC. When an AC do a scatter request and the remaining scatter request resources is lower than a configurable threshold, it will disable Tx bundling for all AC's of lower priorities. When an AC has Tx bundling disabled and has no Tx bundles sent in a consecutive and configurable number of packets, Tx bundling will be re-enabled for that AC. Signed-off-by: Chilam Ng <chilamng@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath6kl/htc.h')
-rw-r--r--drivers/net/wireless/ath/ath6kl/htc.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath6kl/htc.h b/drivers/net/wireless/ath/ath6kl/htc.h
index 84a2ab5..5197665 100644
--- a/drivers/net/wireless/ath/ath6kl/htc.h
+++ b/drivers/net/wireless/ath/ath6kl/htc.h
@@ -88,6 +88,8 @@
#define WMI_DATA_VO_SVC MAKE_SERVICE_ID(WMI_SERVICE_GROUP, 4)
#define WMI_MAX_SERVICES 5
+#define WMM_NUM_AC 4
+
/* reserved and used to flush ALL packets */
#define HTC_TX_PACKET_TAG_ALL 0
#define HTC_SERVICE_TX_PACKET_TAG 1
@@ -532,7 +534,7 @@ struct htc_target {
/* max messages per bundle for HTC */
int msg_per_bndl_max;
- bool tx_bndl_enable;
+ u32 tx_bndl_mask;
int rx_bndl_enable;
int max_rx_bndl_sz;
int max_tx_bndl_sz;
@@ -544,6 +546,9 @@ struct htc_target {
int max_xfer_szper_scatreq;
int chk_irq_status_cnt;
+
+ /* counts the number of Tx without bundling continously per AC */
+ u32 ac_tx_count[WMM_NUM_AC];
};
void *ath6kl_htc_create(struct ath6kl *ar);