- if (tid_info->state != CARL9170_TID_STATE_XMIT) {
- first = skb_peek(&tid_info->queue);
- if (first) {
- struct ieee80211_tx_info *txinfo;
- struct carl9170_tx_info *arinfo;
-
- txinfo = IEEE80211_SKB_CB(first);
- arinfo = (void *) txinfo->rate_driver_data;
-
- if (time_is_after_jiffies(arinfo->timeout +
- msecs_to_jiffies(CARL9170_QUEUE_TIMEOUT))
- == true)
- goto processed;
-
- /*
- * We've been waiting for the frame which
- * matches "snx" (start sequence of the
- * next aggregate) for some time now.
- *
- * But it never arrived. Therefore
- * jump to the next available frame
- * and kick-start the transmission.
- *
- * Note: This might induce odd latency
- * spikes because the receiver will be
- * waiting for the lost frame too.
- */
- ar->tx_ampdu_timeout++;
-
- tid_info->snx = carl9170_get_seq(first);
- tid_info->state = CARL9170_TID_STATE_XMIT;
- } else {
- goto processed;
- }
- }