PERFORCE change 137958 for review

Sam Leffler sam at FreeBSD.org
Mon Mar 17 22:06:34 UTC 2008


http://perforce.freebsd.org/chv.cgi?CH=137958

Change 137958 by sam at sam_ebb on 2008/03/17 22:06:05

	replace rssadapt with amrr; it's far more suited for this
	device (though it's unclear any device is really suited
	for rssadapt as it's presently implemented)

Affected files ...

.. //depot/projects/vap/sys/dev/ral/if_ral_pci.c#7 edit
.. //depot/projects/vap/sys/dev/ral/rt2560.c#21 edit
.. //depot/projects/vap/sys/dev/ral/rt2560reg.h#5 edit
.. //depot/projects/vap/sys/dev/ral/rt2560var.h#13 edit
.. //depot/projects/vap/sys/dev/ral/rt2661.c#18 edit
.. //depot/projects/vap/sys/dev/ral/rt2661var.h#10 edit

Differences ...

==== //depot/projects/vap/sys/dev/ral/if_ral_pci.c#7 (text+ko) ====

@@ -50,7 +50,7 @@
 
 #include <net80211/ieee80211_var.h>
 #include <net80211/ieee80211_radiotap.h>
-#include <net80211/ieee80211_rssadapt.h>
+#include <net80211/ieee80211_amrr.h>
 
 #include <dev/pci/pcireg.h>
 #include <dev/pci/pcivar.h>
@@ -61,7 +61,7 @@
 MODULE_DEPEND(ral, pci, 1, 1, 1);
 MODULE_DEPEND(ral, firmware, 1, 1, 1);
 MODULE_DEPEND(ral, wlan, 1, 1, 1);
-MODULE_DEPEND(ral, wlan_rssadapt, 1, 1, 1);
+MODULE_DEPEND(ral, wlan_amrr, 1, 1, 1);
 
 struct ral_pci_ident {
 	uint16_t	vendor;

==== //depot/projects/vap/sys/dev/ral/rt2560.c#21 (text) ====

@@ -55,7 +55,7 @@
 #include <net80211/ieee80211_phy.h>
 #include <net80211/ieee80211_radiotap.h>
 #include <net80211/ieee80211_regdomain.h>
-#include <net80211/ieee80211_rssadapt.h>
+#include <net80211/ieee80211_amrr.h>
 
 #include <netinet/in.h>
 #include <netinet/in_systm.h>
@@ -427,7 +427,10 @@
 	vap->iv_newstate = rt2560_newstate;
 	vap->iv_update_beacon = rt2560_beacon_update;
 
-	ieee80211_rssadapt_init(&rvp->rssadapt, vap, 100 /*ms*/);
+	ieee80211_amrr_init(&rvp->amrr, vap,
+	    IEEE80211_AMRR_MIN_SUCCESS_THRESHOLD,
+	    IEEE80211_AMRR_MAX_SUCCESS_THRESHOLD,
+	    500 /* ms */);
 
 	/* complete setup */
 	ieee80211_vap_attach(vap, ieee80211_media_change, ieee80211_media_status);
@@ -441,7 +444,7 @@
 {
 	struct rt2560_vap *rvp = RT2560_VAP(vap);
 
-	ieee80211_rssadapt_cleanup(&rvp->rssadapt);
+	ieee80211_amrr_cleanup(&rvp->amrr);
 	ieee80211_vap_detach(vap);
 	free(rvp, M_80211_VAP);
 }
@@ -777,8 +780,8 @@
 {
 	struct ieee80211vap *vap = ni->ni_vap;
 
-	ieee80211_rssadapt_node_init(&RT2560_VAP(vap)->rssadapt,
-	    &RT2560_NODE(ni)->rssadapt, ni);
+	ieee80211_amrr_node_init(&RT2560_VAP(vap)->amrr,
+	    &RT2560_NODE(ni)->amrr, ni);
 }
 
 static int
@@ -956,6 +959,8 @@
 	struct rt2560_tx_data *data;
 	struct rt2560_node *rn;
 	struct mbuf *m;
+	uint32_t flags;
+	int retrycnt;
 
 	bus_dmamap_sync(sc->txq.desc_dmat, sc->txq.desc_map,
 	    BUS_DMASYNC_POSTREAD);
@@ -964,39 +969,43 @@
 		desc = &sc->txq.desc[sc->txq.next];
 		data = &sc->txq.data[sc->txq.next];
 
-		if ((le32toh(desc->flags) & RT2560_TX_BUSY) ||
-		    (le32toh(desc->flags) & RT2560_TX_CIPHER_BUSY) ||
-		    !(le32toh(desc->flags) & RT2560_TX_VALID))
+		flags = le32toh(desc->flags);
+		if ((flags & RT2560_TX_BUSY) ||
+		    (flags & RT2560_TX_CIPHER_BUSY) ||
+		    !(flags & RT2560_TX_VALID))
 			break;
 
 		rn = (struct rt2560_node *)data->ni;
 		m = data->m;
 
-		switch (le32toh(desc->flags) & RT2560_TX_RESULT_MASK) {
+		switch (flags & RT2560_TX_RESULT_MASK) {
 		case RT2560_TX_SUCCESS:
 			DPRINTFN(sc, 10, "%s\n", "data frame sent successfully");
-			if (data->rix != IEEE80211_FIXED_RATE_NONE) {
-				ieee80211_rssadapt_tx_complete(&rn->rssadapt,
-				    IEEE80211_RSSADAPT_SUCCESS,
-				    m->m_pkthdr.len, data->rssi);
-			}
+			if (data->rix != IEEE80211_FIXED_RATE_NONE)
+				ieee80211_amrr_tx_complete(&rn->amrr,
+				    IEEE80211_AMRR_SUCCESS, 0);
 			ifp->if_opackets++;
 			break;
 
 		case RT2560_TX_SUCCESS_RETRY:
+			retrycnt = RT2560_TX_RETRYCNT(flags);
+
 			DPRINTFN(sc, 9, "data frame sent after %u retries\n",
-			    (le32toh(desc->flags) >> 5) & 0x7);
+			    retrycnt);
+			if (data->rix != IEEE80211_FIXED_RATE_NONE)
+				ieee80211_amrr_tx_complete(&rn->amrr,
+				    IEEE80211_AMRR_SUCCESS, retrycnt);
 			ifp->if_opackets++;
 			break;
 
 		case RT2560_TX_FAIL_RETRY:
-			DPRINTFN(sc, 9, "%s\n",
-			    "sending data frame failed (too much retries)");
-			if (data->rix != IEEE80211_FIXED_RATE_NONE) {
-				ieee80211_rssadapt_tx_complete(&rn->rssadapt,
-				    IEEE80211_RSSADAPT_FAILURE,
-				    m->m_pkthdr.len, data->rssi);
-			}
+			retrycnt = RT2560_TX_RETRYCNT(flags);
+
+			DPRINTFN(sc, 9, "data frame failed after %d retries\n",
+			    retrycnt);
+			if (data->rix != IEEE80211_FIXED_RATE_NONE)
+				ieee80211_amrr_tx_complete(&rn->amrr,
+				    IEEE80211_AMRR_FAILURE, retrycnt);
 			ifp->if_oerrors++;
 			break;
 
@@ -1004,7 +1013,7 @@
 		case RT2560_TX_FAIL_OTHER:
 		default:
 			device_printf(sc->sc_dev, "sending data frame failed "
-			    "0x%08x\n", le32toh(desc->flags));
+			    "0x%08x\n", flags);
 			ifp->if_oerrors++;
 		}
 
@@ -1582,7 +1591,7 @@
 
 	data->m = m0;
 	data->ni = ni;
-	/* management frames are not taken into account for rssadapt */
+	/* management frames are not taken into account for amrr */
 	data->rix = IEEE80211_FIXED_RATE_NONE;
 
 	wh = mtod(m0, struct ieee80211_frame *);
@@ -1674,7 +1683,7 @@
 
 	data->m = mprot;
 	data->ni = ieee80211_ref_node(ni);
-	/* ctl frames are not taken into account for rssadapt */
+	/* ctl frames are not taken into account for amrr */
 	data->rix = IEEE80211_FIXED_RATE_NONE;
 
 	rt2560_setup_tx_desc(sc, desc, flags, mprot->m_pkthdr.len, protrate, 1,
@@ -1799,8 +1808,7 @@
 	} else if (tp->ucastrate != IEEE80211_FIXED_RATE_NONE) {
 		rate = tp->ucastrate;
 	} else {
-		(void) ieee80211_rssadapt_choose(ni, &RT2560_NODE(ni)->rssadapt,
-		    m0->m_pkthdr.len);
+		(void) ieee80211_amrr_choose(ni, &RT2560_NODE(ni)->amrr);
 		rate = ni->ni_txrate;
 	}
 

==== //depot/projects/vap/sys/dev/ral/rt2560reg.h#5 (text) ====

@@ -208,6 +208,8 @@
 #define RT2560_TX_CIPHER_TKIP		(3 << 29)
 #define RT2560_TX_CIPHER_AES		(4 << 29)
 
+#define RT2560_TX_RETRYCNT(v)	(((v) >> 5) & 0x7)
+
 	uint32_t	physaddr;
 	uint16_t	wme;
 #define RT2560_LOGCWMAX(x)	(((x) & 0xf) << 12)

==== //depot/projects/vap/sys/dev/ral/rt2560var.h#13 (text) ====

@@ -95,14 +95,14 @@
 
 struct rt2560_node {
 	struct ieee80211_node	ni;
-	struct ieee80211_rssadapt_node rssadapt;
+	struct ieee80211_amrr_node amrr;
 };
 #define	RT2560_NODE(ni)		((struct rt2560_node *)(ni))
 
 struct rt2560_vap {
 	struct ieee80211vap	ral_vap;
 	struct ieee80211_beacon_offsets	ral_bo;
-	struct ieee80211_rssadapt rssadapt;
+	struct ieee80211_amrr	amrr;
 
 	int			(*ral_newstate)(struct ieee80211vap *,
 				    enum ieee80211_state, int);

==== //depot/projects/vap/sys/dev/ral/rt2661.c#18 (text) ====

@@ -56,7 +56,7 @@
 #include <net80211/ieee80211_phy.h>
 #include <net80211/ieee80211_radiotap.h>
 #include <net80211/ieee80211_regdomain.h>
-#include <net80211/ieee80211_rssadapt.h>
+#include <net80211/ieee80211_amrr.h>
 
 #include <netinet/in.h>
 #include <netinet/in_systm.h>
@@ -427,7 +427,10 @@
 	vap->iv_update_beacon = rt2661_beacon_update;
 #endif
 
-	ieee80211_rssadapt_init(&rvp->rssadapt, vap, 100 /*ms*/);
+	ieee80211_amrr_init(&rvp->amrr, vap,
+	    IEEE80211_AMRR_MIN_SUCCESS_THRESHOLD,
+	    IEEE80211_AMRR_MAX_SUCCESS_THRESHOLD,
+	    500 /* ms */);
 
 	/* complete setup */
 	ieee80211_vap_attach(vap, ieee80211_media_change, ieee80211_media_status);
@@ -441,7 +444,7 @@
 {
 	struct rt2661_vap *rvp = RT2661_VAP(vap);
 
-	ieee80211_rssadapt_cleanup(&rvp->rssadapt);
+	ieee80211_amrr_cleanup(&rvp->amrr);
 	ieee80211_vap_detach(vap);
 	free(rvp, M_80211_VAP);
 }
@@ -786,8 +789,8 @@
 {
 	struct ieee80211vap *vap = ni->ni_vap;
 
-	ieee80211_rssadapt_node_init(&RT2661_VAP(vap)->rssadapt,
-	    &RT2661_NODE(ni)->rssadapt, ni);
+	ieee80211_amrr_node_init(&RT2661_VAP(vap)->amrr,
+	    &RT2661_NODE(ni)->amrr, ni);
 }
 
 static int
@@ -935,23 +938,20 @@
 
 			DPRINTFN(sc, 10, "data frame sent successfully after "
 			    "%d retries\n", retrycnt);
-			if (retrycnt == 0 &&
-			    data->rix != IEEE80211_FIXED_RATE_NONE) {
-				ieee80211_rssadapt_tx_complete(&rn->rssadapt,
-				    IEEE80211_RSSADAPT_SUCCESS,
-				    m->m_pkthdr.len, data->rssi);
-			}
+			if (data->rix != IEEE80211_FIXED_RATE_NONE)
+				ieee80211_amrr_tx_complete(&rn->amrr,
+				    IEEE80211_AMRR_SUCCESS, retrycnt);
 			ifp->if_opackets++;
 			break;
 
 		case RT2661_TX_RETRY_FAIL:
+			retrycnt = RT2661_TX_RETRYCNT(val);
+
 			DPRINTFN(sc, 9, "%s\n",
 			    "sending data frame failed (too much retries)");
-			if (data->rix != IEEE80211_FIXED_RATE_NONE) {
-				ieee80211_rssadapt_tx_complete(&rn->rssadapt,
-				    IEEE80211_RSSADAPT_FAILURE,
-				    m->m_pkthdr.len, data->rssi);
-			}
+			if (data->rix != IEEE80211_FIXED_RATE_NONE)
+				ieee80211_amrr_tx_complete(&rn->amrr,
+				    IEEE80211_AMRR_FAILURE, retrycnt);
 			ifp->if_oerrors++;
 			break;
 
@@ -1356,7 +1356,7 @@
 
 	data->m = m0;
 	data->ni = ni;
-	/* management frames are not taken into account for rssadapt */
+	/* management frames are not taken into account for amrr */
 	data->rix = IEEE80211_FIXED_RATE_NONE;
 
 	wh = mtod(m0, struct ieee80211_frame *);
@@ -1448,7 +1448,7 @@
 
 	data->m = mprot;
 	data->ni = ieee80211_ref_node(ni);
-	/* ctl frames are not taken into account for rssadapt */
+	/* ctl frames are not taken into account for amrr */
 	data->rix = IEEE80211_FIXED_RATE_NONE;
 
 	rt2661_setup_tx_desc(sc, desc, flags, 0, mprot->m_pkthdr.len,
@@ -1493,8 +1493,7 @@
 	} else if (tp->ucastrate != IEEE80211_FIXED_RATE_NONE) {
 		rate = tp->ucastrate;
 	} else {
-		(void) ieee80211_rssadapt_choose(ni, &RT2661_NODE(ni)->rssadapt,
-		    m0->m_pkthdr.len);
+		(void) ieee80211_amrr_choose(ni, &RT2661_NODE(ni)->amrr);
 		rate = ni->ni_txrate;
 	}
 	rate &= IEEE80211_RATE_VAL;

==== //depot/projects/vap/sys/dev/ral/rt2661var.h#10 (text) ====

@@ -88,13 +88,13 @@
 
 struct rt2661_node {
 	struct ieee80211_node	ni;
-	struct ieee80211_rssadapt_node rssadapt;
+	struct ieee80211_amrr_node amrr;
 };
 #define	RT2661_NODE(ni)		((struct rt2661_node *)(ni))
 
 struct rt2661_vap {
 	struct ieee80211vap	ral_vap;
-	struct ieee80211_rssadapt rssadapt;
+	struct ieee80211_amrr	amrr;
 
 	int			(*ral_newstate)(struct ieee80211vap *,
 				    enum ieee80211_state, int);


More information about the p4-projects mailing list