Date: Mon, 9 May 2005 04:37:03 GMT From: Sam Leffler <sam@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 76730 for review Message-ID: <200505090437.j494b32N026818@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=76730 Change 76730 by sam@sam_ebb on 2005/05/09 04:36:50 o get correct rate table for turboA o check for ff usage properly o more tx fragmentation stuff Affected files ... .. //depot/projects/vap/sys/dev/ath/if_ath.c#9 edit Differences ... ==== //depot/projects/vap/sys/dev/ath/if_ath.c#9 (text+ko) ==== @@ -1663,7 +1663,7 @@ pri = M_WME_GETAC(m); txq = sc->sc_ac2q[pri]; - if (ni->ni_flags & IEEE80211_NODE_FF) { + if (IEEE80211_ATH_CAP(ni->ni_vap, ni, FF)) { /* * Check queue length; if too deep drop this * frame (tail drop considered good). @@ -4032,7 +4032,8 @@ cip = k->wk_cipher; hdrlen += cip->ic_header; pktlen += cip->ic_header + cip->ic_trailer; - if ((k->wk_flags & IEEE80211_KEY_SWMIC) == 0) + if ((k->wk_flags & IEEE80211_KEY_SWMIC) == 0 && + (m0->m_flags & M_FRAG) == 0) pktlen += cip->ic_miclen; keyix = k->wk_keyix; @@ -4192,8 +4193,7 @@ if (ismcast) { flags |= HAL_TXDESC_NOACK; /* no ack on broad/multicast */ sc->sc_stats.ast_tx_noack++; - } else if (pktlen > vap->iv_rtsthreshold && - !IEEE80211_ATH_CAP(vap, ni, FF)) { + } else if (pktlen > vap->iv_rtsthreshold && (m0->m_flags & M_FF) == 0) { flags |= HAL_TXDESC_RTSENA; /* RTS based on frame length */ cix = rt->info[rix].controlRate; sc->sc_stats.ast_tx_rts++; @@ -4230,6 +4230,13 @@ dur = rt->info[rix].spAckDuration; else dur = rt->info[rix].lpAckDuration; + if (wh->i_fc[1] & IEEE80211_FC1_MORE_FRAG) { + KASSERT(m0->m_nextpkt != NULL, + ("next fragment missing, fc[1] 0x%x", wh->i_fc[1])); + /* SIFS+ACK+time for next fragment */ + dur += dur + ath_hal_computetxtime(ah, rt, + m0->m_nextpkt->m_len, rix, shortPreamble); + } *(u_int16_t *)wh->i_dur = htole16(dur); } @@ -5323,7 +5330,7 @@ sc->sc_rates[mode] = ath_hal_getratetable(ah, HAL_MODE_11G); break; case IEEE80211_MODE_TURBO_A: - sc->sc_rates[mode] = ath_hal_getratetable(ah, HAL_MODE_108A); + sc->sc_rates[mode] = ath_hal_getratetable(ah, HAL_MODE_TURBO); break; case IEEE80211_MODE_TURBO_G: sc->sc_rates[mode] = ath_hal_getratetable(ah, HAL_MODE_108G);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200505090437.j494b32N026818>