Lines Matching +full:rate +full:- +full:b
22 #include "rate.h"
25 * Rate info per rate: It tells whether a rate is ofdm or not and its phy_rate
146 * phycfg for legacy OFDM frames: code rate, modulation scheme, spatial streams
151 u32 rate_ofdm; /* ofdm mac rate */
152 /* phy ctl byte 3, code rate, modulation type, # of streams */
160 * In CCK mode LPPHY overloads OFDM Modulation bits with CCK Data Rate
166 {BRCM_RATE_1M, 0x00}, /* CCK 1Mbps, data rate 0 */
167 {BRCM_RATE_2M, 0x08}, /* CCK 2Mbps, data rate 1 */
168 {BRCM_RATE_5M5, 0x10}, /* CCK 5.5Mbps, data rate 2 */
169 {BRCM_RATE_11M, 0x18}, /* CCK 11Mbps, data rate 3 */
170 /* OFDM 6Mbps, code rate 1/2, BPSK, 1 spatial stream */
172 /* OFDM 9Mbps, code rate 3/4, BPSK, 1 spatial stream */
174 /* OFDM 12Mbps, code rate 1/2, QPSK, 1 spatial stream */
176 /* OFDM 18Mbps, code rate 3/4, QPSK, 1 spatial stream */
178 /* OFDM 24Mbps, code rate 1/2, 16-QAM, 1 spatial stream */
180 /* OFDM 36Mbps, code rate 3/4, 16-QAM, 1 spatial stream */
182 /* OFDM 48Mbps, code rate 2/3, 64-QAM, 1 spatial stream */
184 /* OFDM 54Mbps, code rate 3/4, 64-QAM, 1 spatial stream */
192 /* 1b, 2b, 5.5b, 6, 9, 11b, 12, 18, 24, 36, 48, */
203 /* 6b, 9, 12b, 18, 24b, 36, 48, 54 Mbps */
213 /* 1b, 2b, 5.5b, 6, 9, 11b, 12, 18, 24, 36, 48 */
224 /* 6b, 9, 12b, 18, 24b, 36, 48, 54 Mbps */
233 /* 1b, 2b, 5.5b, 6, 9, 11b, 12, 18, 24, 36, 48,*/
244 /* 1b, 2b, 5.5b, 11b Mbps */
253 /* 6b, 9, 12b, 18, 24b, 36, 48, 54 Mbps */
262 /* 1b, 2b, 5.5, 11 Mbps */
270 * if check_brate is true, rateset without a basic rate is considered NOT valid.
276 if (!rs->count) in brcms_c_rateset_valid()
283 for (idx = 0; idx < rs->count; idx++) { in brcms_c_rateset_valid()
284 if (rs->rates[idx] & BRCMS_RATE_FLAG) in brcms_c_rateset_valid()
294 rs->mcs[i] = 0; in brcms_c_rateset_mcs_upd()
312 count = rs->count; in brcms_c_rate_hwrs_filter_sort_validate()
315 /* mask off "basic rate" bit, BRCMS_RATE_FLAG */ in brcms_c_rate_hwrs_filter_sort_validate()
316 r = (int)rs->rates[i] & BRCMS_RATE_MASK; in brcms_c_rate_hwrs_filter_sort_validate()
319 rateset[r] = rs->rates[i]; /* preserve basic bit! */ in brcms_c_rate_hwrs_filter_sort_validate()
324 for (i = 0; i < hw_rs->count; i++) { in brcms_c_rate_hwrs_filter_sort_validate()
325 r = hw_rs->rates[i] & BRCMS_RATE_MASK; in brcms_c_rate_hwrs_filter_sort_validate()
327 rs->rates[count++] = rateset[r]; in brcms_c_rate_hwrs_filter_sort_validate()
330 rs->count = count; in brcms_c_rate_hwrs_filter_sort_validate()
332 /* only set the mcs rate bit if the equivalent hw mcs bit is set */ in brcms_c_rate_hwrs_filter_sort_validate()
334 rs->mcs[i] = (rs->mcs[i] & hw_rs->mcs[i]); in brcms_c_rate_hwrs_filter_sort_validate()
342 /* calculate the rate of a rx'd frame and return it as a ratespec */
349 ((rxh->RxChan & RXS_CHAN_PHYTYPE_MASK) >> RXS_CHAN_PHYTYPE_SHIFT); in brcms_c_compute_rspec()
353 switch (rxh->PhyRxStatus_0 & PRXS0_FT_MASK) { in brcms_c_compute_rspec()
357 ((struct cck_phy_hdr *) plcp)->signal); in brcms_c_compute_rspec()
362 ((struct ofdm_phy_hdr *) plcp)->rlpt[0]); in brcms_c_compute_rspec()
381 if ((phy_type == PHY_TYPE_A) || (rxh->PhyRxStatus_0 & PRXS0_OFDM)) in brcms_c_compute_rspec()
383 ((struct ofdm_phy_hdr *) plcp)->rlpt[0]); in brcms_c_compute_rspec()
386 ((struct cck_phy_hdr *) plcp)->signal); in brcms_c_compute_rspec()
391 /* copy rateset src to dst as-is (no masking or sorting) */
401 * 'rates' indicates cck (11b) and ofdm rates combinations.
402 * - 0: cck and ofdm
403 * - 1: cck only
404 * - 2: ofdm only
416 for (i = 0; i < src->count; i++) { in brcms_c_rateset_filter()
417 r = src->rates[i]; in brcms_c_rateset_filter()
426 dst->rates[count++] = r & xmask; in brcms_c_rateset_filter()
428 dst->count = count; in brcms_c_rateset_filter()
429 dst->htphy_membership = src->htphy_membership; in brcms_c_rateset_filter()
432 memcpy(&dst->mcs[0], &src->mcs[0], MCSSET_LEN); in brcms_c_rateset_filter()
484 s16 brcms_c_rate_legacy_phyctl(uint rate) in brcms_c_rate_legacy_phyctl() argument
488 if (rate == legacy_phycfg_table[i].rate_ofdm) in brcms_c_rate_legacy_phyctl()
491 return -1; in brcms_c_rate_legacy_phyctl()
498 rateset->mcs[i] = 0; in brcms_c_rateset_mcs_clear()
503 memcpy(&rateset->mcs[0], &cck_ofdm_mimo_rates.mcs[0], MCSSET_LEN); in brcms_c_rateset_mcs_build()
511 setbit(rateset->mcs, 32); in brcms_c_rateset_bw_mcs_filter()
513 clrbit(rateset->mcs, 32); in brcms_c_rateset_bw_mcs_filter()