]> git.karo-electronics.de Git - linux-beck.git/commitdiff
ath9k: Bail out properly before calculating rate index
authorSujith Manoharan <c_manoha@qca.qualcomm.com>
Fri, 10 Aug 2012 11:17:03 +0000 (16:47 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 10 Aug 2012 19:27:16 +0000 (15:27 -0400)
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/rc.c

index a94c52b24a0b78adab8afcbcae49796f63be3f2c..0e3d20a864e6541f0d60a1145291a0207438b8f1 100644 (file)
@@ -1264,23 +1264,12 @@ static void ath_tx_status(void *priv, struct ieee80211_supported_band *sband,
        struct ath_softc *sc = priv;
        struct ath_rate_priv *ath_rc_priv = priv_sta;
        struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb);
-       struct ieee80211_hdr *hdr;
+       struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
        int final_ts_idx = 0, tx_status = 0;
        int long_retry = 0;
-       __le16 fc;
+       __le16 fc = hdr->frame_control;
        int i;
 
-       hdr = (struct ieee80211_hdr *)skb->data;
-       fc = hdr->frame_control;
-       for (i = 0; i < sc->hw->max_rates; i++) {
-               struct ieee80211_tx_rate *rate = &tx_info->status.rates[i];
-               if (rate->idx < 0 || !rate->count)
-                       break;
-
-               final_ts_idx = i;
-               long_retry = rate->count - 1;
-       }
-
        if (!priv_sta || !ieee80211_is_data(fc))
                return;
 
@@ -1292,6 +1281,15 @@ static void ath_tx_status(void *priv, struct ieee80211_supported_band *sband,
        if (tx_info->flags & IEEE80211_TX_STAT_TX_FILTERED)
                return;
 
+       for (i = 0; i < sc->hw->max_rates; i++) {
+               struct ieee80211_tx_rate *rate = &tx_info->status.rates[i];
+               if (rate->idx < 0 || !rate->count)
+                       break;
+
+               final_ts_idx = i;
+               long_retry = rate->count - 1;
+       }
+
        if (!(tx_info->flags & IEEE80211_TX_STAT_ACK))
                tx_status = 1;