Date: Tue, 22 Nov 2005 23:33:12 GMT From: Sam Leffler <sam@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 87095 for review Message-ID: <200511222333.jAMNXCvR091065@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=87095 Change 87095 by sam@sam_ebb on 2005/11/22 23:33:07 IFC Affected files ... .. //depot/projects/wifi/sys/dev/ath/ath_rate/sample/sample.c#7 integrate .. //depot/projects/wifi/sys/dev/ath/if_ath.c#110 integrate .. //depot/projects/wifi/sys/dev/ath/if_athioctl.h#10 integrate .. //depot/projects/wifi/sys/dev/ath/if_athvar.h#45 integrate Differences ... ==== //depot/projects/wifi/sys/dev/ath/ath_rate/sample/sample.c#7 (text+ko) ==== @@ -36,7 +36,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/ath/ath_rate/sample/sample.c,v 1.9 2005/07/22 16:50:17 sam Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ath/ath_rate/sample/sample.c,v 1.10 2005/11/15 05:47:20 sam Exp $"); /* * John Bicket's SampleRate control algorithm. @@ -708,6 +708,11 @@ for (x = 0; x < ni->ni_rates.rs_nrates; x++) { sn->rates[x].rate = ni->ni_rates.rs_rates[x] & IEEE80211_RATE_VAL; sn->rates[x].rix = sc->sc_rixmap[sn->rates[x].rate]; + if (sn->rates[x].rix == 0xff) { + DPRINTF(sc, "%s: ignore bogus rix at %d\n", + __func__, x); + continue; + } sn->rates[x].rateCode = rt->info[sn->rates[x].rix].rateCode; sn->rates[x].shortPreambleRateCode = rt->info[sn->rates[x].rix].rateCode | ==== //depot/projects/wifi/sys/dev/ath/if_ath.c#110 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.104 2005/09/16 10:09:23 ru Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.106 2005/11/15 05:49:02 sam Exp $"); /* * Driver for the Atheros Wireless LAN controller. @@ -3682,13 +3682,6 @@ ath_tx_start(struct ath_softc *sc, struct ieee80211_node *ni, struct ath_buf *bf, struct mbuf *m0) { -#define CTS_DURATION \ - ath_hal_computetxtime(ah, rt, IEEE80211_ACK_LEN, cix, AH_TRUE) -#define updateCTSForBursting(_ah, _ds, _txq) \ - ath_hal_updateCTSForBursting(_ah, _ds, \ - _txq->axq_linkbuf != NULL ? _txq->axq_linkbuf->bf_desc : NULL, \ - _txq->axq_lastdsWithCTS, _txq->axq_gatingds, \ - txopLimit, CTS_DURATION) struct ieee80211com *ic = &sc->sc_ic; struct ath_hal *ah = sc->sc_ah; struct ifnet *ifp = sc->sc_ifp; @@ -4166,39 +4159,6 @@ * pass it on to the hardware. */ ATH_TXQ_LOCK(txq); - if (flags & (HAL_TXDESC_RTSENA | HAL_TXDESC_CTSENA)) { - u_int32_t txopLimit = IEEE80211_TXOP_TO_US( - cap->cap_wmeParams[pri].wmep_txopLimit); - /* - * When bursting, potentially extend the CTS duration - * of a previously queued frame to cover this frame - * and not exceed the txopLimit. If that can be done - * then disable RTS/CTS on this frame since it's now - * covered (burst extension). Otherwise we must terminate - * the burst before this frame goes out so as not to - * violate the WME parameters. All this is complicated - * as we need to update the state of packets on the - * (live) hardware queue. The logic is buried in the hal - * because it's highly chip-specific. - */ - if (txopLimit != 0) { - sc->sc_stats.ast_tx_ctsburst++; - if (updateCTSForBursting(ah, ds0, txq) == 0) { - /* - * This frame was not covered by RTS/CTS from - * the previous frame in the burst; update the - * descriptor pointers so this frame is now - * treated as the last frame for extending a - * burst. - */ - txq->axq_lastdsWithCTS = ds0; - /* set gating Desc to final desc */ - txq->axq_gatingds = - (struct ath_desc *)txq->axq_link; - } else - sc->sc_stats.ast_tx_ctsext++; - } - } ATH_TXQ_INSERT_TAIL(txq, bf, bf_list); if (txq->axq_link == NULL) { ath_hal_puttxbuf(ah, txq->axq_qnum, bf->bf_daddr); @@ -4223,8 +4183,6 @@ ATH_TXQ_UNLOCK(txq); return 0; -#undef updateCTSForBursting -#undef CTS_DURATION } /* @@ -4267,10 +4225,6 @@ ATH_TXQ_UNLOCK(txq); break; } - if (ds0 == txq->axq_lastdsWithCTS) - txq->axq_lastdsWithCTS = NULL; - if (ds == txq->axq_gatingds) - txq->axq_gatingds = NULL; ATH_TXQ_REMOVE_HEAD(txq, bf_list); ATH_TXQ_UNLOCK(txq); ==== //depot/projects/wifi/sys/dev/ath/if_athioctl.h#10 (text+ko) ==== @@ -33,7 +33,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGES. * - * $FreeBSD: src/sys/dev/ath/if_athioctl.h,v 1.10 2005/03/30 20:13:08 sam Exp $ + * $FreeBSD: src/sys/dev/ath/if_athioctl.h,v 1.11 2005/11/15 05:49:02 sam Exp $ */ /* @@ -76,8 +76,8 @@ u_int32_t ast_tx_shortpre;/* tx frames with short preamble */ u_int32_t ast_tx_altrate; /* tx frames with alternate rate */ u_int32_t ast_tx_protect; /* tx frames with protection */ - u_int32_t ast_tx_ctsburst;/* tx frames with cts and bursting */ - u_int32_t ast_tx_ctsext; /* tx frames with cts extension */ + u_int32_t ast_unused1; + u_int32_t ast_unused2; u_int32_t ast_rx_nombuf; /* rx setup failed 'cuz no mbuf */ u_int32_t ast_rx_busdma; /* rx setup failed for dma resrcs */ u_int32_t ast_rx_orn; /* rx failed 'cuz of desc overrun */ ==== //depot/projects/wifi/sys/dev/ath/if_athvar.h#45 (text+ko) ==== @@ -33,7 +33,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGES. * - * $FreeBSD: src/sys/dev/ath/if_athvar.h,v 1.29 2005/08/08 18:46:36 sam Exp $ + * $FreeBSD: src/sys/dev/ath/if_athvar.h,v 1.30 2005/11/15 05:49:02 sam Exp $ */ /* @@ -150,19 +150,6 @@ STAILQ_HEAD(, ath_buf) axq_q; /* transmit queue */ struct mtx axq_lock; /* lock on q and link */ /* - * State for patching up CTS when bursting. - */ - struct ath_buf *axq_linkbuf; /* va of last buffer */ - struct ath_desc *axq_lastdsWithCTS; - /* first desc of last descriptor - * that contains CTS - */ - struct ath_desc *axq_gatingds; /* final desc of the gating desc - * that determines whether - * lastdsWithCTS has been DMA'ed - * or not - */ - /* * Fast-frame state. The staging queue holds awaiting * a fast-frame pairing. Buffers on this queue are * assigned an ``age'' and flushed when they wait too long. @@ -183,7 +170,6 @@ STAILQ_INSERT_TAIL(&(_tq)->axq_q, (_elm), _field); \ (_tq)->axq_depth++; \ (_tq)->axq_curage++; \ - (_tq)->axq_linkbuf = (_elm); \ } while (0) #define ATH_TXQ_REMOVE_HEAD(_tq, _field) do { \ STAILQ_REMOVE_HEAD(&(_tq)->axq_q, _field); \ @@ -562,10 +548,6 @@ ((*(_ah)->ah_procTxDesc)((_ah), (_ds))) #define ath_hal_gettxintrtxqs(_ah, _txqs) \ ((*(_ah)->ah_getTxIntrQueue)((_ah), (_txqs))) -#define ath_hal_updateCTSForBursting(_ah, _ds, _prevds, _prevdsWithCTS, \ - _gatingds, _txOpLimit, _ctsDuration) \ - ((*(_ah)->ah_updateCTSForBursting)((_ah), (_ds), (_prevds), \ - (_prevdsWithCTS), (_gatingds), (_txOpLimit), (_ctsDuration))) #define ath_hal_gpioCfgOutput(_ah, _gpio) \ ((*(_ah)->ah_gpioCfgOutput)((_ah), (_gpio)))
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200511222333.jAMNXCvR091065>