|
@@ -258,11 +258,22 @@ void rt2x00lib_txdone(struct queue_entry *entry,
|
|
|
/*
|
|
|
* Frame was send with retries, hardware tried
|
|
|
* different rates to send out the frame, at each
|
|
|
- * retry it lowered the rate 1 step.
|
|
|
+ * retry it lowered the rate 1 step except when the
|
|
|
+ * lowest rate was used.
|
|
|
*/
|
|
|
for (i = 0; i < retry_rates && i < IEEE80211_TX_MAX_RATES; i++) {
|
|
|
tx_info->status.rates[i].idx = rate_idx - i;
|
|
|
tx_info->status.rates[i].flags = rate_flags;
|
|
|
+
|
|
|
+ if (rate_idx - i == 0) {
|
|
|
+ /*
|
|
|
+ * The lowest rate (index 0) was used until the
|
|
|
+ * number of max retries was reached.
|
|
|
+ */
|
|
|
+ tx_info->status.rates[i].count = retry_rates - i;
|
|
|
+ i++;
|
|
|
+ break;
|
|
|
+ }
|
|
|
tx_info->status.rates[i].count = 1;
|
|
|
}
|
|
|
if (i < (IEEE80211_TX_MAX_RATES - 1))
|