IEEE80211_RATE_MCS
(_v) = (_v / 2) | IEEE80211_RATE_MCS; \
(_v) = (_v / 2) | IEEE80211_RATE_MCS; \
rp->rate &~ IEEE80211_RATE_MCS);
rp->rate &~ IEEE80211_RATE_MCS);
return (rate & IEEE80211_RATE_MCS) ? "MCS " : "Mb/s";
if (rate & IEEE80211_RATE_MCS)
return (rate &~ IEEE80211_RATE_MCS);
tp->ucastrate &~ IEEE80211_RATE_MCS,
if ((v & IEEE80211_RATE_MCS) == 0) {
IEEE80211_RATE_MCS|0);
IEEE80211_RATE_MCS|0);
(rp->rate & IEEE80211_RATE_MCS) ? "MCS " : "",
#define IS_HT_RATE(_rc) ( (_rc) & IEEE80211_RATE_MCS)
KASSERT(rate & IEEE80211_RATE_MCS, ("not mcs %d", rate));
KASSERT((rate &~ IEEE80211_RATE_MCS) < 31, ("bad mcs 0x%x", rate));
#define MCS(_ix) (ni->ni_htrates.rs_rates[_ix] | IEEE80211_RATE_MCS)
tv->ratecode[y] |= IEEE80211_RATE_MCS;
#define MCS(ix) (rt->info[ix].dot11Rate | IEEE80211_RATE_MCS)
#define MCS(_ix) (ni->ni_htrates.rs_rates[_ix] | IEEE80211_RATE_MCS)
#define MCS(ix) (rt->info[ix].dot11Rate | IEEE80211_RATE_MCS)
#define MCS(ix) (rt->info[ix].dot11Rate | IEEE80211_RATE_MCS)
#define MCS(ix) (rt->info[ix].dot11Rate | IEEE80211_RATE_MCS)
sc->sc_rixmap[ieeerate | IEEE80211_RATE_MCS] = i;
sc->sc_hwmap[i].ieeerate |= IEEE80211_RATE_MCS;
sc->sc_stats.ast_tx_rate |= IEEE80211_RATE_MCS;
} else if (sc->sc_rx_th.wr_rate & IEEE80211_RATE_MCS) { /* HT rate */
if (rate & IEEE80211_RATE_MCS) {
tap->wr_rate |= IEEE80211_RATE_MCS;
if (rate & IEEE80211_RATE_MCS) {
if (rate & IEEE80211_RATE_MCS)
cmp_rate |= IEEE80211_RATE_MCS;
} else if ((rate & IEEE80211_RATE_MCS) &&
rate = IEEE80211_RATE_MCS | rs->rs_rates[txrate];
& ~IEEE80211_RATE_MCS];
if (rate & IEEE80211_RATE_MCS) { /* HT MCS */
rate |= IEEE80211_RATE_MCS;
rate = RTWN_RIDX_TO_MCS(ridx) | IEEE80211_RATE_MCS;
if (rate & IEEE80211_RATE_MCS) {
ridx = rate2ridx(IEEE80211_RATE_MCS | 0x4); /* MCS4 */
txs.final_rate |= IEEE80211_RATE_MCS;
IEEE80211_RATE_MCS | (RTWN_RIDX_TO_MCS(rate));
txs.final_rate |= IEEE80211_RATE_MCS;
IEEE80211_RATE_MCS | RTWN_RIDX_TO_MCS(rate);
rxs.c_rate = IEEE80211_RATE_MCS | (rate - 12);
tr->dot11rate & ~IEEE80211_RATE_MCS);
tr->dot11rate & ~IEEE80211_RATE_MCS);
rate |= IEEE80211_RATE_MCS;
dot11Rate |= IEEE80211_RATE_MCS;
else if (v & IEEE80211_RATE_MCS)
db_printf(" %s MCS%d", tag, v &~ IEEE80211_RATE_MCS);
if ((mcs & IEEE80211_RATE_MCS) == 0) /* MCS always have 0x80 set */
if (dot11Rate & IEEE80211_RATE_MCS) {
ni->ni_txrate.dot11rate = IEEE80211_RATE_MCS | mcs;
~IEEE80211_RATE_MCS];
.dot11rate = (i_mcs) | IEEE80211_RATE_MCS }
code |= IEEE80211_RATE_MCS;
KASSERT(rate & IEEE80211_RATE_MCS, ("not mcs %d", rate));
KASSERT((rate &~ IEEE80211_RATE_MCS) < 31, ("bad mcs 0x%x", rate));
#define N(r) (IEEE80211_RATE_MCS | r)
#define IEEE80211_IS_HT_RATE(_rc) ( (_rc) & IEEE80211_RATE_MCS)
vap->iv_txparms[i].mgmtrate = 0 | IEEE80211_RATE_MCS;
vap->iv_txparms[i].mcastrate = 0 | IEEE80211_RATE_MCS;
#define ROAM_MCS_11N_DEFAULT (1 | IEEE80211_RATE_MCS) /* 11n bss */
#define ROAM_MCS_11AC_DEFAULT (1 | IEEE80211_RATE_MCS) /* 11ac bss; XXX not used yet */
#define TDMA_TXRATE_11NA_DEFAULT (4 | IEEE80211_RATE_MCS)
#define TDMA_TXRATE_11NG_DEFAULT (4 | IEEE80211_RATE_MCS)
if (rate & IEEE80211_RATE_MCS)
snprintf(b, bs, "MCS%u", rate &~ IEEE80211_RATE_MCS);
else if (rt->ratecode[rix] & IEEE80211_RATE_MCS)
if (rt->ratecode[rix] & IEEE80211_RATE_MCS)
return rt->ratecode[rix] & ~(IEEE80211_RATE_MCS);
if (rate & IEEE80211_RATE_MCS)
snprintf(b, bs, "MCS%u", rate &~ IEEE80211_RATE_MCS);
if (rate & IEEE80211_RATE_MCS)
KASSERT(rate & IEEE80211_RATE_MCS, ("not mcs %d", rate));
KASSERT((rate &~ IEEE80211_RATE_MCS) < 16, ("bad mcs 0x%x", rate));