mac80211: Minor optimization in tx status handling
authorHelmut Schaa <helmut.schaa@googlemail.com>
Mon, 21 Mar 2011 14:07:55 +0000 (15:07 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 30 Mar 2011 18:15:16 +0000 (14:15 -0400)
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>
net/mac80211/status.c

index b936dd29e92bc7bb2d73f9b75eaec55077d5b55a..3ed3c835fbbf0e0f57000825150e62d4b737fc91 100644 (file)
@@ -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;