diff options
Diffstat (limited to 'drivers/net/wireless/ath/carl9170/tx.c')
-rw-r--r-- | drivers/net/wireless/ath/carl9170/tx.c | 37 |
1 files changed, 2 insertions, 35 deletions
diff --git a/drivers/net/wireless/ath/carl9170/tx.c b/drivers/net/wireless/ath/carl9170/tx.c index e0d2374e0c77..e6be5e6c1723 100644 --- a/drivers/net/wireless/ath/carl9170/tx.c +++ b/drivers/net/wireless/ath/carl9170/tx.c | |||
@@ -1042,41 +1042,8 @@ retry: | |||
1042 | queue = TID_TO_WME_AC(tid_info->tid); | 1042 | queue = TID_TO_WME_AC(tid_info->tid); |
1043 | 1043 | ||
1044 | spin_lock_bh(&tid_info->lock); | 1044 | spin_lock_bh(&tid_info->lock); |
1045 | if (tid_info->state != CARL9170_TID_STATE_XMIT) { | 1045 | if (tid_info->state != CARL9170_TID_STATE_XMIT) |
1046 | first = skb_peek(&tid_info->queue); | 1046 | goto processed; |
1047 | if (first) { | ||
1048 | struct ieee80211_tx_info *txinfo; | ||
1049 | struct carl9170_tx_info *arinfo; | ||
1050 | |||
1051 | txinfo = IEEE80211_SKB_CB(first); | ||
1052 | arinfo = (void *) txinfo->rate_driver_data; | ||
1053 | |||
1054 | if (time_is_after_jiffies(arinfo->timeout + | ||
1055 | msecs_to_jiffies(CARL9170_QUEUE_TIMEOUT)) | ||
1056 | == true) | ||
1057 | goto processed; | ||
1058 | |||
1059 | /* | ||
1060 | * We've been waiting for the frame which | ||
1061 | * matches "snx" (start sequence of the | ||
1062 | * next aggregate) for some time now. | ||
1063 | * | ||
1064 | * But it never arrived. Therefore | ||
1065 | * jump to the next available frame | ||
1066 | * and kick-start the transmission. | ||
1067 | * | ||
1068 | * Note: This might induce odd latency | ||
1069 | * spikes because the receiver will be | ||
1070 | * waiting for the lost frame too. | ||
1071 | */ | ||
1072 | ar->tx_ampdu_timeout++; | ||
1073 | |||
1074 | tid_info->snx = carl9170_get_seq(first); | ||
1075 | tid_info->state = CARL9170_TID_STATE_XMIT; | ||
1076 | } else { | ||
1077 | goto processed; | ||
1078 | } | ||
1079 | } | ||
1080 | 1047 | ||
1081 | tid_info->counter++; | 1048 | tid_info->counter++; |
1082 | first = skb_peek(&tid_info->queue); | 1049 | first = skb_peek(&tid_info->queue); |