Skip to content

Commit

Permalink
mac80211: Minor optimization in tx status handling
Browse files Browse the repository at this point in the history
ieee80211_tx_status iterates over all tx rates the driver reports back
in order to
1) mark tx rates as invalid if the driver cannot have tried that rate
2) find the actually used tx rate for the final retransmission

By leaving the for loop when the first invalid rate index is found we
can move the rates_idx assignment after the loop and therefore save
a few assignments and conditionals.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
helmut-jacob authored and linvjw committed Mar 30, 2011
1 parent a9cbe96 commit be7974a
Showing 1 changed file with 7 additions and 4 deletions.
11 changes: 7 additions & 4 deletions net/mac80211/status.c
Original file line number Diff line number Diff line change
Expand Up @@ -189,16 +189,19 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb)
bool acked;

for (i = 0; i < IEEE80211_TX_MAX_RATES; i++) {
/* the HW cannot have attempted that rate */
if (i >= hw->max_report_rates) {
if (info->status.rates[i].idx < 0) {
break;
} else if (i >= hw->max_report_rates) {
/* the HW cannot have attempted that rate */
info->status.rates[i].idx = -1;
info->status.rates[i].count = 0;
} else if (info->status.rates[i].idx >= 0) {
rates_idx = i;
break;
}

retry_count += info->status.rates[i].count;
}
rates_idx = i - 1;

if (retry_count < 0)
retry_count = 0;

Expand Down

0 comments on commit be7974a

Please sign in to comment.