ath6kl: assign Tx packet drop threshold per endpoint based on AC priority
authorChilam Ng <chilamng@qca.qualcomm.com>
Thu, 9 Feb 2012 10:17:01 +0000 (02:17 -0800)
committerKalle Valo <kvalo@qca.qualcomm.com>
Mon, 27 Feb 2012 17:14:51 +0000 (19:14 +0200)
Tx packets will begin to drop when there are multiple traffic priorities
and the current traffic is not the highest priority and the remaining
cookies drop below a certain number, which is fixed for all AC. It is
possilbe that lower priority AC have more traffic which will consume
more cookies and lock out higher priority AC from having any. Assign
each endpoint (AC) with a different Tx-packet-drop threshold so lower
priority AC is more likely to drop packets and the cookies become more
available to higher priority AC.

Signed-off-by: Chilam Ng <chilamng@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath6kl/htc.c
drivers/net/wireless/ath/ath6kl/htc.h
drivers/net/wireless/ath/ath6kl/txrx.c

index c703ef9c5313ff8624c3723411abcd9165b7f130..920e7c07fd4f497bb0dddcc8584203d8a919a855 100644 (file)
@@ -2483,6 +2483,15 @@ int ath6kl_htc_conn_service(struct htc_target *target,
        endpoint->cred_dist.endpoint = assigned_ep;
        endpoint->cred_dist.cred_sz = target->tgt_cred_sz;
 
+       switch (endpoint->svc_id) {
+       case WMI_DATA_BK_SVC:
+               endpoint->tx_drop_packet_threshold = MAX_DEF_COOKIE_NUM / 3;
+               break;
+       default:
+               endpoint->tx_drop_packet_threshold = MAX_HI_COOKIE_NUM;
+               break;
+       }
+
        if (conn_req->max_rxmsg_sz) {
                /*
                 * Override cred_per_msg calculation, this optimizes
index 51976657133477e75fffca3f9c5efeb903889ff8..2de4d6fc1e32b41d7a68d8da2f56b5832824c8a8 100644 (file)
@@ -501,6 +501,7 @@ struct htc_endpoint {
        u8 seqno;
        u32 conn_flags;
        struct htc_endpoint_stats ep_st;
+       u16 tx_drop_packet_threshold;
 };
 
 struct htc_control_buffer {
index 633637ace661e94d9208c1883d7e701b04cba6a8..802291346d30ceef30d44650d07c969ae2c35e47 100644 (file)
@@ -594,7 +594,8 @@ enum htc_send_full_action ath6kl_tx_queue_full(struct htc_target *target,
         */
        if (ar->ac_stream_pri_map[ar->ep2ac_map[endpoint]] <
            ar->hiac_stream_active_pri &&
-           ar->cookie_count <= MAX_HI_COOKIE_NUM)
+           ar->cookie_count <=
+                       target->endpoint[endpoint].tx_drop_packet_threshold)
                /*
                 * Give preference to the highest priority stream by
                 * dropping the packets which overflowed.