Date: Mon, 17 Mar 2008 22:06:32 GMT From: Sam Leffler <sam@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 137958 for review Message-ID: <200803172206.m2HM6WAa011080@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=137958 Change 137958 by sam@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);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200803172206.m2HM6WAa011080>