Author: adrian
Date: Sun Apr  8 04:51:25 2012
New Revision: 234018
URL: http://svn.freebsd.org/changeset/base/234018

Log:
  Add some statistics to track BAR TX.

Modified:
  head/sys/net80211/ieee80211_ht.c
  head/sys/net80211/ieee80211_ioctl.h

Modified: head/sys/net80211/ieee80211_ht.c
==============================================================================
--- head/sys/net80211/ieee80211_ht.c    Sun Apr  8 04:48:59 2012        
(r234017)
+++ head/sys/net80211/ieee80211_ht.c    Sun Apr  8 04:51:25 2012        
(r234018)
@@ -2182,10 +2182,13 @@ bar_timeout(void *arg)
        if ((tap->txa_flags & IEEE80211_AGGR_BARPEND) == 0)
                return;
        /* XXX ? */
-       if (tap->txa_attempts >= ieee80211_bar_maxtries)
+       if (tap->txa_attempts >= ieee80211_bar_maxtries) {
+               ni->ni_vap->iv_stats.is_ampdu_bar_tx_fail++;
                ieee80211_ampdu_stop(ni, tap, IEEE80211_REASON_TIMEOUT);
-       else
+       } else {
+               ni->ni_vap->iv_stats.is_ampdu_bar_tx_retry++;
                ieee80211_send_bar(ni, tap, tap->txa_seqpending);
+       }
 }
 
 static void
@@ -2210,6 +2213,7 @@ bar_tx_complete(struct ieee80211_node *n
            __func__, tap->txa_ac, tap->txa_flags,
            callout_pending(&tap->txa_timer), status);
 
+       ni->ni_vap->iv_stats.is_ampdu_bar_tx++;
        /* XXX locking */
        if ((tap->txa_flags & IEEE80211_AGGR_BARPEND) &&
            callout_pending(&tap->txa_timer)) {
@@ -2325,6 +2329,7 @@ ieee80211_send_bar(struct ieee80211_node
        if (ret != 0) {
                /* xmit failed, clear state flag */
                tap->txa_flags &= ~IEEE80211_AGGR_BARPEND;
+               vap->iv_stats.is_ampdu_bar_tx_fail++;
                return ret;
        }
        /* XXX hack against tx complete happening before timer is started */
@@ -2332,6 +2337,7 @@ ieee80211_send_bar(struct ieee80211_node
                bar_start_timer(tap);
        return 0;
 bad:
+       vap->iv_stats.is_ampdu_bar_tx_fail++;
        ieee80211_free_node(ni);
        return ret;
 #undef senderr

Modified: head/sys/net80211/ieee80211_ioctl.h
==============================================================================
--- head/sys/net80211/ieee80211_ioctl.h Sun Apr  8 04:48:59 2012        
(r234017)
+++ head/sys/net80211/ieee80211_ioctl.h Sun Apr  8 04:51:25 2012        
(r234018)
@@ -242,8 +242,11 @@ struct ieee80211_stats {
        uint32_t        is_rx_badalign;         /* dropped 'cuz misaligned */
        uint32_t        is_hwmp_proxy;          /* PREP for proxy route */
        uint32_t        is_beacon_bad;          /* Number of bad beacons */
-       
-       uint32_t        is_spare[10];
+       uint32_t        is_ampdu_bar_tx;        /* A-MPDU BAR frames TXed */
+       uint32_t        is_ampdu_bar_tx_retry;  /* A-MPDU BAR frames TX rtry */
+       uint32_t        is_ampdu_bar_tx_fail;   /* A-MPDU BAR frames TX fail */
+
+       uint32_t        is_spare[7];
 };
 
 /*
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to