diff options
Diffstat (limited to 'drivers/net')
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/xmit.c | 9 | 
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c index a47bf6924ef..ad6e0b306c3 100644 --- a/drivers/net/wireless/ath/ath9k/xmit.c +++ b/drivers/net/wireless/ath/ath9k/xmit.c @@ -630,6 +630,7 @@ static void ath_tx_process_buffer(struct ath_softc *sc, struct ath_txq *txq,  				  struct ath_tx_status *ts, struct ath_buf *bf,  				  struct list_head *bf_head)  { +	struct ieee80211_tx_info *info;  	bool txok, flush;  	txok = !(ts->ts_status & ATH9K_TXERR_MASK); @@ -641,8 +642,12 @@ static void ath_tx_process_buffer(struct ath_softc *sc, struct ath_txq *txq,  		txq->axq_ampdu_depth--;  	if (!bf_isampdu(bf)) { -		if (!flush) +		if (!flush) { +			info = IEEE80211_SKB_CB(bf->bf_mpdu); +			memcpy(info->control.rates, bf->rates, +			       sizeof(info->control.rates));  			ath_tx_rc_status(sc, bf, ts, 1, txok ? 0 : 1, txok); +		}  		ath_tx_complete_buf(sc, bf, txq, bf_head, ts, txok);  	} else  		ath_tx_complete_aggr(sc, txq, bf, bf_head, ts, txok); @@ -686,7 +691,7 @@ static u32 ath_lookup_rate(struct ath_softc *sc, struct ath_buf *bf,  	skb = bf->bf_mpdu;  	tx_info = IEEE80211_SKB_CB(skb); -	rates = tx_info->control.rates; +	rates = bf->rates;  	/*  	 * Find the lowest frame length among the rate series that will have a  |