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