mac80211: Update the station failed frames average when minstrel is used.
[pandora-kernel.git] / net / mac80211 / rc80211_minstrel.c
index 7c51429..3ea9740 100644 (file)
@@ -155,12 +155,16 @@ minstrel_tx_status(void *priv, struct ieee80211_supported_band *sband,
                   struct sk_buff *skb)
 {
        struct minstrel_sta_info *mi = priv_sta;
+       struct minstrel_priv *mp = (struct minstrel_priv *)priv;
        struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
        struct ieee80211_tx_rate *ar = info->status.rates;
+       struct ieee80211_local *local = hw_to_local(mp->hw);
+       struct sta_info *si;
        int i, ndx;
        int success;
 
        success = !!(info->flags & IEEE80211_TX_STAT_ACK);
+       si = sta_info_get(local, sta->addr);
 
        for (i = 0; i < IEEE80211_TX_MAX_RATES; i++) {
                if (ar[i].idx < 0)
@@ -172,8 +176,12 @@ minstrel_tx_status(void *priv, struct ieee80211_supported_band *sband,
 
                mi->r[ndx].attempts += ar[i].count;
 
-               if ((i != IEEE80211_TX_MAX_RATES - 1) && (ar[i + 1].idx < 0))
+               if ((i != IEEE80211_TX_MAX_RATES - 1) && (ar[i + 1].idx < 0)) {
                        mi->r[ndx].success += success;
+                       if (si)
+                               si->fail_avg = (18050 - mi->r[ndx].probability)
+                                       / 180;
+               }
        }
 
        if ((info->flags & IEEE80211_TX_CTL_RATE_CTRL_PROBE) && (i >= 0))