Author: weongyo
Date: Sat May 15 21:18:15 2010
New Revision: 208120
URL: http://svn.freebsd.org/changeset/base/208120

Log:
  - fixes a bug that it didn't initialize the ratectl after association;
    so ni_txrate returned 0 which is a invalid result.
  - The fourth argument of ieee80211_ratectl_tx_complete() could be not
    NULL.
  
  Reported by:  Gustau P?rez <gperez at entel.upc.edu>
  Tested by:    Gustau P?rez <gperez at entel.upc.edu>,
                Ian FREISLICH <ianf at clue.co.za>
  MFC after:    3 days

Modified:
  head/sys/dev/bwn/if_bwn.c

Modified: head/sys/dev/bwn/if_bwn.c
==============================================================================
--- head/sys/dev/bwn/if_bwn.c   Sat May 15 20:26:10 2010        (r208119)
+++ head/sys/dev/bwn/if_bwn.c   Sat May 15 21:18:15 2010        (r208120)
@@ -8329,6 +8329,7 @@ bwn_phy_reset(struct bwn_mac *mac)
 static int
 bwn_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg)
 {
+       const struct ieee80211_txparam *tp;
        struct bwn_vap *bvp = BWN_VAP(vap);
        struct ieee80211com *ic= vap->iv_ic;
        struct ifnet *ifp = ic->ic_ifp;
@@ -8377,6 +8378,11 @@ bwn_newstate(struct ieee80211vap *vap, e
                bwn_set_pretbtt(mac);
                bwn_spu_setdelay(mac, 0);
                bwn_set_macaddr(mac);
+
+               /* Initializes ratectl for a node. */
+               tp = &vap->iv_txparms[ieee80211_chan2mode(ic->ic_curchan)];
+               if (tp->ucastrate == IEEE80211_FIXED_RATE_NONE)
+                       ieee80211_ratectl_node_init(vap->iv_bss);
        }
 
        BWN_UNLOCK(sc);
@@ -8994,7 +9000,7 @@ bwn_handle_txeof(struct bwn_mac *mac, co
        struct bwn_stats *stats = &mac->mac_stats;
        struct ieee80211_node *ni;
        struct ieee80211vap *vap;
-       int slot;
+       int retrycnt = 0, slot;
 
        BWN_ASSERT_LOCKED(mac->mac_sc);
 
@@ -9027,7 +9033,7 @@ bwn_handle_txeof(struct bwn_mac *mac, co
                                            status->ack ?
                                              IEEE80211_RATECTL_TX_SUCCESS :
                                              IEEE80211_RATECTL_TX_FAILURE,
-                                           NULL, 0);
+                                           &retrycnt, 0);
                                        break;
                                }
                                slot = bwn_dma_nextslot(dr, slot);
@@ -9048,7 +9054,7 @@ bwn_handle_txeof(struct bwn_mac *mac, co
                            status->ack ?
                              IEEE80211_RATECTL_TX_SUCCESS :
                              IEEE80211_RATECTL_TX_FAILURE,
-                           NULL, 0);
+                           &retrycnt, 0);
                }
                bwn_pio_handle_txeof(mac, status);
        }
_______________________________________________
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