Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=52865dfd520ddd3d1176947106759ff944f0f8af
Commit:     52865dfd520ddd3d1176947106759ff944f0f8af
Parent:     23a24defa0da567eac615828563935c195fb48dc
Author:     Johannes Berg <[EMAIL PROTECTED]>
AuthorDate: Fri Jul 27 15:43:22 2007 +0200
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Wed Oct 10 16:47:32 2007 -0700

    [MAC80211]: fix bug for per-sta stats
    
    pre_rx handlers can't really touch sta since for IBSS it might not be
    assigned yet, it can create sta info structs on-the-fly.
    
    Signed-off-by: Johannes Berg <[EMAIL PROTECTED]>
    Signed-off-by: Jiri Benc <[EMAIL PROTECTED]>
    Signed-off-by: John W. Linville <[EMAIL PROTECTED]>
---
 net/mac80211/rx.c |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 21d4015..f255579 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -28,6 +28,8 @@
 /* pre-rx handlers
  *
  * these don't have dev/sdata fields in the rx data
+ * The sta value should also not be used because it may
+ * be NULL even though a STA (in IBSS mode) will be added.
  */
 
 static ieee80211_txrx_result
@@ -50,12 +52,11 @@ ieee80211_rx_h_parse_qos(struct ieee80211_txrx_data *rx)
                        tid = 0; /* 802.1d - Best Effort */
                }
        }
-#ifdef CONFIG_MAC80211_DEBUG_COUNTERS
+
        I802_DEBUG_INC(rx->local->wme_rx_queue[tid]);
-       if (rx->sta) {
+       /* only a debug counter, sta might not be assigned properly yet */
+       if (rx->sta)
                I802_DEBUG_INC(rx->sta->wme_rx_queue[tid]);
-       }
-#endif /* CONFIG_MAC80211_DEBUG_COUNTERS */
 
        rx->u.rx.queue = tid;
        /* Set skb->priority to 1d tag if highest order bit of TID is not set.
@@ -110,8 +111,6 @@ ieee80211_rx_h_load_stats(struct ieee80211_txrx_data *rx)
        /* Divide channel_use by 8 to avoid wrapping around the counter */
        load >>= CHAN_UTIL_SHIFT;
        local->channel_use_raw += load;
-       if (rx->sta)
-               rx->sta->channel_use_raw += load;
        rx->u.rx.load = load;
 
        return TXRX_CONTINUE;
@@ -129,6 +128,8 @@ ieee80211_rx_handler ieee80211_rx_pre_handlers[] =
 static ieee80211_txrx_result
 ieee80211_rx_h_if_stats(struct ieee80211_txrx_data *rx)
 {
+       if (rx->sta)
+               rx->sta->channel_use_raw += rx->u.rx.load;
        rx->sdata->channel_use_raw += rx->u.rx.load;
        return TXRX_CONTINUE;
 }
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to