diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/xmit.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/xmit.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c index fa3dcfdf7174..c2bfc57958d8 100644 --- a/drivers/net/wireless/ath/ath9k/xmit.c +++ b/drivers/net/wireless/ath/ath9k/xmit.c | |||
@@ -542,7 +542,7 @@ static void ath_tx_complete_aggr(struct ath_softc *sc, struct ath_txq *txq, | |||
542 | /* prepend un-acked frames to the beginning of the pending frame queue */ | 542 | /* prepend un-acked frames to the beginning of the pending frame queue */ |
543 | if (!skb_queue_empty(&bf_pending)) { | 543 | if (!skb_queue_empty(&bf_pending)) { |
544 | if (an->sleeping) | 544 | if (an->sleeping) |
545 | ieee80211_sta_set_tim(sta); | 545 | ieee80211_sta_set_buffered(sta, tid->tidno, true); |
546 | 546 | ||
547 | spin_lock_bh(&txq->axq_lock); | 547 | spin_lock_bh(&txq->axq_lock); |
548 | if (clear_filter) | 548 | if (clear_filter) |
@@ -1153,12 +1153,13 @@ void ath_tx_aggr_stop(struct ath_softc *sc, struct ieee80211_sta *sta, u16 tid) | |||
1153 | ath_tx_flush_tid(sc, txtid); | 1153 | ath_tx_flush_tid(sc, txtid); |
1154 | } | 1154 | } |
1155 | 1155 | ||
1156 | bool ath_tx_aggr_sleep(struct ath_softc *sc, struct ath_node *an) | 1156 | void ath_tx_aggr_sleep(struct ieee80211_sta *sta, struct ath_softc *sc, |
1157 | struct ath_node *an) | ||
1157 | { | 1158 | { |
1158 | struct ath_atx_tid *tid; | 1159 | struct ath_atx_tid *tid; |
1159 | struct ath_atx_ac *ac; | 1160 | struct ath_atx_ac *ac; |
1160 | struct ath_txq *txq; | 1161 | struct ath_txq *txq; |
1161 | bool buffered = false; | 1162 | bool buffered; |
1162 | int tidno; | 1163 | int tidno; |
1163 | 1164 | ||
1164 | for (tidno = 0, tid = &an->tid[tidno]; | 1165 | for (tidno = 0, tid = &an->tid[tidno]; |
@@ -1172,8 +1173,7 @@ bool ath_tx_aggr_sleep(struct ath_softc *sc, struct ath_node *an) | |||
1172 | 1173 | ||
1173 | spin_lock_bh(&txq->axq_lock); | 1174 | spin_lock_bh(&txq->axq_lock); |
1174 | 1175 | ||
1175 | if (!skb_queue_empty(&tid->buf_q)) | 1176 | buffered = !skb_queue_empty(&tid->buf_q); |
1176 | buffered = true; | ||
1177 | 1177 | ||
1178 | tid->sched = false; | 1178 | tid->sched = false; |
1179 | list_del(&tid->list); | 1179 | list_del(&tid->list); |
@@ -1184,9 +1184,9 @@ bool ath_tx_aggr_sleep(struct ath_softc *sc, struct ath_node *an) | |||
1184 | } | 1184 | } |
1185 | 1185 | ||
1186 | spin_unlock_bh(&txq->axq_lock); | 1186 | spin_unlock_bh(&txq->axq_lock); |
1187 | } | ||
1188 | 1187 | ||
1189 | return buffered; | 1188 | ieee80211_sta_set_buffered(sta, tidno, buffered); |
1189 | } | ||
1190 | } | 1190 | } |
1191 | 1191 | ||
1192 | void ath_tx_aggr_wakeup(struct ath_softc *sc, struct ath_node *an) | 1192 | void ath_tx_aggr_wakeup(struct ath_softc *sc, struct ath_node *an) |
@@ -2043,10 +2043,9 @@ static void ath_tx_rc_status(struct ath_softc *sc, struct ath_buf *bf, | |||
2043 | tx_info->flags |= IEEE80211_TX_STAT_AMPDU; | 2043 | tx_info->flags |= IEEE80211_TX_STAT_AMPDU; |
2044 | 2044 | ||
2045 | BUG_ON(nbad > nframes); | 2045 | BUG_ON(nbad > nframes); |
2046 | |||
2047 | tx_info->status.ampdu_len = nframes; | ||
2048 | tx_info->status.ampdu_ack_len = nframes - nbad; | ||
2049 | } | 2046 | } |
2047 | tx_info->status.ampdu_len = nframes; | ||
2048 | tx_info->status.ampdu_ack_len = nframes - nbad; | ||
2050 | 2049 | ||
2051 | if ((ts->ts_status & ATH9K_TXERR_FILT) == 0 && | 2050 | if ((ts->ts_status & ATH9K_TXERR_FILT) == 0 && |
2052 | (tx_info->flags & IEEE80211_TX_CTL_NO_ACK) == 0) { | 2051 | (tx_info->flags & IEEE80211_TX_CTL_NO_ACK) == 0) { |