Lines Matching refs:rspec

358 static u8 brcms_basic_rate(struct brcms_c_info *wlc, u32 rspec)  in brcms_basic_rate()  argument
360 if (is_mcs_rate(rspec)) in brcms_basic_rate()
361 return wlc->band->basic_rate[mcs_table[rspec & RSPEC_RATE_MASK] in brcms_basic_rate()
363 return wlc->band->basic_rate[rspec & RSPEC_RATE_MASK]; in brcms_basic_rate()
366 static u16 frametype(u32 rspec, u8 mimoframe) in frametype() argument
368 if (is_mcs_rate(rspec)) in frametype()
370 return is_cck_rate(rspec) ? FT_CCK : FT_OFDM; in frametype()
5680 brcms_c_calc_ack_time(struct brcms_c_info *wlc, u32 rspec, in brcms_c_calc_ack_time() argument
5690 rspec = brcms_basic_rate(wlc, rspec); in brcms_c_calc_ack_time()
5693 brcms_c_calc_frame_time(wlc, rspec, preamble_type, in brcms_c_calc_ack_time()
5699 brcms_c_calc_cts_time(struct brcms_c_info *wlc, u32 rspec, in brcms_c_calc_cts_time() argument
5702 return brcms_c_calc_ack_time(wlc, rspec, preamble_type); in brcms_c_calc_cts_time()
5706 brcms_c_calc_ba_time(struct brcms_c_info *wlc, u32 rspec, in brcms_c_calc_ba_time() argument
5714 rspec = brcms_basic_rate(wlc, rspec); in brcms_c_calc_ba_time()
5716 return brcms_c_calc_frame_time(wlc, rspec, preamble_type, in brcms_c_calc_ba_time()
5801 static bool brcms_c_valid_rate(struct brcms_c_info *wlc, u32 rspec, int band, in brcms_c_valid_rate() argument
5816 if (is_mcs_rate(rspec)) { in brcms_c_valid_rate()
5817 if ((rspec & RSPEC_RATE_MASK) >= MCS_TABLE_SIZE) in brcms_c_valid_rate()
5820 return isset(hw_rateset->mcs, (rspec & RSPEC_RATE_MASK)); in brcms_c_valid_rate()
5824 if (hw_rateset->rates[i] == rspec2rate(rspec)) in brcms_c_valid_rate()
5829 "not in hw_rateset\n", wlc->pub->unit, rspec); in brcms_c_valid_rate()
5841 u32 rspec; in mac80211_wlc_set_nrate() local
5915 rspec = rate; in mac80211_wlc_set_nrate()
5917 rspec |= RSPEC_MIMORATE; in mac80211_wlc_set_nrate()
5922 rspec |= (stc << RSPEC_STC_SHIFT); in mac80211_wlc_set_nrate()
5926 rspec |= (stf << RSPEC_STF_SHIFT); in mac80211_wlc_set_nrate()
5929 rspec |= RSPEC_OVERRIDE_MCS_ONLY; in mac80211_wlc_set_nrate()
5932 rspec |= RSPEC_SHORT_GI; in mac80211_wlc_set_nrate()
5935 && !brcms_c_valid_rate(wlc, rspec, cur_band->bandtype, true)) in mac80211_wlc_set_nrate()
5938 return rspec; in mac80211_wlc_set_nrate()
5998 static void brcms_c_compute_mimo_plcp(u32 rspec, uint length, u8 *plcp) in brcms_c_compute_mimo_plcp() argument
6000 u8 mcs = (u8) (rspec & RSPEC_RATE_MASK); in brcms_c_compute_mimo_plcp()
6002 if (rspec_is40mhz(rspec) || (mcs == 32)) in brcms_c_compute_mimo_plcp()
6005 plcp[3] = rspec_mimoplcp3(rspec); /* rspec already holds this byte */ in brcms_c_compute_mimo_plcp()
6013 brcms_c_compute_ofdm_plcp(u32 rspec, u32 length, u8 *plcp) in brcms_c_compute_ofdm_plcp() argument
6017 int rate = rspec2rate(rspec); in brcms_c_compute_ofdm_plcp()
6034 static void brcms_c_compute_cck_plcp(struct brcms_c_info *wlc, u32 rspec, in brcms_c_compute_cck_plcp() argument
6037 int rate = rspec2rate(rspec); in brcms_c_compute_cck_plcp()
6043 brcms_c_compute_plcp(struct brcms_c_info *wlc, u32 rspec, in brcms_c_compute_plcp() argument
6046 if (is_mcs_rate(rspec)) in brcms_c_compute_plcp()
6047 brcms_c_compute_mimo_plcp(rspec, length, plcp); in brcms_c_compute_plcp()
6048 else if (is_ofdm_rate(rspec)) in brcms_c_compute_plcp()
6049 brcms_c_compute_ofdm_plcp(rspec, length, plcp); in brcms_c_compute_plcp()
6051 brcms_c_compute_cck_plcp(wlc, rspec, length, plcp); in brcms_c_compute_plcp()
6100 static u16 brcms_c_phytxctl1_calc(struct brcms_c_info *wlc, u32 rspec) in brcms_c_phytxctl1_calc() argument
6108 bw = rspec_get_bw(rspec); in brcms_c_phytxctl1_calc()
6117 if (is_mcs_rate(rspec)) { in brcms_c_phytxctl1_calc()
6118 uint mcs = rspec & RSPEC_RATE_MASK; in brcms_c_phytxctl1_calc()
6121 phyctl1 = rspec_phytxbyte2(rspec); in brcms_c_phytxctl1_calc()
6124 } else if (is_cck_rate(rspec) && !BRCMS_ISLCNPHY(wlc->band) in brcms_c_phytxctl1_calc()
6132 phyctl1 = (bw | (rspec_stf(rspec) << PHY_TXC1_MODE_SHIFT)); in brcms_c_phytxctl1_calc()
6136 phycfg = brcms_c_rate_legacy_phyctl(rspec2rate(rspec)); in brcms_c_phytxctl1_calc()
6145 (rspec_stf(rspec) << PHY_TXC1_MODE_SHIFT)); in brcms_c_phytxctl1_calc()
6170 u32 rspec[2] = { BRCM_RATE_1M, BRCM_RATE_1M }; in brcms_c_d11hdrs_mac80211() local
6257 rspec[k] = in brcms_c_d11hdrs_mac80211()
6261 rspec[k] = BRCM_RATE_1M; in brcms_c_d11hdrs_mac80211()
6264 rspec[k] = mac80211_wlc_set_nrate(wlc, wlc->band, in brcms_c_d11hdrs_mac80211()
6286 if (!rspec_active(rspec[k])) { in brcms_c_d11hdrs_mac80211()
6287 rspec[k] = BRCM_RATE_1M; in brcms_c_d11hdrs_mac80211()
6305 if (((is_mcs_rate(rspec[k]) && in brcms_c_d11hdrs_mac80211()
6306 is_single_stream(rspec[k] & RSPEC_RATE_MASK)) || in brcms_c_d11hdrs_mac80211()
6307 is_ofdm_rate(rspec[k])) in brcms_c_d11hdrs_mac80211()
6308 && ((rspec[k] & RSPEC_OVERRIDE_MCS_ONLY) in brcms_c_d11hdrs_mac80211()
6309 || !(rspec[k] & RSPEC_OVERRIDE))) { in brcms_c_d11hdrs_mac80211()
6310 rspec[k] &= ~(RSPEC_STF_MASK | RSPEC_STC_MASK); in brcms_c_d11hdrs_mac80211()
6313 if (is_mcs_rate(rspec[k]) in brcms_c_d11hdrs_mac80211()
6319 rspec[k] |= (PHY_TXC1_MODE_STBC << in brcms_c_d11hdrs_mac80211()
6323 rspec[k] |= in brcms_c_d11hdrs_mac80211()
6338 if (is_mcs_rate(rspec[k])) { in brcms_c_d11hdrs_mac80211()
6340 if ((rspec[k] & RSPEC_RATE_MASK) in brcms_c_d11hdrs_mac80211()
6350 } else if (is_ofdm_rate(rspec[k])) { in brcms_c_d11hdrs_mac80211()
6362 if ((rspec[k] & RSPEC_RATE_MASK) == 32) in brcms_c_d11hdrs_mac80211()
6364 rspec[k] = RSPEC_MIMORATE; in brcms_c_d11hdrs_mac80211()
6370 rspec[k] &= ~RSPEC_BW_MASK; in brcms_c_d11hdrs_mac80211()
6371 if ((k == 0) || ((k > 0) && is_mcs_rate(rspec[k]))) in brcms_c_d11hdrs_mac80211()
6372 rspec[k] |= (mimo_txbw << RSPEC_BW_SHIFT); in brcms_c_d11hdrs_mac80211()
6374 rspec[k] |= (mimo_ctlchbw << RSPEC_BW_SHIFT); in brcms_c_d11hdrs_mac80211()
6377 rspec[k] &= ~RSPEC_SHORT_GI; in brcms_c_d11hdrs_mac80211()
6384 && (!is_mcs_rate(rspec[k]))) { in brcms_c_d11hdrs_mac80211()
6390 if (is_mcs_rate(rspec[k])) { in brcms_c_d11hdrs_mac80211()
6397 if ((rspec[k] & RSPEC_SHORT_GI) in brcms_c_d11hdrs_mac80211()
6398 && is_single_stream(rspec[k] & in brcms_c_d11hdrs_mac80211()
6404 if (!is_mcs_rate(rspec[0]) in brcms_c_d11hdrs_mac80211()
6412 rspec[k] &= ~RSPEC_BW_MASK; in brcms_c_d11hdrs_mac80211()
6413 rspec[k] |= (PHY_TXC1_BW_20MHZ << RSPEC_BW_SHIFT); in brcms_c_d11hdrs_mac80211()
6416 if (BRCMS_ISNPHY(wlc->band) && is_ofdm_rate(rspec[k])) { in brcms_c_d11hdrs_mac80211()
6417 rspec[k] &= ~RSPEC_STF_MASK; in brcms_c_d11hdrs_mac80211()
6418 rspec[k] |= phyctl1_stf << RSPEC_STF_SHIFT; in brcms_c_d11hdrs_mac80211()
6435 brcms_c_compute_plcp(wlc, rspec[0], phylen, plcp); in brcms_c_d11hdrs_mac80211()
6436 brcms_c_compute_plcp(wlc, rspec[1], phylen, plcp_fallback); in brcms_c_d11hdrs_mac80211()
6441 if (is_cck_rate(rspec[1])) { in brcms_c_d11hdrs_mac80211()
6447 mainrates = is_ofdm_rate(rspec[0]) ? in brcms_c_d11hdrs_mac80211()
6455 brcms_c_compute_frame_dur(wlc, rspec[0], preamble_type[0], in brcms_c_d11hdrs_mac80211()
6461 (u16) brcms_c_calc_frame_time(wlc, rspec[0], in brcms_c_d11hdrs_mac80211()
6474 durid = brcms_c_compute_frame_dur(wlc, rspec[1], in brcms_c_d11hdrs_mac80211()
6504 if (rspec2rate(rspec[1]) != BRCM_RATE_1M) in brcms_c_d11hdrs_mac80211()
6543 rts_rspec[k] = brcms_c_rspec_to_rts_rspec(wlc, rspec[k], in brcms_c_d11hdrs_mac80211()
6589 rspec[0], rts_preamble_type[0], in brcms_c_d11hdrs_mac80211()
6594 rts_rspec[1], rspec[1], in brcms_c_d11hdrs_mac80211()
6629 if ((tx_info->flags & IEEE80211_TX_CTL_AMPDU) && is_mcs_rate(rspec)) in brcms_c_d11hdrs_mac80211()
6631 brcm_c_ampdu_null_delim_cnt(wlc->ampdu, scb, rspec, phylen); in brcms_c_d11hdrs_mac80211()
6648 xfts = frametype(rspec[1], wlc->mimoft); in brcms_c_d11hdrs_mac80211()
6656 phyctl = frametype(rspec[0], wlc->mimoft); in brcms_c_d11hdrs_mac80211()
6659 if (rspec2rate(rspec[0]) != BRCM_RATE_1M) in brcms_c_d11hdrs_mac80211()
6664 phyctl |= brcms_c_stf_d11hdrs_phyctl_txant(wlc, rspec[0]); in brcms_c_d11hdrs_mac80211()
6671 phyctl1 = brcms_c_phytxctl1_calc(wlc, rspec[0]); in brcms_c_d11hdrs_mac80211()
6673 phyctl1 = brcms_c_phytxctl1_calc(wlc, rspec[1]); in brcms_c_d11hdrs_mac80211()
6688 if (is_mcs_rate(rspec[0]) && in brcms_c_d11hdrs_mac80211()
6691 brcms_c_calc_lsig_len(wlc, rspec[0], phylen); in brcms_c_d11hdrs_mac80211()
6695 if (is_mcs_rate(rspec[1]) && in brcms_c_d11hdrs_mac80211()
6698 brcms_c_calc_lsig_len(wlc, rspec[1], phylen); in brcms_c_d11hdrs_mac80211()
6710 brcms_c_calc_frame_time(wlc, rspec[0], in brcms_c_d11hdrs_mac80211()
6732 brcms_c_compute_frame_dur(wlc, rspec[0], in brcms_c_d11hdrs_mac80211()
6736 brcms_c_calc_frame_time(wlc, rspec[1], in brcms_c_d11hdrs_mac80211()
6740 brcms_c_compute_frame_dur(wlc, rspec[1], in brcms_c_d11hdrs_mac80211()
6761 rspec[0], preamble_type[0], in brcms_c_d11hdrs_mac80211()
6781 rspec2rate(rspec[0])); in brcms_c_d11hdrs_mac80211()
6892 brcms_c_rspec_to_rts_rspec(struct brcms_c_info *wlc, u32 rspec, in brcms_c_rspec_to_rts_rspec() argument
6899 rts_rspec = rspec; in brcms_c_rspec_to_rts_rspec()
6900 else if (wlc->band->gmode && wlc->protection->_g && !is_cck_rate(rspec)) in brcms_c_rspec_to_rts_rspec()
6914 rts_rspec = brcms_basic_rate(wlc, rspec); in brcms_c_rspec_to_rts_rspec()
6924 if (rspec_is40mhz(rspec) && !is_cck_rate(rts_rspec)) in brcms_c_rspec_to_rts_rspec()
7004 u32 rspec; in prep_mac80211_status() local
7027 rspec = brcms_c_compute_rspec(rxh, plcp); in prep_mac80211_status()
7028 if (is_mcs_rate(rspec)) { in prep_mac80211_status()
7029 rx_status->rate_idx = rspec & RSPEC_RATE_MASK; in prep_mac80211_status()
7031 if (rspec_is40mhz(rspec)) in prep_mac80211_status()
7034 switch (rspec2rate(rspec)) { in prep_mac80211_status()
7085 if (is_cck_rate(rspec)) { in prep_mac80211_status()
7088 } else if (is_ofdm_rate(rspec)) { in prep_mac80211_status()