lq_sta 811 drivers/net/wireless/intel/iwlegacy/3945-rs.c struct il3945_rs_sta *lq_sta = file->private_data; lq_sta 820 drivers/net/wireless/intel/iwlegacy/3945-rs.c "rate=0x%X flush time %d\n", lq_sta->tx_packets, lq_sta 821 drivers/net/wireless/intel/iwlegacy/3945-rs.c lq_sta->last_txrate_idx, lq_sta->start_rate, lq_sta 822 drivers/net/wireless/intel/iwlegacy/3945-rs.c jiffies_to_msecs(lq_sta->flush_time)); lq_sta 826 drivers/net/wireless/intel/iwlegacy/3945-rs.c lq_sta->win[j].counter, lq_sta 827 drivers/net/wireless/intel/iwlegacy/3945-rs.c lq_sta->win[j].success_counter, lq_sta 828 drivers/net/wireless/intel/iwlegacy/3945-rs.c lq_sta->win[j].success_ratio); lq_sta 844 drivers/net/wireless/intel/iwlegacy/3945-rs.c struct il3945_rs_sta *lq_sta = il_sta; lq_sta 846 drivers/net/wireless/intel/iwlegacy/3945-rs.c debugfs_create_file("rate_stats_table", 0600, dir, lq_sta, lq_sta 129 drivers/net/wireless/intel/iwlegacy/4965-rs.c struct il_lq_sta *lq_sta); lq_sta 131 drivers/net/wireless/intel/iwlegacy/4965-rs.c struct il_lq_sta *lq_sta, u32 rate_n_flags); lq_sta 132 drivers/net/wireless/intel/iwlegacy/4965-rs.c static void il4965_rs_stay_in_table(struct il_lq_sta *lq_sta, lq_sta 136 drivers/net/wireless/intel/iwlegacy/4965-rs.c static void il4965_rs_dbgfs_set_mcs(struct il_lq_sta *lq_sta, lq_sta 140 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_dbgfs_set_mcs(struct il_lq_sta *lq_sta, u32 * rate_n_flags, int idx) lq_sta 642 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_get_supported_rates(struct il_lq_sta *lq_sta, lq_sta 647 drivers/net/wireless/intel/iwlegacy/4965-rs.c return lq_sta->active_legacy_rate; lq_sta 650 drivers/net/wireless/intel/iwlegacy/4965-rs.c return lq_sta->active_siso_rate; lq_sta 652 drivers/net/wireless/intel/iwlegacy/4965-rs.c return lq_sta->active_mimo2_rate; lq_sta 714 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_get_lower_rate(struct il_lq_sta *lq_sta, lq_sta 722 drivers/net/wireless/intel/iwlegacy/4965-rs.c u8 is_green = lq_sta->is_green; lq_sta 723 drivers/net/wireless/intel/iwlegacy/4965-rs.c struct il_priv *il = lq_sta->drv; lq_sta 731 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (lq_sta->band == NL80211_BAND_5GHZ) lq_sta 745 drivers/net/wireless/intel/iwlegacy/4965-rs.c rate_mask = il4965_rs_get_supported_rates(lq_sta, NULL, tbl->lq_type); lq_sta 750 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (lq_sta->band == NL80211_BAND_5GHZ) lq_sta 753 drivers/net/wireless/intel/iwlegacy/4965-rs.c (lq_sta->supp_rates << IL_FIRST_OFDM_RATE)); lq_sta 755 drivers/net/wireless/intel/iwlegacy/4965-rs.c rate_mask = (u16) (rate_mask & lq_sta->supp_rates); lq_sta 765 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_get_adjacent_rate(lq_sta->drv, scale_idx, rate_mask, lq_sta 773 drivers/net/wireless/intel/iwlegacy/4965-rs.c return il4965_rate_n_flags_from_tbl(lq_sta->drv, tbl, low, is_green); lq_sta 798 drivers/net/wireless/intel/iwlegacy/4965-rs.c struct il_lq_sta *lq_sta = il_sta; lq_sta 811 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (!lq_sta) { lq_sta 814 drivers/net/wireless/intel/iwlegacy/4965-rs.c } else if (!lq_sta->drv) { lq_sta 836 drivers/net/wireless/intel/iwlegacy/4965-rs.c table = &lq_sta->lq; lq_sta 871 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->missed_rate_counter++; lq_sta 872 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (lq_sta->missed_rate_counter > IL_MISSED_RATE_MAX) { lq_sta 873 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->missed_rate_counter = 0; lq_sta 874 drivers/net/wireless/intel/iwlegacy/4965-rs.c il_send_lq_cmd(il, &lq_sta->lq, CMD_ASYNC, false); lq_sta 880 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->missed_rate_counter = 0; lq_sta 884 drivers/net/wireless/intel/iwlegacy/4965-rs.c (&tbl_type, &(lq_sta->lq_info[lq_sta->active_tbl]))) { lq_sta 885 drivers/net/wireless/intel/iwlegacy/4965-rs.c curr_tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); lq_sta 886 drivers/net/wireless/intel/iwlegacy/4965-rs.c other_tbl = &(lq_sta->lq_info[1 - lq_sta->active_tbl]); lq_sta 889 drivers/net/wireless/intel/iwlegacy/4965-rs.c (&tbl_type, &lq_sta->lq_info[1 - lq_sta->active_tbl])) { lq_sta 890 drivers/net/wireless/intel/iwlegacy/4965-rs.c curr_tbl = &(lq_sta->lq_info[1 - lq_sta->active_tbl]); lq_sta 891 drivers/net/wireless/intel/iwlegacy/4965-rs.c other_tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); lq_sta 894 drivers/net/wireless/intel/iwlegacy/4965-rs.c tmp_tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); lq_sta 897 drivers/net/wireless/intel/iwlegacy/4965-rs.c tmp_tbl = &(lq_sta->lq_info[1 - lq_sta->active_tbl]); lq_sta 906 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_stay_in_table(lq_sta, true); lq_sta 926 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (lq_sta->stay_in_tbl) { lq_sta 927 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->total_success += info->status.ampdu_ack_len; lq_sta 928 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->total_failed += lq_sta 964 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (lq_sta->stay_in_tbl) { lq_sta 965 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->total_success += legacy_success; lq_sta 966 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->total_failed += retries + (1 - legacy_success); lq_sta 970 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->last_rate_n_flags = tx_rate; lq_sta 974 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_rate_scale_perform(il, skb, sta, lq_sta); lq_sta 987 drivers/net/wireless/intel/iwlegacy/4965-rs.c struct il_lq_sta *lq_sta) lq_sta 990 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->stay_in_tbl = 1; /* only place this gets set */ lq_sta 992 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->table_count_limit = IL_LEGACY_TBL_COUNT; lq_sta 993 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->max_failure_limit = IL_LEGACY_FAILURE_LIMIT; lq_sta 994 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->max_success_limit = IL_LEGACY_SUCCESS_LIMIT; lq_sta 996 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->table_count_limit = IL_NONE_LEGACY_TBL_COUNT; lq_sta 997 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->max_failure_limit = IL_NONE_LEGACY_FAILURE_LIMIT; lq_sta 998 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->max_success_limit = IL_NONE_LEGACY_SUCCESS_LIMIT; lq_sta 1000 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->table_count = 0; lq_sta 1001 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->total_failed = 0; lq_sta 1002 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->total_success = 0; lq_sta 1003 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->flush_timer = jiffies; lq_sta 1004 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->action_counter = 0; lq_sta 1011 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_set_expected_tpt_table(struct il_lq_sta *lq_sta, lq_sta 1032 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (is_siso(tbl->lq_type) && (!tbl->is_ht40 || lq_sta->is_dup)) lq_sta 1036 drivers/net/wireless/intel/iwlegacy/4965-rs.c else if (is_mimo2(tbl->lq_type) && (!tbl->is_ht40 || lq_sta->is_dup)) lq_sta 1041 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (!tbl->is_SGI && !lq_sta->is_agg) /* Normal */ lq_sta 1043 drivers/net/wireless/intel/iwlegacy/4965-rs.c else if (tbl->is_SGI && !lq_sta->is_agg) /* SGI */ lq_sta 1045 drivers/net/wireless/intel/iwlegacy/4965-rs.c else if (!tbl->is_SGI && lq_sta->is_agg) /* AGG */ lq_sta 1064 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_get_best_rate(struct il_priv *il, struct il_lq_sta *lq_sta, lq_sta 1070 drivers/net/wireless/intel/iwlegacy/4965-rs.c &(lq_sta->lq_info[lq_sta->active_tbl]); lq_sta 1106 drivers/net/wireless/intel/iwlegacy/4965-rs.c if ((100 * tpt_tbl[rate] > lq_sta->last_tpt && lq_sta 1158 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_switch_to_mimo2(struct il_priv *il, struct il_lq_sta *lq_sta, lq_sta 1165 drivers/net/wireless/intel/iwlegacy/4965-rs.c s8 is_green = lq_sta->is_green; lq_sta 1180 drivers/net/wireless/intel/iwlegacy/4965-rs.c tbl->is_dup = lq_sta->is_dup; lq_sta 1183 drivers/net/wireless/intel/iwlegacy/4965-rs.c rate_mask = lq_sta->active_mimo2_rate; lq_sta 1190 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_set_expected_tpt_table(lq_sta, tbl); lq_sta 1192 drivers/net/wireless/intel/iwlegacy/4965-rs.c rate = il4965_rs_get_best_rate(il, lq_sta, tbl, rate_mask, idx); lq_sta 1212 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_switch_to_siso(struct il_priv *il, struct il_lq_sta *lq_sta, lq_sta 1217 drivers/net/wireless/intel/iwlegacy/4965-rs.c u8 is_green = lq_sta->is_green; lq_sta 1225 drivers/net/wireless/intel/iwlegacy/4965-rs.c tbl->is_dup = lq_sta->is_dup; lq_sta 1229 drivers/net/wireless/intel/iwlegacy/4965-rs.c rate_mask = lq_sta->active_siso_rate; lq_sta 1239 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_set_expected_tpt_table(lq_sta, tbl); lq_sta 1240 drivers/net/wireless/intel/iwlegacy/4965-rs.c rate = il4965_rs_get_best_rate(il, lq_sta, tbl, rate_mask, idx); lq_sta 1259 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_move_legacy_other(struct il_priv *il, struct il_lq_sta *lq_sta, lq_sta 1263 drivers/net/wireless/intel/iwlegacy/4965-rs.c struct il_scale_tbl_info *tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); lq_sta 1265 drivers/net/wireless/intel/iwlegacy/4965-rs.c &(lq_sta->lq_info[(1 - lq_sta->active_tbl)]); lq_sta 1280 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->action_counter++; lq_sta 1303 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_set_expected_tpt_table(lq_sta, lq_sta 1315 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_switch_to_siso(il, lq_sta, conf, sta, lq_sta 1318 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->action_counter = 0; lq_sta 1344 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_switch_to_mimo2(il, lq_sta, conf, sta, lq_sta 1347 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->action_counter = 0; lq_sta 1364 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->search_better_tbl = 1; lq_sta 1378 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_move_siso_to_other(struct il_priv *il, struct il_lq_sta *lq_sta, lq_sta 1382 drivers/net/wireless/intel/iwlegacy/4965-rs.c u8 is_green = lq_sta->is_green; lq_sta 1383 drivers/net/wireless/intel/iwlegacy/4965-rs.c struct il_scale_tbl_info *tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); lq_sta 1385 drivers/net/wireless/intel/iwlegacy/4965-rs.c &(lq_sta->lq_info[(1 - lq_sta->active_tbl)]); lq_sta 1400 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->action_counter++; lq_sta 1441 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_switch_to_mimo2(il, lq_sta, conf, sta, lq_sta 1464 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_set_expected_tpt_table(lq_sta, search_tbl); lq_sta 1466 drivers/net/wireless/intel/iwlegacy/4965-rs.c s32 tpt = lq_sta->last_tpt / 100; lq_sta 1487 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->search_better_tbl = 1; lq_sta 1501 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_move_mimo2_to_other(struct il_priv *il, struct il_lq_sta *lq_sta, lq_sta 1505 drivers/net/wireless/intel/iwlegacy/4965-rs.c s8 is_green = lq_sta->is_green; lq_sta 1506 drivers/net/wireless/intel/iwlegacy/4965-rs.c struct il_scale_tbl_info *tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); lq_sta 1508 drivers/net/wireless/intel/iwlegacy/4965-rs.c &(lq_sta->lq_info[(1 - lq_sta->active_tbl)]); lq_sta 1522 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->action_counter++; lq_sta 1562 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_switch_to_siso(il, lq_sta, conf, sta, lq_sta 1582 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_set_expected_tpt_table(lq_sta, search_tbl); lq_sta 1590 drivers/net/wireless/intel/iwlegacy/4965-rs.c s32 tpt = lq_sta->last_tpt / 100; lq_sta 1611 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->search_better_tbl = 1; lq_sta 1630 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_stay_in_table(struct il_lq_sta *lq_sta, bool force_search) lq_sta 1638 drivers/net/wireless/intel/iwlegacy/4965-rs.c il = lq_sta->drv; lq_sta 1639 drivers/net/wireless/intel/iwlegacy/4965-rs.c active_tbl = lq_sta->active_tbl; lq_sta 1641 drivers/net/wireless/intel/iwlegacy/4965-rs.c tbl = &(lq_sta->lq_info[active_tbl]); lq_sta 1644 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (lq_sta->stay_in_tbl) { lq_sta 1647 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (lq_sta->flush_timer) lq_sta 1650 drivers/net/wireless/intel/iwlegacy/4965-rs.c (unsigned long)(lq_sta->flush_timer + lq_sta 1662 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->total_failed > lq_sta->max_failure_limit || lq_sta 1663 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->total_success > lq_sta->max_success_limit || lq_sta 1664 drivers/net/wireless/intel/iwlegacy/4965-rs.c (!lq_sta->search_better_tbl && lq_sta->flush_timer && lq_sta 1667 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->total_failed, lq_sta->total_success, lq_sta 1671 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->stay_in_tbl = 0; /* only place reset */ lq_sta 1672 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->total_failed = 0; lq_sta 1673 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->total_success = 0; lq_sta 1674 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->flush_timer = 0; lq_sta 1683 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->table_count++; lq_sta 1684 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (lq_sta->table_count >= lq_sta->table_count_limit) { lq_sta 1685 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->table_count = 0; lq_sta 1699 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (!lq_sta->stay_in_tbl) { lq_sta 1710 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_update_rate_tbl(struct il_priv *il, struct il_lq_sta *lq_sta, lq_sta 1717 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_fill_link_cmd(il, lq_sta, rate); lq_sta 1718 drivers/net/wireless/intel/iwlegacy/4965-rs.c il_send_lq_cmd(il, &lq_sta->lq, CMD_ASYNC, false); lq_sta 1727 drivers/net/wireless/intel/iwlegacy/4965-rs.c struct il_lq_sta *lq_sta) lq_sta 1763 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->supp_rates = sta->supp_rates[lq_sta->band]; lq_sta 1765 drivers/net/wireless/intel/iwlegacy/4965-rs.c tid = il4965_rs_tl_add_packet(lq_sta, hdr); lq_sta 1766 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (tid != MAX_TID_COUNT && (lq_sta->tx_agg_tid_en & (1 << tid))) { lq_sta 1767 drivers/net/wireless/intel/iwlegacy/4965-rs.c tid_data = &il->stations[lq_sta->lq.sta_id].tid[tid]; lq_sta 1769 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->is_agg = 0; lq_sta 1771 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->is_agg = 1; lq_sta 1773 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->is_agg = 0; lq_sta 1780 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (!lq_sta->search_better_tbl) lq_sta 1781 drivers/net/wireless/intel/iwlegacy/4965-rs.c active_tbl = lq_sta->active_tbl; lq_sta 1783 drivers/net/wireless/intel/iwlegacy/4965-rs.c active_tbl = 1 - lq_sta->active_tbl; lq_sta 1785 drivers/net/wireless/intel/iwlegacy/4965-rs.c tbl = &(lq_sta->lq_info[active_tbl]); lq_sta 1787 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->is_green = 0; lq_sta 1789 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->is_green = il4965_rs_use_green(il, sta); lq_sta 1790 drivers/net/wireless/intel/iwlegacy/4965-rs.c is_green = lq_sta->is_green; lq_sta 1793 drivers/net/wireless/intel/iwlegacy/4965-rs.c idx = lq_sta->last_txrate_idx; lq_sta 1798 drivers/net/wireless/intel/iwlegacy/4965-rs.c rate_mask = il4965_rs_get_supported_rates(lq_sta, hdr, tbl->lq_type); lq_sta 1804 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (lq_sta->band == NL80211_BAND_5GHZ) lq_sta 1808 drivers/net/wireless/intel/iwlegacy/4965-rs.c (lq_sta->supp_rates << IL_FIRST_OFDM_RATE)); lq_sta 1811 drivers/net/wireless/intel/iwlegacy/4965-rs.c (u16) (rate_mask & lq_sta->supp_rates); lq_sta 1821 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (lq_sta->search_better_tbl) { lq_sta 1824 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->search_better_tbl = 0; lq_sta 1825 drivers/net/wireless/intel/iwlegacy/4965-rs.c tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); lq_sta 1828 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_update_rate_tbl(il, lq_sta, tbl, idx, lq_sta 1841 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (lq_sta->max_rate_idx != -1 && lq_sta->max_rate_idx < idx) { lq_sta 1842 drivers/net/wireless/intel/iwlegacy/4965-rs.c idx = lq_sta->max_rate_idx; lq_sta 1868 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_stay_in_table(lq_sta, false); lq_sta 1882 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (lq_sta->search_better_tbl) { lq_sta 1886 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (win->average_tpt > lq_sta->last_tpt) { lq_sta 1891 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->last_tpt); lq_sta 1894 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->enable_counter = 1; lq_sta 1897 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->active_tbl = active_tbl; lq_sta 1906 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->last_tpt); lq_sta 1912 drivers/net/wireless/intel/iwlegacy/4965-rs.c active_tbl = lq_sta->active_tbl; lq_sta 1913 drivers/net/wireless/intel/iwlegacy/4965-rs.c tbl = &(lq_sta->lq_info[active_tbl]); lq_sta 1917 drivers/net/wireless/intel/iwlegacy/4965-rs.c current_tpt = lq_sta->last_tpt; lq_sta 1925 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->search_better_tbl = 0; lq_sta 1939 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (lq_sta->max_rate_idx != -1 && lq_sta->max_rate_idx < high) lq_sta 2031 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_update_rate_tbl(il, lq_sta, tbl, idx, is_green); lq_sta 2035 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_stay_in_table(lq_sta, false); lq_sta 2043 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (!update_lq && !done_search && !lq_sta->stay_in_tbl && win->counter) { lq_sta 2045 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->last_tpt = current_tpt; lq_sta 2050 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_move_legacy_other(il, lq_sta, conf, sta, idx); lq_sta 2052 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_move_siso_to_other(il, lq_sta, conf, sta, lq_sta 2055 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_move_mimo2_to_other(il, lq_sta, conf, sta, lq_sta 2059 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (lq_sta->search_better_tbl) { lq_sta 2061 drivers/net/wireless/intel/iwlegacy/4965-rs.c tbl = &(lq_sta->lq_info[(1 - lq_sta->active_tbl)]); lq_sta 2070 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_fill_link_cmd(il, lq_sta, tbl->current_rate); lq_sta 2071 drivers/net/wireless/intel/iwlegacy/4965-rs.c il_send_lq_cmd(il, &lq_sta->lq, CMD_ASYNC, false); lq_sta 2076 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (done_search && !lq_sta->stay_in_tbl) { lq_sta 2082 drivers/net/wireless/intel/iwlegacy/4965-rs.c tbl1 = &(lq_sta->lq_info[lq_sta->active_tbl]); lq_sta 2084 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->action_counter > tbl1->max_search) { lq_sta 2086 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_set_stay_in_table(il, 1, lq_sta); lq_sta 2092 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (lq_sta->enable_counter && lq_sta 2093 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->action_counter >= tbl1->max_search) { lq_sta 2094 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (lq_sta->last_tpt > IL_AGG_TPT_THREHOLD && lq_sta 2095 drivers/net/wireless/intel/iwlegacy/4965-rs.c (lq_sta->tx_agg_tid_en & (1 << tid)) && lq_sta 2098 drivers/net/wireless/intel/iwlegacy/4965-rs.c &il->stations[lq_sta->lq.sta_id].tid[tid]; lq_sta 2103 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta, sta); lq_sta 2106 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_set_stay_in_table(il, 0, lq_sta); lq_sta 2114 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->last_txrate_idx = i; lq_sta 2133 drivers/net/wireless/intel/iwlegacy/4965-rs.c struct ieee80211_sta *sta, struct il_lq_sta *lq_sta) lq_sta 2143 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (!sta || !lq_sta) lq_sta 2148 drivers/net/wireless/intel/iwlegacy/4965-rs.c i = lq_sta->last_txrate_idx; lq_sta 2152 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (!lq_sta->search_better_tbl) lq_sta 2153 drivers/net/wireless/intel/iwlegacy/4965-rs.c active_tbl = lq_sta->active_tbl; lq_sta 2155 drivers/net/wireless/intel/iwlegacy/4965-rs.c active_tbl = 1 - lq_sta->active_tbl; lq_sta 2157 drivers/net/wireless/intel/iwlegacy/4965-rs.c tbl = &(lq_sta->lq_info[active_tbl]); lq_sta 2175 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_set_expected_tpt_table(lq_sta, tbl); lq_sta 2176 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_fill_link_cmd(NULL, lq_sta, rate); lq_sta 2177 drivers/net/wireless/intel/iwlegacy/4965-rs.c il->stations[lq_sta->lq.sta_id].lq = &lq_sta->lq; lq_sta 2178 drivers/net/wireless/intel/iwlegacy/4965-rs.c il_send_lq_cmd(il, &lq_sta->lq, CMD_SYNC, true); lq_sta 2190 drivers/net/wireless/intel/iwlegacy/4965-rs.c struct il_lq_sta *lq_sta = il_sta; lq_sta 2196 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (lq_sta) { lq_sta 2197 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->max_rate_idx = fls(txrc->rate_idx_mask) - 1; lq_sta 2199 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->max_rate_idx != -1) lq_sta 2200 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->max_rate_idx += IL_FIRST_OFDM_RATE; lq_sta 2201 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (lq_sta->max_rate_idx < 0 || lq_sta 2202 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->max_rate_idx >= RATE_COUNT) lq_sta 2203 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->max_rate_idx = -1; lq_sta 2207 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (lq_sta && !lq_sta->drv) { lq_sta 2212 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (!lq_sta) lq_sta 2215 drivers/net/wireless/intel/iwlegacy/4965-rs.c rate_idx = lq_sta->last_txrate_idx; lq_sta 2217 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (lq_sta->last_rate_n_flags & RATE_MCS_HT_MSK) { lq_sta 2221 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (il4965_rs_extract_rate(lq_sta->last_rate_n_flags) >= lq_sta 2225 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (lq_sta->last_rate_n_flags & RATE_MCS_SGI_MSK) lq_sta 2228 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (lq_sta->last_rate_n_flags & RATE_MCS_DUP_MSK) lq_sta 2231 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (lq_sta->last_rate_n_flags & RATE_MCS_HT40_MSK) lq_sta 2234 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (lq_sta->last_rate_n_flags & RATE_MCS_GF_MSK) lq_sta 2262 drivers/net/wireless/intel/iwlegacy/4965-rs.c return &sta_priv->lq_sta; lq_sta 2276 drivers/net/wireless/intel/iwlegacy/4965-rs.c struct il_lq_sta *lq_sta; lq_sta 2280 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta = &sta_priv->lq_sta; lq_sta 2283 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->lq.sta_id = sta_id; lq_sta 2287 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_rate_scale_clear_win(&lq_sta->lq_info[j]. lq_sta 2290 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->flush_timer = 0; lq_sta 2291 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->supp_rates = sta->supp_rates[sband->band]; lq_sta 2294 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_rate_scale_clear_win(&lq_sta->lq_info[j]. lq_sta 2304 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->is_dup = 0; lq_sta 2305 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->max_rate_idx = -1; lq_sta 2306 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->missed_rate_counter = IL_MISSED_RATE_MAX; lq_sta 2307 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->is_green = il4965_rs_use_green(il, sta); lq_sta 2308 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->active_legacy_rate = il->active_rate & ~(0x1000); lq_sta 2309 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->band = il->band; lq_sta 2314 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->active_siso_rate = ht_cap->mcs.rx_mask[0] << 1; lq_sta 2315 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->active_siso_rate |= ht_cap->mcs.rx_mask[0] & 0x1; lq_sta 2316 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->active_siso_rate &= ~((u16) 0x2); lq_sta 2317 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->active_siso_rate <<= IL_FIRST_OFDM_RATE; lq_sta 2320 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->active_mimo2_rate = ht_cap->mcs.rx_mask[1] << 1; lq_sta 2321 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->active_mimo2_rate |= ht_cap->mcs.rx_mask[1] & 0x1; lq_sta 2322 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->active_mimo2_rate &= ~((u16) 0x2); lq_sta 2323 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->active_mimo2_rate <<= IL_FIRST_OFDM_RATE; lq_sta 2326 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->lq.general_params.single_stream_ant_msk = lq_sta 2328 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->lq.general_params.dual_stream_ant_msk = lq_sta 2331 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (!lq_sta->lq.general_params.dual_stream_ant_msk) { lq_sta 2332 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->lq.general_params.dual_stream_ant_msk = ANT_AB; lq_sta 2334 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->lq.general_params.dual_stream_ant_msk = lq_sta 2339 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->tx_agg_tid_en = IL_AGG_ALL_TID; lq_sta 2340 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->drv = il; lq_sta 2343 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->last_txrate_idx = rate_lowest_index(sband, sta); lq_sta 2345 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->last_txrate_idx += IL_FIRST_OFDM_RATE; lq_sta 2346 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->is_agg = 0; lq_sta 2349 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->dbg_fixed_rate = 0; lq_sta 2352 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_initialize_lq(il, conf, sta, lq_sta); lq_sta 2356 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_fill_link_cmd(struct il_priv *il, struct il_lq_sta *lq_sta, lq_sta 2366 drivers/net/wireless/intel/iwlegacy/4965-rs.c struct il_link_quality_cmd *lq_cmd = &lq_sta->lq; lq_sta 2369 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_dbgfs_set_mcs(lq_sta, &new_rate, idx); lq_sta 2372 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_get_tbl_info_from_mcs(new_rate, lq_sta->band, &tbl_type, lq_sta 2418 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_dbgfs_set_mcs(lq_sta, &new_rate, idx); lq_sta 2427 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_get_tbl_info_from_mcs(new_rate, lq_sta->band, lq_sta 2438 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_get_lower_rate(lq_sta, &tbl_type, rate_idx, lq_sta 2460 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_dbgfs_set_mcs(lq_sta, &new_rate, idx); lq_sta 2501 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_dbgfs_set_mcs(struct il_lq_sta *lq_sta, u32 * rate_n_flags, int idx) lq_sta 2507 drivers/net/wireless/intel/iwlegacy/4965-rs.c il = lq_sta->drv; lq_sta 2509 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (lq_sta->dbg_fixed_rate) { lq_sta 2511 drivers/net/wireless/intel/iwlegacy/4965-rs.c ((lq_sta-> lq_sta 2515 drivers/net/wireless/intel/iwlegacy/4965-rs.c *rate_n_flags = lq_sta->dbg_fixed_rate; lq_sta 2518 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->dbg_fixed_rate = 0; lq_sta 2534 drivers/net/wireless/intel/iwlegacy/4965-rs.c struct il_lq_sta *lq_sta = file->private_data; lq_sta 2540 drivers/net/wireless/intel/iwlegacy/4965-rs.c il = lq_sta->drv; lq_sta 2547 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->dbg_fixed_rate = parsed_rate; lq_sta 2549 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->dbg_fixed_rate = 0; lq_sta 2551 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->active_legacy_rate = 0x0FFF; /* 1 - 54 MBits, includes CCK */ lq_sta 2552 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->active_siso_rate = 0x1FD0; /* 6 - 60 MBits, no 9, no CCK */ lq_sta 2553 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->active_mimo2_rate = 0x1FD0; /* 6 - 60 MBits, no 9, no CCK */ lq_sta 2555 drivers/net/wireless/intel/iwlegacy/4965-rs.c D_RATE("sta_id %d rate 0x%X\n", lq_sta->lq.sta_id, lq_sta 2556 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->dbg_fixed_rate); lq_sta 2558 drivers/net/wireless/intel/iwlegacy/4965-rs.c if (lq_sta->dbg_fixed_rate) { lq_sta 2559 drivers/net/wireless/intel/iwlegacy/4965-rs.c il4965_rs_fill_link_cmd(NULL, lq_sta, lq_sta->dbg_fixed_rate); lq_sta 2560 drivers/net/wireless/intel/iwlegacy/4965-rs.c il_send_lq_cmd(lq_sta->drv, &lq_sta->lq, CMD_ASYNC, false); lq_sta 2576 drivers/net/wireless/intel/iwlegacy/4965-rs.c struct il_lq_sta *lq_sta = file->private_data; lq_sta 2578 drivers/net/wireless/intel/iwlegacy/4965-rs.c struct il_scale_tbl_info *tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); lq_sta 2580 drivers/net/wireless/intel/iwlegacy/4965-rs.c il = lq_sta->drv; lq_sta 2585 drivers/net/wireless/intel/iwlegacy/4965-rs.c desc += sprintf(buff + desc, "sta_id %d\n", lq_sta->lq.sta_id); lq_sta 2588 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->total_failed, lq_sta->total_success, lq_sta 2589 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->active_legacy_rate); lq_sta 2591 drivers/net/wireless/intel/iwlegacy/4965-rs.c sprintf(buff + desc, "fixed rate 0x%X\n", lq_sta->dbg_fixed_rate); lq_sta 2610 drivers/net/wireless/intel/iwlegacy/4965-rs.c (lq_sta->is_green) ? "GF enabled" : "", lq_sta 2611 drivers/net/wireless/intel/iwlegacy/4965-rs.c (lq_sta->is_agg) ? "AGG on" : ""); lq_sta 2615 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->last_rate_n_flags); lq_sta 2619 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->lq.general_params.flags, lq_sta 2620 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->lq.general_params.mimo_delimiter, lq_sta 2621 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->lq.general_params.single_stream_ant_msk, lq_sta 2622 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->lq.general_params.dual_stream_ant_msk); lq_sta 2628 drivers/net/wireless/intel/iwlegacy/4965-rs.c le16_to_cpu(lq_sta->lq.agg_params.agg_time_limit), lq_sta 2629 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->lq.agg_params.agg_dis_start_th, lq_sta 2630 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->lq.agg_params.agg_frame_cnt_limit); lq_sta 2635 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->lq.general_params.start_rate_idx[0], lq_sta 2636 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->lq.general_params.start_rate_idx[1], lq_sta 2637 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->lq.general_params.start_rate_idx[2], lq_sta 2638 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->lq.general_params.start_rate_idx[3]); lq_sta 2643 drivers/net/wireless/intel/iwlegacy/4965-rs.c (lq_sta->lq.rs_table[i]. lq_sta 2648 drivers/net/wireless/intel/iwlegacy/4965-rs.c le32_to_cpu(lq_sta->lq.rs_table[i]. lq_sta 2655 drivers/net/wireless/intel/iwlegacy/4965-rs.c le32_to_cpu(lq_sta->lq.rs_table[i]. lq_sta 2683 drivers/net/wireless/intel/iwlegacy/4965-rs.c struct il_lq_sta *lq_sta = file->private_data; lq_sta 2693 drivers/net/wireless/intel/iwlegacy/4965-rs.c "rate=0x%X\n", lq_sta->active_tbl == i ? "*" : "x", lq_sta 2694 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->lq_info[i].lq_type, lq_sta 2695 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->lq_info[i].is_SGI, lq_sta 2696 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->lq_info[i].is_ht40, lq_sta 2697 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->lq_info[i].is_dup, lq_sta->is_green, lq_sta 2698 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->lq_info[i].current_rate); lq_sta 2703 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->lq_info[i].win[j].counter, lq_sta 2704 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->lq_info[i].win[j].success_counter, lq_sta 2705 drivers/net/wireless/intel/iwlegacy/4965-rs.c lq_sta->lq_info[i].win[j].success_ratio); lq_sta 2726 drivers/net/wireless/intel/iwlegacy/4965-rs.c struct il_lq_sta *lq_sta = file->private_data; lq_sta 2727 drivers/net/wireless/intel/iwlegacy/4965-rs.c struct il_scale_tbl_info *tbl = &lq_sta->lq_info[lq_sta->active_tbl]; lq_sta 2732 drivers/net/wireless/intel/iwlegacy/4965-rs.c tbl->expected_tpt[lq_sta->last_txrate_idx]); lq_sta 2736 drivers/net/wireless/intel/iwlegacy/4965-rs.c il_rates[lq_sta->last_txrate_idx].ieee >> 1); lq_sta 2750 drivers/net/wireless/intel/iwlegacy/4965-rs.c struct il_lq_sta *lq_sta = il_sta; lq_sta 2752 drivers/net/wireless/intel/iwlegacy/4965-rs.c debugfs_create_file("rate_scale_table", 0600, dir, lq_sta, lq_sta 2754 drivers/net/wireless/intel/iwlegacy/4965-rs.c debugfs_create_file("rate_stats_table", 0400, dir, lq_sta, lq_sta 2756 drivers/net/wireless/intel/iwlegacy/4965-rs.c debugfs_create_file("rate_scale_data", 0400, dir, lq_sta, lq_sta 2759 drivers/net/wireless/intel/iwlegacy/4965-rs.c &lq_sta->tx_agg_tid_en); lq_sta 2834 drivers/net/wireless/intel/iwlegacy/common.h struct il_lq_sta lq_sta; lq_sta 195 drivers/net/wireless/intel/iwlwifi/dvm/dev.h struct iwl_lq_sta lq_sta; lq_sta 762 drivers/net/wireless/intel/iwlwifi/dvm/mac80211.c sta_priv->lq_sta.lq.general_params.flags &= lq_sta 765 drivers/net/wireless/intel/iwlwifi/dvm/mac80211.c &sta_priv->lq_sta.lq, CMD_ASYNC, false); lq_sta 138 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_lq_sta *lq_sta); lq_sta 140 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_lq_sta *lq_sta, u32 rate_n_flags); lq_sta 141 drivers/net/wireless/intel/iwlwifi/dvm/rs.c static void rs_stay_in_table(struct iwl_lq_sta *lq_sta, bool force_search); lq_sta 145 drivers/net/wireless/intel/iwlwifi/dvm/rs.c static void rs_dbgfs_set_mcs(struct iwl_lq_sta *lq_sta, lq_sta 148 drivers/net/wireless/intel/iwlwifi/dvm/rs.c static void rs_dbgfs_set_mcs(struct iwl_lq_sta *lq_sta, lq_sta 327 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_lq_sta *lq_sta) lq_sta 330 drivers/net/wireless/intel/iwlwifi/dvm/rs.c container_of(lq_sta, struct iwl_station_priv, lq_sta); lq_sta 333 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->active_legacy_rate = 0x0FFF; /* 1 - 54 MBits, includes CCK */ lq_sta 334 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->active_siso_rate = 0x1FD0; /* 6 - 60 MBits, no 9, no CCK */ lq_sta 335 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->active_mimo2_rate = 0x1FD0; /* 6 - 60 MBits, no 9, no CCK */ lq_sta 336 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->active_mimo3_rate = 0x1FD0; /* 6 - 60 MBits, no 9, no CCK */ lq_sta 339 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->lq.sta_id, lq_sta->dbg_fixed_rate); lq_sta 341 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (lq_sta->dbg_fixed_rate) { lq_sta 342 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_fill_link_cmd(NULL, lq_sta, lq_sta->dbg_fixed_rate); lq_sta 343 drivers/net/wireless/intel/iwlwifi/dvm/rs.c iwl_send_lq_cmd(lq_sta->drv, ctx, &lq_sta->lq, CMD_ASYNC, lq_sta 698 drivers/net/wireless/intel/iwlwifi/dvm/rs.c static u16 rs_get_supported_rates(struct iwl_lq_sta *lq_sta, lq_sta 703 drivers/net/wireless/intel/iwlwifi/dvm/rs.c return lq_sta->active_legacy_rate; lq_sta 706 drivers/net/wireless/intel/iwlwifi/dvm/rs.c return lq_sta->active_siso_rate; lq_sta 708 drivers/net/wireless/intel/iwlwifi/dvm/rs.c return lq_sta->active_mimo2_rate; lq_sta 710 drivers/net/wireless/intel/iwlwifi/dvm/rs.c return lq_sta->active_mimo3_rate; lq_sta 773 drivers/net/wireless/intel/iwlwifi/dvm/rs.c static u32 rs_get_lower_rate(struct iwl_lq_sta *lq_sta, lq_sta 781 drivers/net/wireless/intel/iwlwifi/dvm/rs.c u8 is_green = lq_sta->is_green; lq_sta 782 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_priv *priv = lq_sta->drv; lq_sta 790 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (lq_sta->band == NL80211_BAND_5GHZ) lq_sta 804 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rate_mask = rs_get_supported_rates(lq_sta, NULL, tbl->lq_type); lq_sta 809 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (lq_sta->band == NL80211_BAND_5GHZ) lq_sta 811 drivers/net/wireless/intel/iwlwifi/dvm/rs.c (lq_sta->supp_rates << IWL_FIRST_OFDM_RATE)); lq_sta 813 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rate_mask = (u16)(rate_mask & lq_sta->supp_rates); lq_sta 822 drivers/net/wireless/intel/iwlwifi/dvm/rs.c high_low = rs_get_adjacent_rate(lq_sta->drv, scale_index, rate_mask, lq_sta 830 drivers/net/wireless/intel/iwlwifi/dvm/rs.c return rate_n_flags_from_tbl(lq_sta->drv, tbl, low, is_green); lq_sta 844 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_lq_sta *lq_sta) lq_sta 865 drivers/net/wireless/intel/iwlwifi/dvm/rs.c tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); lq_sta 866 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_fill_link_cmd(priv, lq_sta, tbl->current_rate); lq_sta 867 drivers/net/wireless/intel/iwlwifi/dvm/rs.c iwl_send_lq_cmd(priv, ctx, &lq_sta->lq, CMD_ASYNC, false); lq_sta 883 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_lq_sta *lq_sta = priv_sta; lq_sta 899 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (!lq_sta) { lq_sta 902 drivers/net/wireless/intel/iwlwifi/dvm/rs.c } else if (!lq_sta->drv) { lq_sta 924 drivers/net/wireless/intel/iwlwifi/dvm/rs.c table = &lq_sta->lq; lq_sta 958 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->missed_rate_counter++; lq_sta 959 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (lq_sta->missed_rate_counter > IWL_MISSED_RATE_MAX) { lq_sta 960 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->missed_rate_counter = 0; lq_sta 961 drivers/net/wireless/intel/iwlwifi/dvm/rs.c iwl_send_lq_cmd(priv, ctx, &lq_sta->lq, CMD_ASYNC, false); lq_sta 967 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->missed_rate_counter = 0; lq_sta 971 drivers/net/wireless/intel/iwlwifi/dvm/rs.c &(lq_sta->lq_info[lq_sta->active_tbl]))) { lq_sta 972 drivers/net/wireless/intel/iwlwifi/dvm/rs.c curr_tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); lq_sta 973 drivers/net/wireless/intel/iwlwifi/dvm/rs.c other_tbl = &(lq_sta->lq_info[1 - lq_sta->active_tbl]); lq_sta 975 drivers/net/wireless/intel/iwlwifi/dvm/rs.c &lq_sta->lq_info[1 - lq_sta->active_tbl])) { lq_sta 976 drivers/net/wireless/intel/iwlwifi/dvm/rs.c curr_tbl = &(lq_sta->lq_info[1 - lq_sta->active_tbl]); lq_sta 977 drivers/net/wireless/intel/iwlwifi/dvm/rs.c other_tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); lq_sta 980 drivers/net/wireless/intel/iwlwifi/dvm/rs.c tmp_tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); lq_sta 983 drivers/net/wireless/intel/iwlwifi/dvm/rs.c tmp_tbl = &(lq_sta->lq_info[1 - lq_sta->active_tbl]); lq_sta 992 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_stay_in_table(lq_sta, true); lq_sta 1012 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (lq_sta->stay_in_tbl) { lq_sta 1013 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->total_success += info->status.ampdu_ack_len; lq_sta 1014 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->total_failed += (info->status.ampdu_len - lq_sta 1047 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (lq_sta->stay_in_tbl) { lq_sta 1048 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->total_success += legacy_success; lq_sta 1049 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->total_failed += retries + (1 - legacy_success); lq_sta 1053 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->last_rate_n_flags = tx_rate; lq_sta 1057 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_rate_scale_perform(priv, skb, sta, lq_sta); lq_sta 1060 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_bt_update_lq(priv, ctx, lq_sta); lq_sta 1072 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_lq_sta *lq_sta) lq_sta 1075 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->stay_in_tbl = 1; /* only place this gets set */ lq_sta 1077 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->table_count_limit = IWL_LEGACY_TABLE_COUNT; lq_sta 1078 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->max_failure_limit = IWL_LEGACY_FAILURE_LIMIT; lq_sta 1079 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->max_success_limit = IWL_LEGACY_SUCCESS_LIMIT; lq_sta 1081 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->table_count_limit = IWL_NONE_LEGACY_TABLE_COUNT; lq_sta 1082 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->max_failure_limit = IWL_NONE_LEGACY_FAILURE_LIMIT; lq_sta 1083 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->max_success_limit = IWL_NONE_LEGACY_SUCCESS_LIMIT; lq_sta 1085 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->table_count = 0; lq_sta 1086 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->total_failed = 0; lq_sta 1087 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->total_success = 0; lq_sta 1088 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->flush_timer = jiffies; lq_sta 1089 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->action_counter = 0; lq_sta 1095 drivers/net/wireless/intel/iwlwifi/dvm/rs.c static void rs_set_expected_tpt_table(struct iwl_lq_sta *lq_sta, lq_sta 1116 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (is_siso(tbl->lq_type) && (!tbl->is_ht40 || lq_sta->is_dup)) lq_sta 1120 drivers/net/wireless/intel/iwlwifi/dvm/rs.c else if (is_mimo2(tbl->lq_type) && (!tbl->is_ht40 || lq_sta->is_dup)) lq_sta 1124 drivers/net/wireless/intel/iwlwifi/dvm/rs.c else if (is_mimo3(tbl->lq_type) && (!tbl->is_ht40 || lq_sta->is_dup)) lq_sta 1129 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (!tbl->is_SGI && !lq_sta->is_agg) /* Normal */ lq_sta 1131 drivers/net/wireless/intel/iwlwifi/dvm/rs.c else if (tbl->is_SGI && !lq_sta->is_agg) /* SGI */ lq_sta 1133 drivers/net/wireless/intel/iwlwifi/dvm/rs.c else if (!tbl->is_SGI && lq_sta->is_agg) /* AGG */ lq_sta 1152 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_lq_sta *lq_sta, lq_sta 1158 drivers/net/wireless/intel/iwlwifi/dvm/rs.c &(lq_sta->lq_info[lq_sta->active_tbl]); lq_sta 1192 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if ((((100 * tpt_tbl[rate]) > lq_sta->last_tpt) && lq_sta 1245 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_lq_sta *lq_sta, lq_sta 1252 drivers/net/wireless/intel/iwlwifi/dvm/rs.c s8 is_green = lq_sta->is_green; lq_sta 1269 drivers/net/wireless/intel/iwlwifi/dvm/rs.c tbl->is_dup = lq_sta->is_dup; lq_sta 1272 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rate_mask = lq_sta->active_mimo2_rate; lq_sta 1279 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_set_expected_tpt_table(lq_sta, tbl); lq_sta 1281 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rate = rs_get_best_rate(priv, lq_sta, tbl, rate_mask, index); lq_sta 1300 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_lq_sta *lq_sta, lq_sta 1307 drivers/net/wireless/intel/iwlwifi/dvm/rs.c s8 is_green = lq_sta->is_green; lq_sta 1324 drivers/net/wireless/intel/iwlwifi/dvm/rs.c tbl->is_dup = lq_sta->is_dup; lq_sta 1327 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rate_mask = lq_sta->active_mimo3_rate; lq_sta 1334 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_set_expected_tpt_table(lq_sta, tbl); lq_sta 1336 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rate = rs_get_best_rate(priv, lq_sta, tbl, rate_mask, index); lq_sta 1356 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_lq_sta *lq_sta, lq_sta 1362 drivers/net/wireless/intel/iwlwifi/dvm/rs.c u8 is_green = lq_sta->is_green; lq_sta 1372 drivers/net/wireless/intel/iwlwifi/dvm/rs.c tbl->is_dup = lq_sta->is_dup; lq_sta 1376 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rate_mask = lq_sta->active_siso_rate; lq_sta 1386 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_set_expected_tpt_table(lq_sta, tbl); lq_sta 1387 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rate = rs_get_best_rate(priv, lq_sta, tbl, rate_mask, index); lq_sta 1405 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_lq_sta *lq_sta, lq_sta 1410 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_scale_tbl_info *tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); lq_sta 1412 drivers/net/wireless/intel/iwlwifi/dvm/rs.c &(lq_sta->lq_info[(1 - lq_sta->active_tbl)]); lq_sta 1464 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->action_counter++; lq_sta 1489 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_set_expected_tpt_table(lq_sta, search_tbl); lq_sta 1499 drivers/net/wireless/intel/iwlwifi/dvm/rs.c ret = rs_switch_to_siso(priv, lq_sta, conf, sta, lq_sta 1502 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->action_counter = 0; lq_sta 1526 drivers/net/wireless/intel/iwlwifi/dvm/rs.c ret = rs_switch_to_mimo2(priv, lq_sta, conf, sta, lq_sta 1529 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->action_counter = 0; lq_sta 1546 drivers/net/wireless/intel/iwlwifi/dvm/rs.c ret = rs_switch_to_mimo3(priv, lq_sta, conf, sta, lq_sta 1549 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->action_counter = 0; lq_sta 1566 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->search_better_tbl = 1; lq_sta 1578 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_lq_sta *lq_sta, lq_sta 1582 drivers/net/wireless/intel/iwlwifi/dvm/rs.c u8 is_green = lq_sta->is_green; lq_sta 1583 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_scale_tbl_info *tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); lq_sta 1585 drivers/net/wireless/intel/iwlwifi/dvm/rs.c &(lq_sta->lq_info[(1 - lq_sta->active_tbl)]); lq_sta 1634 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->action_counter++; lq_sta 1675 drivers/net/wireless/intel/iwlwifi/dvm/rs.c ret = rs_switch_to_mimo2(priv, lq_sta, conf, sta, lq_sta 1699 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_set_expected_tpt_table(lq_sta, search_tbl); lq_sta 1701 drivers/net/wireless/intel/iwlwifi/dvm/rs.c s32 tpt = lq_sta->last_tpt / 100; lq_sta 1719 drivers/net/wireless/intel/iwlwifi/dvm/rs.c ret = rs_switch_to_mimo3(priv, lq_sta, conf, sta, lq_sta 1736 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->search_better_tbl = 1; lq_sta 1748 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_lq_sta *lq_sta, lq_sta 1752 drivers/net/wireless/intel/iwlwifi/dvm/rs.c s8 is_green = lq_sta->is_green; lq_sta 1753 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_scale_tbl_info *tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); lq_sta 1755 drivers/net/wireless/intel/iwlwifi/dvm/rs.c &(lq_sta->lq_info[(1 - lq_sta->active_tbl)]); lq_sta 1802 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->action_counter++; lq_sta 1839 drivers/net/wireless/intel/iwlwifi/dvm/rs.c ret = rs_switch_to_siso(priv, lq_sta, conf, sta, lq_sta 1859 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_set_expected_tpt_table(lq_sta, search_tbl); lq_sta 1867 drivers/net/wireless/intel/iwlwifi/dvm/rs.c s32 tpt = lq_sta->last_tpt / 100; lq_sta 1886 drivers/net/wireless/intel/iwlwifi/dvm/rs.c ret = rs_switch_to_mimo3(priv, lq_sta, conf, sta, lq_sta 1903 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->search_better_tbl = 1; lq_sta 1916 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_lq_sta *lq_sta, lq_sta 1920 drivers/net/wireless/intel/iwlwifi/dvm/rs.c s8 is_green = lq_sta->is_green; lq_sta 1921 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_scale_tbl_info *tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); lq_sta 1923 drivers/net/wireless/intel/iwlwifi/dvm/rs.c &(lq_sta->lq_info[(1 - lq_sta->active_tbl)]); lq_sta 1970 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->action_counter++; lq_sta 2005 drivers/net/wireless/intel/iwlwifi/dvm/rs.c ret = rs_switch_to_siso(priv, lq_sta, conf, sta, lq_sta 2029 drivers/net/wireless/intel/iwlwifi/dvm/rs.c ret = rs_switch_to_mimo2(priv, lq_sta, conf, sta, lq_sta 2049 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_set_expected_tpt_table(lq_sta, search_tbl); lq_sta 2057 drivers/net/wireless/intel/iwlwifi/dvm/rs.c s32 tpt = lq_sta->last_tpt / 100; lq_sta 2077 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->search_better_tbl = 1; lq_sta 2092 drivers/net/wireless/intel/iwlwifi/dvm/rs.c static void rs_stay_in_table(struct iwl_lq_sta *lq_sta, bool force_search) lq_sta 2100 drivers/net/wireless/intel/iwlwifi/dvm/rs.c priv = lq_sta->drv; lq_sta 2101 drivers/net/wireless/intel/iwlwifi/dvm/rs.c active_tbl = lq_sta->active_tbl; lq_sta 2103 drivers/net/wireless/intel/iwlwifi/dvm/rs.c tbl = &(lq_sta->lq_info[active_tbl]); lq_sta 2106 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (lq_sta->stay_in_tbl) { lq_sta 2109 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (lq_sta->flush_timer) lq_sta 2112 drivers/net/wireless/intel/iwlwifi/dvm/rs.c (unsigned long)(lq_sta->flush_timer + lq_sta 2124 drivers/net/wireless/intel/iwlwifi/dvm/rs.c (lq_sta->total_failed > lq_sta->max_failure_limit) || lq_sta 2125 drivers/net/wireless/intel/iwlwifi/dvm/rs.c (lq_sta->total_success > lq_sta->max_success_limit) || lq_sta 2126 drivers/net/wireless/intel/iwlwifi/dvm/rs.c ((!lq_sta->search_better_tbl) && (lq_sta->flush_timer) lq_sta 2129 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->total_failed, lq_sta 2130 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->total_success, lq_sta 2134 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->stay_in_tbl = 0; /* only place reset */ lq_sta 2135 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->total_failed = 0; lq_sta 2136 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->total_success = 0; lq_sta 2137 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->flush_timer = 0; lq_sta 2146 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->table_count++; lq_sta 2147 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (lq_sta->table_count >= lq_sta 2148 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->table_count_limit) { lq_sta 2149 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->table_count = 0; lq_sta 2161 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (!lq_sta->stay_in_tbl) { lq_sta 2173 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_lq_sta *lq_sta, lq_sta 2181 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_fill_link_cmd(priv, lq_sta, rate); lq_sta 2182 drivers/net/wireless/intel/iwlwifi/dvm/rs.c iwl_send_lq_cmd(priv, ctx, &lq_sta->lq, CMD_ASYNC, false); lq_sta 2191 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_lq_sta *lq_sta) lq_sta 2229 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->supp_rates = sta->supp_rates[lq_sta->band]; lq_sta 2231 drivers/net/wireless/intel/iwlwifi/dvm/rs.c tid = rs_tl_add_packet(lq_sta, hdr); lq_sta 2233 drivers/net/wireless/intel/iwlwifi/dvm/rs.c (lq_sta->tx_agg_tid_en & (1 << tid))) { lq_sta 2234 drivers/net/wireless/intel/iwlwifi/dvm/rs.c tid_data = &priv->tid_data[lq_sta->lq.sta_id][tid]; lq_sta 2236 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->is_agg = 0; lq_sta 2238 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->is_agg = 1; lq_sta 2240 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->is_agg = 0; lq_sta 2247 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (!lq_sta->search_better_tbl) lq_sta 2248 drivers/net/wireless/intel/iwlwifi/dvm/rs.c active_tbl = lq_sta->active_tbl; lq_sta 2250 drivers/net/wireless/intel/iwlwifi/dvm/rs.c active_tbl = 1 - lq_sta->active_tbl; lq_sta 2252 drivers/net/wireless/intel/iwlwifi/dvm/rs.c tbl = &(lq_sta->lq_info[active_tbl]); lq_sta 2254 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->is_green = 0; lq_sta 2256 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->is_green = rs_use_green(sta); lq_sta 2257 drivers/net/wireless/intel/iwlwifi/dvm/rs.c is_green = lq_sta->is_green; lq_sta 2260 drivers/net/wireless/intel/iwlwifi/dvm/rs.c index = lq_sta->last_txrate_idx; lq_sta 2266 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rate_mask = rs_get_supported_rates(lq_sta, hdr, tbl->lq_type); lq_sta 2272 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (lq_sta->band == NL80211_BAND_5GHZ) lq_sta 2275 drivers/net/wireless/intel/iwlwifi/dvm/rs.c (lq_sta->supp_rates << IWL_FIRST_OFDM_RATE)); lq_sta 2278 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->supp_rates); lq_sta 2288 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (lq_sta->search_better_tbl) { lq_sta 2291 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->search_better_tbl = 0; lq_sta 2292 drivers/net/wireless/intel/iwlwifi/dvm/rs.c tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); lq_sta 2295 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_update_rate_tbl(priv, ctx, lq_sta, tbl, lq_sta 2308 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if ((lq_sta->max_rate_idx != -1) && lq_sta 2309 drivers/net/wireless/intel/iwlwifi/dvm/rs.c (lq_sta->max_rate_idx < index)) { lq_sta 2310 drivers/net/wireless/intel/iwlwifi/dvm/rs.c index = lq_sta->max_rate_idx; lq_sta 2337 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_stay_in_table(lq_sta, false); lq_sta 2351 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (lq_sta->search_better_tbl && lq_sta 2356 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (window->average_tpt > lq_sta->last_tpt) { lq_sta 2362 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->last_tpt); lq_sta 2365 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->enable_counter = 1; lq_sta 2368 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->active_tbl = active_tbl; lq_sta 2378 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->last_tpt); lq_sta 2384 drivers/net/wireless/intel/iwlwifi/dvm/rs.c active_tbl = lq_sta->active_tbl; lq_sta 2385 drivers/net/wireless/intel/iwlwifi/dvm/rs.c tbl = &(lq_sta->lq_info[active_tbl]); lq_sta 2389 drivers/net/wireless/intel/iwlwifi/dvm/rs.c current_tpt = lq_sta->last_tpt; lq_sta 2397 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->search_better_tbl = 0; lq_sta 2410 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if ((lq_sta->max_rate_idx != -1) && lq_sta 2411 drivers/net/wireless/intel/iwlwifi/dvm/rs.c (lq_sta->max_rate_idx < high)) lq_sta 2488 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (lq_sta->last_bt_traffic > priv->bt_traffic_load) { lq_sta 2494 drivers/net/wireless/intel/iwlwifi/dvm/rs.c } else if (lq_sta->last_bt_traffic <= priv->bt_traffic_load) { lq_sta 2498 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->last_bt_traffic = priv->bt_traffic_load; lq_sta 2503 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_stay_in_table(lq_sta, true); lq_sta 2537 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_update_rate_tbl(priv, ctx, lq_sta, tbl, index, is_green); lq_sta 2542 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_stay_in_table(lq_sta, false); lq_sta 2550 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (!update_lq && !done_search && !lq_sta->stay_in_tbl && window->counter) { lq_sta 2552 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->last_tpt = current_tpt; lq_sta 2557 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_move_legacy_other(priv, lq_sta, conf, sta, index); lq_sta 2559 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_move_siso_to_other(priv, lq_sta, conf, sta, index); lq_sta 2561 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_move_mimo2_to_other(priv, lq_sta, conf, sta, index); lq_sta 2563 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_move_mimo3_to_other(priv, lq_sta, conf, sta, index); lq_sta 2566 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (lq_sta->search_better_tbl) { lq_sta 2568 drivers/net/wireless/intel/iwlwifi/dvm/rs.c tbl = &(lq_sta->lq_info[(1 - lq_sta->active_tbl)]); lq_sta 2577 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_fill_link_cmd(priv, lq_sta, tbl->current_rate); lq_sta 2578 drivers/net/wireless/intel/iwlwifi/dvm/rs.c iwl_send_lq_cmd(priv, ctx, &lq_sta->lq, CMD_ASYNC, false); lq_sta 2583 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (done_search && !lq_sta->stay_in_tbl) { lq_sta 2589 drivers/net/wireless/intel/iwlwifi/dvm/rs.c tbl1 = &(lq_sta->lq_info[lq_sta->active_tbl]); lq_sta 2591 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->action_counter > tbl1->max_search) { lq_sta 2593 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_set_stay_in_table(priv, 1, lq_sta); lq_sta 2599 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (lq_sta->enable_counter && lq_sta 2600 drivers/net/wireless/intel/iwlwifi/dvm/rs.c (lq_sta->action_counter >= tbl1->max_search) && lq_sta 2602 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if ((lq_sta->last_tpt > IWL_AGG_TPT_THREHOLD) && lq_sta 2603 drivers/net/wireless/intel/iwlwifi/dvm/rs.c (lq_sta->tx_agg_tid_en & (1 << tid)) && lq_sta 2605 drivers/net/wireless/intel/iwlwifi/dvm/rs.c u8 sta_id = lq_sta->lq.sta_id; lq_sta 2612 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta, sta); lq_sta 2615 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_set_stay_in_table(priv, 0, lq_sta); lq_sta 2621 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->last_txrate_idx = index; lq_sta 2640 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_lq_sta *lq_sta) lq_sta 2652 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (!sta || !lq_sta) lq_sta 2658 drivers/net/wireless/intel/iwlwifi/dvm/rs.c i = lq_sta->last_txrate_idx; lq_sta 2662 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (!lq_sta->search_better_tbl) lq_sta 2663 drivers/net/wireless/intel/iwlwifi/dvm/rs.c active_tbl = lq_sta->active_tbl; lq_sta 2665 drivers/net/wireless/intel/iwlwifi/dvm/rs.c active_tbl = 1 - lq_sta->active_tbl; lq_sta 2667 drivers/net/wireless/intel/iwlwifi/dvm/rs.c tbl = &(lq_sta->lq_info[active_tbl]); lq_sta 2685 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_set_expected_tpt_table(lq_sta, tbl); lq_sta 2686 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_fill_link_cmd(NULL, lq_sta, rate); lq_sta 2687 drivers/net/wireless/intel/iwlwifi/dvm/rs.c priv->stations[lq_sta->lq.sta_id].lq = &lq_sta->lq; lq_sta 2688 drivers/net/wireless/intel/iwlwifi/dvm/rs.c iwl_send_lq_cmd(priv, ctx, &lq_sta->lq, 0, true); lq_sta 2701 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_lq_sta *lq_sta = priv_sta; lq_sta 2707 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (lq_sta) { lq_sta 2708 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->max_rate_idx = fls(txrc->rate_idx_mask) - 1; lq_sta 2710 drivers/net/wireless/intel/iwlwifi/dvm/rs.c (lq_sta->max_rate_idx != -1)) lq_sta 2711 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->max_rate_idx += IWL_FIRST_OFDM_RATE; lq_sta 2712 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if ((lq_sta->max_rate_idx < 0) || lq_sta 2713 drivers/net/wireless/intel/iwlwifi/dvm/rs.c (lq_sta->max_rate_idx >= IWL_RATE_COUNT)) lq_sta 2714 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->max_rate_idx = -1; lq_sta 2718 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (lq_sta && !lq_sta->drv) { lq_sta 2723 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rate_idx = lq_sta->last_txrate_idx; lq_sta 2725 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (lq_sta->last_rate_n_flags & RATE_MCS_HT_MSK) { lq_sta 2729 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (rs_extract_rate(lq_sta->last_rate_n_flags) >= lq_sta 2732 drivers/net/wireless/intel/iwlwifi/dvm/rs.c else if (rs_extract_rate(lq_sta->last_rate_n_flags) >= lq_sta 2736 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (lq_sta->last_rate_n_flags & RATE_MCS_SGI_MSK) lq_sta 2738 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (lq_sta->last_rate_n_flags & RATE_MCS_DUP_MSK) lq_sta 2740 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (lq_sta->last_rate_n_flags & RATE_MCS_HT40_MSK) lq_sta 2742 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (lq_sta->last_rate_n_flags & RATE_MCS_GF_MSK) lq_sta 2769 drivers/net/wireless/intel/iwlwifi/dvm/rs.c return &sta_priv->lq_sta; lq_sta 2782 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_lq_sta *lq_sta; lq_sta 2787 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta = &sta_priv->lq_sta; lq_sta 2791 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->lq.sta_id = sta_id; lq_sta 2795 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_rate_scale_clear_window(&lq_sta->lq_info[j].win[i]); lq_sta 2797 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->flush_timer = 0; lq_sta 2798 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->supp_rates = sta->supp_rates[sband->band]; lq_sta 2807 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->is_dup = 0; lq_sta 2808 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->max_rate_idx = -1; lq_sta 2809 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->missed_rate_counter = IWL_MISSED_RATE_MAX; lq_sta 2810 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->is_green = rs_use_green(sta); lq_sta 2811 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->band = sband->band; lq_sta 2816 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->active_legacy_rate = 0; lq_sta 2818 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->active_legacy_rate |= BIT(sband->bitrates[i].hw_value); lq_sta 2824 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->active_siso_rate = ht_cap->mcs.rx_mask[0] << 1; lq_sta 2825 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->active_siso_rate |= ht_cap->mcs.rx_mask[0] & 0x1; lq_sta 2826 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->active_siso_rate &= ~((u16)0x2); lq_sta 2827 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->active_siso_rate <<= IWL_FIRST_OFDM_RATE; lq_sta 2830 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->active_mimo2_rate = ht_cap->mcs.rx_mask[1] << 1; lq_sta 2831 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->active_mimo2_rate |= ht_cap->mcs.rx_mask[1] & 0x1; lq_sta 2832 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->active_mimo2_rate &= ~((u16)0x2); lq_sta 2833 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->active_mimo2_rate <<= IWL_FIRST_OFDM_RATE; lq_sta 2835 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->active_mimo3_rate = ht_cap->mcs.rx_mask[2] << 1; lq_sta 2836 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->active_mimo3_rate |= ht_cap->mcs.rx_mask[2] & 0x1; lq_sta 2837 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->active_mimo3_rate &= ~((u16)0x2); lq_sta 2838 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->active_mimo3_rate <<= IWL_FIRST_OFDM_RATE; lq_sta 2841 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->active_siso_rate, lq_sta 2842 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->active_mimo2_rate, lq_sta 2843 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->active_mimo3_rate); lq_sta 2846 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->lq.general_params.single_stream_ant_msk = lq_sta 2848 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->lq.general_params.dual_stream_ant_msk = lq_sta 2851 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (!lq_sta->lq.general_params.dual_stream_ant_msk) { lq_sta 2852 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->lq.general_params.dual_stream_ant_msk = ANT_AB; lq_sta 2854 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->lq.general_params.dual_stream_ant_msk = lq_sta 2859 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->tx_agg_tid_en = IWL_AGG_ALL_TID; lq_sta 2860 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->drv = priv; lq_sta 2863 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->last_txrate_idx = rate_lowest_index(sband, sta); lq_sta 2865 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->last_txrate_idx += IWL_FIRST_OFDM_RATE; lq_sta 2866 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->is_agg = 0; lq_sta 2868 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->dbg_fixed_rate = 0; lq_sta 2871 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_initialize_lq(priv, sta, lq_sta); lq_sta 2875 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_lq_sta *lq_sta, u32 new_rate) lq_sta 2885 drivers/net/wireless/intel/iwlwifi/dvm/rs.c container_of(lq_sta, struct iwl_station_priv, lq_sta); lq_sta 2886 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_link_quality_cmd *lq_cmd = &lq_sta->lq; lq_sta 2889 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_dbgfs_set_mcs(lq_sta, &new_rate, index); lq_sta 2892 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_get_tbl_info_from_mcs(new_rate, lq_sta->band, lq_sta 2949 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_dbgfs_set_mcs(lq_sta, &new_rate, index); lq_sta 2958 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_get_tbl_info_from_mcs(new_rate, lq_sta->band, &tbl_type, lq_sta 2974 drivers/net/wireless/intel/iwlwifi/dvm/rs.c new_rate = rs_get_lower_rate(lq_sta, &tbl_type, rate_idx, lq_sta 2996 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_dbgfs_set_mcs(lq_sta, &new_rate, index); lq_sta 3043 drivers/net/wireless/intel/iwlwifi/dvm/rs.c static void rs_dbgfs_set_mcs(struct iwl_lq_sta *lq_sta, lq_sta 3050 drivers/net/wireless/intel/iwlwifi/dvm/rs.c priv = lq_sta->drv; lq_sta 3052 drivers/net/wireless/intel/iwlwifi/dvm/rs.c if (lq_sta->dbg_fixed_rate) { lq_sta 3054 drivers/net/wireless/intel/iwlwifi/dvm/rs.c ((lq_sta->dbg_fixed_rate & RATE_MCS_ANT_ABC_MSK) lq_sta 3057 drivers/net/wireless/intel/iwlwifi/dvm/rs.c *rate_n_flags = lq_sta->dbg_fixed_rate; lq_sta 3060 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->dbg_fixed_rate = 0; lq_sta 3074 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_lq_sta *lq_sta = file->private_data; lq_sta 3081 drivers/net/wireless/intel/iwlwifi/dvm/rs.c priv = lq_sta->drv; lq_sta 3088 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->dbg_fixed_rate = parsed_rate; lq_sta 3090 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->dbg_fixed_rate = 0; lq_sta 3092 drivers/net/wireless/intel/iwlwifi/dvm/rs.c rs_program_fix_rate(priv, lq_sta); lq_sta 3106 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_lq_sta *lq_sta = file->private_data; lq_sta 3108 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_scale_tbl_info *tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); lq_sta 3110 drivers/net/wireless/intel/iwlwifi/dvm/rs.c priv = lq_sta->drv; lq_sta 3115 drivers/net/wireless/intel/iwlwifi/dvm/rs.c desc += sprintf(buff+desc, "sta_id %d\n", lq_sta->lq.sta_id); lq_sta 3117 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->total_failed, lq_sta->total_success, lq_sta 3118 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->active_legacy_rate); lq_sta 3120 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->dbg_fixed_rate); lq_sta 3135 drivers/net/wireless/intel/iwlwifi/dvm/rs.c (lq_sta->is_green) ? "GF enabled" : "", lq_sta 3136 drivers/net/wireless/intel/iwlwifi/dvm/rs.c (lq_sta->is_agg) ? "AGG on" : ""); lq_sta 3139 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->last_rate_n_flags); lq_sta 3142 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->lq.general_params.flags, lq_sta 3143 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->lq.general_params.mimo_delimiter, lq_sta 3144 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->lq.general_params.single_stream_ant_msk, lq_sta 3145 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->lq.general_params.dual_stream_ant_msk); lq_sta 3149 drivers/net/wireless/intel/iwlwifi/dvm/rs.c le16_to_cpu(lq_sta->lq.agg_params.agg_time_limit), lq_sta 3150 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->lq.agg_params.agg_dis_start_th, lq_sta 3151 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->lq.agg_params.agg_frame_cnt_limit); lq_sta 3155 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->lq.general_params.start_rate_index[0], lq_sta 3156 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->lq.general_params.start_rate_index[1], lq_sta 3157 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->lq.general_params.start_rate_index[2], lq_sta 3158 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->lq.general_params.start_rate_index[3]); lq_sta 3162 drivers/net/wireless/intel/iwlwifi/dvm/rs.c le32_to_cpu(lq_sta->lq.rs_table[i].rate_n_flags)); lq_sta 3165 drivers/net/wireless/intel/iwlwifi/dvm/rs.c i, le32_to_cpu(lq_sta->lq.rs_table[i].rate_n_flags), lq_sta 3169 drivers/net/wireless/intel/iwlwifi/dvm/rs.c i, le32_to_cpu(lq_sta->lq.rs_table[i].rate_n_flags), lq_sta 3193 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_lq_sta *lq_sta = file->private_data; lq_sta 3203 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->active_tbl == i ? "*" : "x", lq_sta 3204 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->lq_info[i].lq_type, lq_sta 3205 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->lq_info[i].is_SGI, lq_sta 3206 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->lq_info[i].is_ht40, lq_sta 3207 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->lq_info[i].is_dup, lq_sta 3208 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->is_green, lq_sta 3209 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->lq_info[i].current_rate); lq_sta 3213 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->lq_info[i].win[j].counter, lq_sta 3214 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->lq_info[i].win[j].success_counter, lq_sta 3215 drivers/net/wireless/intel/iwlwifi/dvm/rs.c lq_sta->lq_info[i].win[j].success_ratio); lq_sta 3232 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_lq_sta *lq_sta = file->private_data; lq_sta 3233 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_scale_tbl_info *tbl = &lq_sta->lq_info[lq_sta->active_tbl]; lq_sta 3240 drivers/net/wireless/intel/iwlwifi/dvm/rs.c tbl->expected_tpt[lq_sta->last_txrate_idx]); lq_sta 3244 drivers/net/wireless/intel/iwlwifi/dvm/rs.c iwl_rates[lq_sta->last_txrate_idx].ieee >> 1); lq_sta 3258 drivers/net/wireless/intel/iwlwifi/dvm/rs.c struct iwl_lq_sta *lq_sta = priv_sta; lq_sta 3260 drivers/net/wireless/intel/iwlwifi/dvm/rs.c debugfs_create_file("rate_scale_table", 0600, dir, lq_sta, lq_sta 3262 drivers/net/wireless/intel/iwlwifi/dvm/rs.c debugfs_create_file("rate_stats_table", 0400, dir, lq_sta, lq_sta 3264 drivers/net/wireless/intel/iwlwifi/dvm/rs.c debugfs_create_file("rate_scale_data", 0400, dir, lq_sta, lq_sta 3267 drivers/net/wireless/intel/iwlwifi/dvm/rs.c &lq_sta->tx_agg_tid_en); lq_sta 728 drivers/net/wireless/intel/iwlwifi/dvm/tx.c sta_priv->lq_sta.lq.general_params.flags |= lq_sta 735 drivers/net/wireless/intel/iwlwifi/dvm/tx.c sta_priv->lq_sta.lq.agg_params.agg_frame_cnt_limit = lq_sta 742 drivers/net/wireless/intel/iwlwifi/dvm/tx.c &sta_priv->lq_sta.lq, CMD_ASYNC, false); lq_sta 431 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_lq_sta_rs_fw *lq_sta = &mvmsta->lq_sta.rs_fw; lq_sta 432 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c struct iwl_mvm *mvm = lq_sta->pers.drv; lq_sta 445 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c lq_sta->pers.sta_id); lq_sta 448 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c lq_sta->pers.dbg_fixed_rate); lq_sta 451 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c lq_sta->pers.dbg_agg_frame_count_lim); lq_sta 459 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c lq_sta->last_rate_n_flags); lq_sta 462 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c lq_sta->last_rate_n_flags); lq_sta 335 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c struct iwl_lq_sta_rs_fw *lq_sta; lq_sta 358 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c lq_sta = &mvmsta->lq_sta.rs_fw; lq_sta 361 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c lq_sta->last_rate_n_flags = le32_to_cpu(notif->rate); lq_sta 363 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c lq_sta->last_rate_n_flags); lq_sta 440 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c struct iwl_lq_sta_rs_fw *lq_sta = &mvmsta->lq_sta.rs_fw; lq_sta 456 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c memset(lq_sta, 0, offsetof(typeof(*lq_sta), pers)); lq_sta 485 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c struct iwl_lq_sta_rs_fw *lq_sta = &mvmsta->lq_sta.rs_fw; lq_sta 489 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c lq_sta->pers.drv = mvm; lq_sta 490 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c lq_sta->pers.sta_id = mvmsta->sta_id; lq_sta 491 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c lq_sta->pers.chains = 0; lq_sta 492 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c memset(lq_sta->pers.chain_signal, 0, sizeof(lq_sta->pers.chain_signal)); lq_sta 493 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c lq_sta->pers.last_rssi = S8_MIN; lq_sta 494 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c lq_sta->last_rate_n_flags = 0; lq_sta 497 drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c lq_sta->pers.dbg_fixed_rate = 0; lq_sta 382 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta, lq_sta 386 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta, lq_sta 388 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void rs_stay_in_table(struct iwl_lq_sta *lq_sta, bool force_search); lq_sta 628 drivers/net/wireless/intel/iwlwifi/mvm/rs.c u8 tid, struct iwl_lq_sta *lq_sta, lq_sta 648 drivers/net/wireless/intel/iwlwifi/mvm/rs.c (lq_sta->tx_agg_tid_en & BIT(tid)) && lq_sta 651 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (rs_tl_turn_on_agg_for_tid(mvm, lq_sta, tid, sta) == 0) lq_sta 747 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta, lq_sta 803 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct lq_sta_pers *pers = &mvmsta->lq_sta.rs_drv.pers; lq_sta 1000 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static u16 rs_get_supported_rates(struct iwl_lq_sta *lq_sta, lq_sta 1004 drivers/net/wireless/intel/iwlwifi/mvm/rs.c return lq_sta->active_legacy_rate; lq_sta 1006 drivers/net/wireless/intel/iwlwifi/mvm/rs.c return lq_sta->active_siso_rate; lq_sta 1008 drivers/net/wireless/intel/iwlwifi/mvm/rs.c return lq_sta->active_mimo2_rate; lq_sta 1070 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static inline bool rs_rate_supported(struct iwl_lq_sta *lq_sta, lq_sta 1073 drivers/net/wireless/intel/iwlwifi/mvm/rs.c return BIT(rate->index) & rs_get_supported_rates(lq_sta, rate); lq_sta 1079 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static bool rs_get_lower_rate_in_column(struct iwl_lq_sta *lq_sta, lq_sta 1085 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_mvm *mvm = lq_sta->pers.drv; lq_sta 1087 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rate_mask = rs_get_supported_rates(lq_sta, rate); lq_sta 1101 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void rs_get_lower_rate_down_column(struct iwl_lq_sta *lq_sta, lq_sta 1104 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_mvm *mvm = lq_sta->pers.drv; lq_sta 1111 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->band == NL80211_BAND_5GHZ) lq_sta 1135 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (!rs_rate_supported(lq_sta, rate)) lq_sta 1136 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_get_lower_rate_in_column(lq_sta, rate); lq_sta 1234 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta) lq_sta 1237 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->rs_state = RS_STATE_STAY_IN_COLUMN; lq_sta 1239 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->table_count_limit = IWL_MVM_RS_LEGACY_TABLE_COUNT; lq_sta 1240 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->max_failure_limit = IWL_MVM_RS_LEGACY_FAILURE_LIMIT; lq_sta 1241 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->max_success_limit = IWL_MVM_RS_LEGACY_SUCCESS_LIMIT; lq_sta 1243 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->table_count_limit = IWL_MVM_RS_NON_LEGACY_TABLE_COUNT; lq_sta 1244 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->max_failure_limit = IWL_MVM_RS_NON_LEGACY_FAILURE_LIMIT; lq_sta 1245 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->max_success_limit = IWL_MVM_RS_NON_LEGACY_SUCCESS_LIMIT; lq_sta 1247 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->table_count = 0; lq_sta 1248 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->total_failed = 0; lq_sta 1249 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->total_success = 0; lq_sta 1250 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->flush_timer = jiffies; lq_sta 1251 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->visited_columns = 0; lq_sta 1261 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static int rs_get_max_allowed_rate(struct iwl_lq_sta *lq_sta, lq_sta 1266 drivers/net/wireless/intel/iwlwifi/mvm/rs.c return lq_sta->max_legacy_rate_idx; lq_sta 1268 drivers/net/wireless/intel/iwlwifi/mvm/rs.c return lq_sta->max_siso_rate_idx; lq_sta 1270 drivers/net/wireless/intel/iwlwifi/mvm/rs.c return lq_sta->max_mimo2_rate_idx; lq_sta 1275 drivers/net/wireless/intel/iwlwifi/mvm/rs.c return lq_sta->max_legacy_rate_idx; lq_sta 1278 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static const u16 *rs_get_expected_tpt_table(struct iwl_lq_sta *lq_sta, lq_sta 1336 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (!column->sgi && !lq_sta->is_agg) /* Normal */ lq_sta 1338 drivers/net/wireless/intel/iwlwifi/mvm/rs.c else if (column->sgi && !lq_sta->is_agg) /* SGI */ lq_sta 1340 drivers/net/wireless/intel/iwlwifi/mvm/rs.c else if (!column->sgi && lq_sta->is_agg) /* AGG */ lq_sta 1346 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void rs_set_expected_tpt_table(struct iwl_lq_sta *lq_sta, lq_sta 1352 drivers/net/wireless/intel/iwlwifi/mvm/rs.c tbl->expected_tpt = rs_get_expected_tpt_table(lq_sta, column, rate->bw); lq_sta 1368 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta, lq_sta 1373 drivers/net/wireless/intel/iwlwifi/mvm/rs.c &(lq_sta->lq_info[lq_sta->active_tbl]); lq_sta 1387 drivers/net/wireless/intel/iwlwifi/mvm/rs.c target_tpt = lq_sta->last_tpt; lq_sta 1453 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static void rs_stay_in_table(struct iwl_lq_sta *lq_sta, bool force_search) lq_sta 1460 drivers/net/wireless/intel/iwlwifi/mvm/rs.c mvm = lq_sta->pers.drv; lq_sta 1461 drivers/net/wireless/intel/iwlwifi/mvm/rs.c active_tbl = lq_sta->active_tbl; lq_sta 1463 drivers/net/wireless/intel/iwlwifi/mvm/rs.c tbl = &(lq_sta->lq_info[active_tbl]); lq_sta 1466 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->rs_state == RS_STATE_STAY_IN_COLUMN) { lq_sta 1468 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->flush_timer) lq_sta 1471 drivers/net/wireless/intel/iwlwifi/mvm/rs.c (unsigned long)(lq_sta->flush_timer + lq_sta 1483 drivers/net/wireless/intel/iwlwifi/mvm/rs.c (lq_sta->total_failed > lq_sta->max_failure_limit) || lq_sta 1484 drivers/net/wireless/intel/iwlwifi/mvm/rs.c (lq_sta->total_success > lq_sta->max_success_limit) || lq_sta 1485 drivers/net/wireless/intel/iwlwifi/mvm/rs.c ((!lq_sta->search_better_tbl) && lq_sta 1486 drivers/net/wireless/intel/iwlwifi/mvm/rs.c (lq_sta->flush_timer) && (flush_interval_passed))) { lq_sta 1489 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->total_failed, lq_sta 1490 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->total_success, lq_sta 1494 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->rs_state = RS_STATE_SEARCH_CYCLE_STARTED; lq_sta 1497 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->total_failed = 0; lq_sta 1498 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->total_success = 0; lq_sta 1499 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->flush_timer = 0; lq_sta 1501 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->visited_columns = BIT(tbl->column); lq_sta 1509 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->table_count++; lq_sta 1510 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->table_count >= lq_sta 1511 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->table_count_limit) { lq_sta 1512 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->table_count = 0; lq_sta 1523 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->rs_state == RS_STATE_SEARCH_CYCLE_STARTED) { lq_sta 1573 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta, lq_sta 1576 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_fill_lq_cmd(mvm, sta, lq_sta, &tbl->rate); lq_sta 1577 drivers/net/wireless/intel/iwlwifi/mvm/rs.c iwl_mvm_send_lq_cmd(mvm, &lq_sta->lq); lq_sta 1582 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta, lq_sta 1620 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_set_expected_tpt_table(lq_sta, tbl); lq_sta 1626 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta, lq_sta 1645 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->visited_columns & BIT(next_col_id)) { lq_sta 1675 drivers/net/wireless/intel/iwlwifi/mvm/rs.c tpt = lq_sta->last_tpt / 100; lq_sta 1676 drivers/net/wireless/intel/iwlwifi/mvm/rs.c expected_tpt_tbl = rs_get_expected_tpt_table(lq_sta, next_col, lq_sta 1681 drivers/net/wireless/intel/iwlwifi/mvm/rs.c max_rate = rs_get_max_allowed_rate(lq_sta, next_col); lq_sta 1710 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta, lq_sta 1714 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_scale_tbl_info *tbl = &lq_sta->lq_info[lq_sta->active_tbl]; lq_sta 1716 drivers/net/wireless/intel/iwlwifi/mvm/rs.c &lq_sta->lq_info[rs_search_tbl(lq_sta->active_tbl)]; lq_sta 1729 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->band == NL80211_BAND_5GHZ) lq_sta 1736 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rate_mask = lq_sta->active_legacy_rate; lq_sta 1738 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rate->type = lq_sta->is_vht ? LQ_VHT_SISO : LQ_HT_SISO; lq_sta 1739 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rate_mask = lq_sta->active_siso_rate; lq_sta 1741 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rate->type = lq_sta->is_vht ? LQ_VHT_MIMO2 : LQ_HT_MIMO2; lq_sta 1742 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rate_mask = lq_sta->active_mimo2_rate; lq_sta 1749 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rate->ldpc = lq_sta->ldpc; lq_sta 1753 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_set_expected_tpt_table(lq_sta, search_tbl); lq_sta 1755 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->visited_columns |= BIT(col_id); lq_sta 1761 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rate_idx = rs_get_best_rate(mvm, lq_sta, search_tbl, lq_sta 1872 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta) lq_sta 1877 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (!lq_sta->stbc_capable) lq_sta 1999 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta, lq_sta 2010 drivers/net/wireless/intel/iwlwifi/mvm/rs.c u8 cur = lq_sta->lq.reduced_tpc; lq_sta 2016 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->pers.dbg_fixed_txp_reduction <= TPC_MAX_REDUCTION) { lq_sta 2018 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->pers.dbg_fixed_txp_reduction); lq_sta 2019 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->lq.reduced_tpc = lq_sta->pers.dbg_fixed_txp_reduction; lq_sta 2020 drivers/net/wireless/intel/iwlwifi/mvm/rs.c return cur != lq_sta->pers.dbg_fixed_txp_reduction; lq_sta 2035 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->lq.reduced_tpc = TPC_NO_REDUCTION; lq_sta 2071 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->lq.reduced_tpc = weak; lq_sta 2074 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->lq.reduced_tpc = strong; lq_sta 2077 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->lq.reduced_tpc = TPC_NO_REDUCTION; lq_sta 2091 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta, lq_sta 2110 drivers/net/wireless/intel/iwlwifi/mvm/rs.c u8 prev_agg = lq_sta->is_agg; lq_sta 2114 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->is_agg = !!mvmsta->agg_tids; lq_sta 2121 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (!lq_sta->search_better_tbl) lq_sta 2122 drivers/net/wireless/intel/iwlwifi/mvm/rs.c active_tbl = lq_sta->active_tbl; lq_sta 2124 drivers/net/wireless/intel/iwlwifi/mvm/rs.c active_tbl = rs_search_tbl(lq_sta->active_tbl); lq_sta 2126 drivers/net/wireless/intel/iwlwifi/mvm/rs.c tbl = &(lq_sta->lq_info[active_tbl]); lq_sta 2129 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (prev_agg != lq_sta->is_agg) { lq_sta 2132 drivers/net/wireless/intel/iwlwifi/mvm/rs.c prev_agg, lq_sta->is_agg); lq_sta 2133 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_set_expected_tpt_table(lq_sta, tbl); lq_sta 2141 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rate_mask = rs_get_supported_rates(lq_sta, rate); lq_sta 2145 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->search_better_tbl) { lq_sta 2148 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->search_better_tbl = 0; lq_sta 2149 drivers/net/wireless/intel/iwlwifi/mvm/rs.c tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); lq_sta 2150 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_update_rate_tbl(mvm, sta, lq_sta, tbl); lq_sta 2184 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_stay_in_table(lq_sta, false); lq_sta 2190 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->search_better_tbl) { lq_sta 2194 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (window->average_tpt > lq_sta->last_tpt) { lq_sta 2200 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->last_tpt); lq_sta 2203 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->active_tbl = active_tbl; lq_sta 2212 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->last_tpt); lq_sta 2218 drivers/net/wireless/intel/iwlwifi/mvm/rs.c active_tbl = lq_sta->active_tbl; lq_sta 2219 drivers/net/wireless/intel/iwlwifi/mvm/rs.c tbl = &(lq_sta->lq_info[active_tbl]); lq_sta 2223 drivers/net/wireless/intel/iwlwifi/mvm/rs.c current_tpt = lq_sta->last_tpt; lq_sta 2231 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->search_better_tbl = 0; lq_sta 2266 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_stay_in_table(lq_sta, true); lq_sta 2295 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->rs_state == RS_STATE_STAY_IN_COLUMN) lq_sta 2296 drivers/net/wireless/intel/iwlwifi/mvm/rs.c update_lq = rs_tpc_perform(mvm, sta, lq_sta, tbl); lq_sta 2307 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_tweak_rate_tbl(mvm, sta, lq_sta, tbl, scale_action); lq_sta 2309 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_update_rate_tbl(mvm, sta, lq_sta, tbl); lq_sta 2312 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_stay_in_table(lq_sta, false); lq_sta 2321 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->rs_state == RS_STATE_SEARCH_CYCLE_STARTED lq_sta 2326 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->last_tpt = current_tpt; lq_sta 2330 drivers/net/wireless/intel/iwlwifi/mvm/rs.c update_lq, done_search, lq_sta->rs_state, lq_sta 2333 drivers/net/wireless/intel/iwlwifi/mvm/rs.c next_column = rs_get_next_column(mvm, lq_sta, sta, tbl); lq_sta 2335 drivers/net/wireless/intel/iwlwifi/mvm/rs.c int ret = rs_switch_to_column(mvm, lq_sta, sta, lq_sta 2338 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->search_better_tbl = 1; lq_sta 2342 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->rs_state = RS_STATE_SEARCH_CYCLE_ENDED; lq_sta 2346 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->search_better_tbl) { lq_sta 2348 drivers/net/wireless/intel/iwlwifi/mvm/rs.c tbl = &lq_sta->lq_info[rs_search_tbl(lq_sta->active_tbl)]; lq_sta 2356 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_update_rate_tbl(mvm, sta, lq_sta, tbl); lq_sta 2363 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_tl_turn_on_agg(mvm, mvmsta, tid, lq_sta, sta); lq_sta 2365 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (done_search && lq_sta->rs_state == RS_STATE_SEARCH_CYCLE_ENDED) { lq_sta 2366 drivers/net/wireless/intel/iwlwifi/mvm/rs.c tbl1 = &(lq_sta->lq_info[lq_sta->active_tbl]); lq_sta 2367 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_set_stay_in_table(mvm, is_legacy(&tbl1->rate), lq_sta); lq_sta 2447 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta) lq_sta 2449 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct rs_rate *rate = &lq_sta->optimal_rate; lq_sta 2451 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->max_mimo2_rate_idx != IWL_RATE_INVALID) lq_sta 2452 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rate->type = lq_sta->is_vht ? LQ_VHT_MIMO2 : LQ_HT_MIMO2; lq_sta 2453 drivers/net/wireless/intel/iwlwifi/mvm/rs.c else if (lq_sta->max_siso_rate_idx != IWL_RATE_INVALID) lq_sta 2454 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rate->type = lq_sta->is_vht ? LQ_VHT_SISO : LQ_HT_SISO; lq_sta 2455 drivers/net/wireless/intel/iwlwifi/mvm/rs.c else if (lq_sta->band == NL80211_BAND_5GHZ) lq_sta 2466 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->optimal_rate_mask = lq_sta->active_mimo2_rate; lq_sta 2468 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->optimal_rate_mask = lq_sta->active_siso_rate; lq_sta 2470 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->optimal_rate_mask = lq_sta->active_legacy_rate; lq_sta 2472 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->band == NL80211_BAND_5GHZ) { lq_sta 2473 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->optimal_rates = rs_optimal_rates_5ghz_legacy; lq_sta 2474 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->optimal_nentries = lq_sta 2477 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->optimal_rates = rs_optimal_rates_24ghz_legacy; lq_sta 2478 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->optimal_nentries = lq_sta 2485 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->optimal_rates = rs_optimal_rates_vht_20mhz; lq_sta 2486 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->optimal_nentries = lq_sta 2489 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->optimal_rates = rs_optimal_rates_vht; lq_sta 2490 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->optimal_nentries = lq_sta 2494 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->optimal_rates = rs_optimal_rates_ht; lq_sta 2495 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->optimal_nentries = ARRAY_SIZE(rs_optimal_rates_ht); lq_sta 2501 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta) lq_sta 2503 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct rs_rate *rate = &lq_sta->optimal_rate; lq_sta 2506 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rate->index = find_first_bit(&lq_sta->optimal_rate_mask, lq_sta 2509 drivers/net/wireless/intel/iwlwifi/mvm/rs.c for (i = 0; i < lq_sta->optimal_nentries; i++) { lq_sta 2510 drivers/net/wireless/intel/iwlwifi/mvm/rs.c int rate_idx = lq_sta->optimal_rates[i].rate_idx; lq_sta 2512 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if ((lq_sta->pers.last_rssi >= lq_sta->optimal_rates[i].rssi) && lq_sta 2513 drivers/net/wireless/intel/iwlwifi/mvm/rs.c (BIT(rate_idx) & lq_sta->optimal_rate_mask)) { lq_sta 2527 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta, lq_sta 2539 drivers/net/wireless/intel/iwlwifi/mvm/rs.c for (i = 0; i < ARRAY_SIZE(lq_sta->pers.chain_signal); i++) { lq_sta 2540 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (!(lq_sta->pers.chains & BIT(i))) lq_sta 2543 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->pers.chain_signal[i] > best_rssi) { lq_sta 2544 drivers/net/wireless/intel/iwlwifi/mvm/rs.c best_rssi = lq_sta->pers.chain_signal[i]; lq_sta 2561 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rate->index = find_first_bit(&lq_sta->active_legacy_rate, lq_sta 2612 drivers/net/wireless/intel/iwlwifi/mvm/rs.c active_rate = lq_sta->active_siso_rate; lq_sta 2619 drivers/net/wireless/intel/iwlwifi/mvm/rs.c active_rate = lq_sta->active_siso_rate; lq_sta 2622 drivers/net/wireless/intel/iwlwifi/mvm/rs.c active_rate = lq_sta->active_legacy_rate; lq_sta 2644 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta = &mvmsta->lq_sta.rs_drv; lq_sta 2647 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->pers.chains = rx_status->chains; lq_sta 2648 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->pers.chain_signal[0] = rx_status->chain_signal[0]; lq_sta 2649 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->pers.chain_signal[1] = rx_status->chain_signal[1]; lq_sta 2650 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->pers.chain_signal[2] = rx_status->chain_signal[2]; lq_sta 2651 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->pers.last_rssi = S8_MIN; lq_sta 2653 drivers/net/wireless/intel/iwlwifi/mvm/rs.c for (i = 0; i < ARRAY_SIZE(lq_sta->pers.chain_signal); i++) { lq_sta 2654 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (!(lq_sta->pers.chains & BIT(i))) lq_sta 2657 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->pers.chain_signal[i] > lq_sta->pers.last_rssi) lq_sta 2658 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->pers.last_rssi = lq_sta->pers.chain_signal[i]; lq_sta 2678 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta, lq_sta 2685 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (!sta || !lq_sta) lq_sta 2688 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (!lq_sta->search_better_tbl) lq_sta 2689 drivers/net/wireless/intel/iwlwifi/mvm/rs.c active_tbl = lq_sta->active_tbl; lq_sta 2691 drivers/net/wireless/intel/iwlwifi/mvm/rs.c active_tbl = rs_search_tbl(lq_sta->active_tbl); lq_sta 2693 drivers/net/wireless/intel/iwlwifi/mvm/rs.c tbl = &(lq_sta->lq_info[active_tbl]); lq_sta 2696 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_get_initial_rate(mvm, sta, lq_sta, band, rate); lq_sta 2697 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_init_optimal_rate(mvm, sta, lq_sta); lq_sta 2701 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rate->ant, lq_sta->pers.chains, mvm->fw->valid_tx_ant, lq_sta 2706 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_set_expected_tpt_table(lq_sta, tbl); lq_sta 2707 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_fill_lq_cmd(mvm, sta, lq_sta, rate); lq_sta 2709 drivers/net/wireless/intel/iwlwifi/mvm/rs.c iwl_mvm_send_lq_cmd(mvm, &lq_sta->lq); lq_sta 2720 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta; lq_sta 2735 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta = mvm_sta; lq_sta 2736 drivers/net/wireless/intel/iwlwifi/mvm/rs.c iwl_mvm_hwrate_to_tx_rate(lq_sta->last_rate_n_flags, lq_sta 2743 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->rs_state != RS_STATE_STAY_IN_COLUMN) { lq_sta 2744 drivers/net/wireless/intel/iwlwifi/mvm/rs.c optimal_rate = rs_get_optimal_rate(mvm, lq_sta); lq_sta 2758 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta = &mvmsta->lq_sta.rs_drv; lq_sta 2762 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->pers.drv = mvm; lq_sta 2764 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->pers.dbg_fixed_rate = 0; lq_sta 2765 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->pers.dbg_fixed_txp_reduction = TPC_INVALID; lq_sta 2766 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->pers.ss_force = RS_SS_FORCE_NONE; lq_sta 2768 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->pers.chains = 0; lq_sta 2769 drivers/net/wireless/intel/iwlwifi/mvm/rs.c memset(lq_sta->pers.chain_signal, 0, sizeof(lq_sta->pers.chain_signal)); lq_sta 2770 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->pers.last_rssi = S8_MIN; lq_sta 2772 drivers/net/wireless/intel/iwlwifi/mvm/rs.c return lq_sta; lq_sta 2795 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta) lq_sta 2810 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->active_siso_rate |= BIT(i); lq_sta 2828 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->active_mimo2_rate |= BIT(i); lq_sta 2835 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta, lq_sta 2842 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->active_siso_rate = ht_cap->mcs.rx_mask[0] << 1; lq_sta 2843 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->active_siso_rate |= ht_cap->mcs.rx_mask[0] & 0x1; lq_sta 2844 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->active_siso_rate &= ~((u16)0x2); lq_sta 2845 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->active_siso_rate <<= IWL_FIRST_OFDM_RATE; lq_sta 2847 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->active_mimo2_rate = ht_cap->mcs.rx_mask[1] << 1; lq_sta 2848 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->active_mimo2_rate |= ht_cap->mcs.rx_mask[1] & 0x1; lq_sta 2849 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->active_mimo2_rate &= ~((u16)0x2); lq_sta 2850 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->active_mimo2_rate <<= IWL_FIRST_OFDM_RATE; lq_sta 2854 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->ldpc = true; lq_sta 2859 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->stbc_capable = true; lq_sta 2861 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->is_vht = false; lq_sta 2866 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta, lq_sta 2869 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_vht_set_enabled_rates(sta, vht_cap, lq_sta); lq_sta 2873 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->ldpc = true; lq_sta 2878 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->stbc_capable = true; lq_sta 2883 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->bfer_capable = true; lq_sta 2885 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->is_vht = true; lq_sta 2965 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta = &mvmsta->lq_sta.rs_drv; lq_sta 2969 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lockdep_assert_held(&mvmsta->lq_sta.rs_drv.pers.lock); lq_sta 2972 drivers/net/wireless/intel/iwlwifi/mvm/rs.c memset(lq_sta, 0, offsetof(typeof(*lq_sta), pers)); lq_sta 2976 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->lq.sta_id = mvmsta->sta_id; lq_sta 2981 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_rate_scale_clear_tbl_windows(mvm, &lq_sta->lq_info[j]); lq_sta 2983 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->flush_timer = 0; lq_sta 2984 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->last_tx = jiffies; lq_sta 2994 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->missed_rate_counter = IWL_MVM_RS_MISSED_RATE_MAX; lq_sta 2995 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->band = sband->band; lq_sta 3000 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->active_legacy_rate = 0; lq_sta 3002 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->active_legacy_rate |= BIT(sband->bitrates[i].hw_value); lq_sta 3006 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_ht_init(mvm, sta, lq_sta, ht_cap); lq_sta 3008 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_vht_init(mvm, sta, lq_sta, vht_cap); lq_sta 3010 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->max_legacy_rate_idx = lq_sta 3011 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_get_max_rate_from_mask(lq_sta->active_legacy_rate); lq_sta 3012 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->max_siso_rate_idx = lq_sta 3013 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_get_max_rate_from_mask(lq_sta->active_siso_rate); lq_sta 3014 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->max_mimo2_rate_idx = lq_sta 3015 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_get_max_rate_from_mask(lq_sta->active_mimo2_rate); lq_sta 3019 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->active_legacy_rate, lq_sta 3020 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->active_siso_rate, lq_sta 3021 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->active_mimo2_rate, lq_sta 3022 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->is_vht, lq_sta->ldpc, lq_sta->stbc_capable, lq_sta 3023 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->bfer_capable); lq_sta 3025 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->max_legacy_rate_idx, lq_sta 3026 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->max_siso_rate_idx, lq_sta 3027 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->max_mimo2_rate_idx); lq_sta 3030 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->lq.single_stream_ant_msk = lq_sta 3032 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->lq.dual_stream_ant_msk = ANT_AB; lq_sta 3035 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->tx_agg_tid_en = IWL_AGG_ALL_TID; lq_sta 3036 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->is_agg = 0; lq_sta 3040 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_initialize_lq(mvm, sta, lq_sta, band); lq_sta 3080 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta = &mvmsta->lq_sta.rs_drv; lq_sta 3082 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (!lq_sta->pers.drv) { lq_sta 3102 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->pers.dbg_fixed_rate) { lq_sta 3121 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->pers.tx_stats[column][index].total += attempts; lq_sta 3122 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->pers.tx_stats[column][index].success += success; lq_sta 3131 drivers/net/wireless/intel/iwlwifi/mvm/rs.c (unsigned long)(lq_sta->last_tx + lq_sta 3140 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->last_tx = jiffies; lq_sta 3149 drivers/net/wireless/intel/iwlwifi/mvm/rs.c table = &lq_sta->lq; lq_sta 3166 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->missed_rate_counter++; lq_sta 3167 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->missed_rate_counter > IWL_MVM_RS_MISSED_RATE_MAX) { lq_sta 3168 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->missed_rate_counter = 0; lq_sta 3171 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->rs_state); lq_sta 3172 drivers/net/wireless/intel/iwlwifi/mvm/rs.c iwl_mvm_send_lq_cmd(mvm, &lq_sta->lq); lq_sta 3179 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->missed_rate_counter = 0; lq_sta 3181 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (!lq_sta->search_better_tbl) { lq_sta 3182 drivers/net/wireless/intel/iwlwifi/mvm/rs.c curr_tbl = &lq_sta->lq_info[lq_sta->active_tbl]; lq_sta 3183 drivers/net/wireless/intel/iwlwifi/mvm/rs.c other_tbl = &lq_sta->lq_info[rs_search_tbl(lq_sta->active_tbl)]; lq_sta 3185 drivers/net/wireless/intel/iwlwifi/mvm/rs.c curr_tbl = &lq_sta->lq_info[rs_search_tbl(lq_sta->active_tbl)]; lq_sta 3186 drivers/net/wireless/intel/iwlwifi/mvm/rs.c other_tbl = &lq_sta->lq_info[lq_sta->active_tbl]; lq_sta 3192 drivers/net/wireless/intel/iwlwifi/mvm/rs.c tmp_tbl = &lq_sta->lq_info[lq_sta->active_tbl]; lq_sta 3194 drivers/net/wireless/intel/iwlwifi/mvm/rs.c tmp_tbl = &lq_sta->lq_info[rs_search_tbl(lq_sta->active_tbl)]; lq_sta 3201 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_stay_in_table(lq_sta, true); lq_sta 3212 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_collect_tpc_data(mvm, lq_sta, curr_tbl, tx_resp_rate.index, lq_sta 3239 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->rs_state == RS_STATE_STAY_IN_COLUMN) { lq_sta 3240 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->total_success += info->status.ampdu_ack_len; lq_sta 3241 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->total_failed += (info->status.ampdu_len - lq_sta 3272 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_collect_tpc_data(mvm, lq_sta, tmp_tbl, lq_sta 3282 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->rs_state == RS_STATE_STAY_IN_COLUMN) { lq_sta 3283 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->total_success += legacy_success; lq_sta 3284 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->total_failed += retries + (1 - legacy_success); lq_sta 3288 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->last_rate_n_flags = lq_hwrate; lq_sta 3293 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_rate_scale_perform(mvm, sta, lq_sta, tid, ndp); lq_sta 3304 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (!spin_trylock(&mvmsta->lq_sta.rs_drv.pers.lock)) lq_sta 3308 drivers/net/wireless/intel/iwlwifi/mvm/rs.c spin_unlock(&mvmsta->lq_sta.rs_drv.pers.lock); lq_sta 3350 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta, lq_sta 3373 drivers/net/wireless/intel/iwlwifi/mvm/rs.c bottom_reached = rs_get_lower_rate_in_column(lq_sta, rate); lq_sta 3406 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta, lq_sta 3412 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_cmd *lq_cmd = &lq_sta->lq; lq_sta 3422 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_stbc_allow(mvm, sta, lq_sta)) lq_sta 3437 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_fill_rates_for_column(mvm, lq_sta, &rate, lq_cmd->rs_table, &index, lq_sta 3441 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_get_lower_rate_down_column(lq_sta, &rate); lq_sta 3456 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_fill_rates_for_column(mvm, lq_sta, &rate, lq_cmd->rs_table, &index, lq_sta 3460 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_get_lower_rate_down_column(lq_sta, &rate); lq_sta 3465 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_fill_rates_for_column(mvm, lq_sta, &rate, lq_cmd->rs_table, &index, lq_sta 3484 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_cmd *lq_cmd = &mvmsta->lq_sta.rs_drv.lq; lq_sta 3538 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta, lq_sta 3541 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_cmd *lq_cmd = &lq_sta->lq; lq_sta 3557 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->pers.ss_force == RS_SS_FORCE_STBC) lq_sta 3559 drivers/net/wireless/intel/iwlwifi/mvm/rs.c else if (lq_sta->pers.ss_force == RS_SS_FORCE_BFER) lq_sta 3562 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->pers.ss_force != RS_SS_FORCE_NONE) { lq_sta 3564 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->pers.ss_force); lq_sta 3569 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->stbc_capable) lq_sta 3572 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (!lq_sta->bfer_capable) lq_sta 3597 drivers/net/wireless/intel/iwlwifi/mvm/rs.c &bfer_mvmsta->lq_sta.rs_drv.lq; lq_sta 3615 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta, lq_sta 3618 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_cmd *lq_cmd = &lq_sta->lq; lq_sta 3627 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->pers.dbg_fixed_rate) { lq_sta 3629 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->band, lq_sta 3630 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->pers.dbg_fixed_rate); lq_sta 3637 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_build_rates_table(mvm, sta, lq_sta, initial_rate); lq_sta 3640 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_set_lq_ss_params(mvm, sta, lq_sta, initial_rate); lq_sta 3757 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta) lq_sta 3759 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->active_legacy_rate = 0x0FFF; /* 1 - 54 MBits, includes CCK */ lq_sta 3760 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->active_siso_rate = 0x1FD0; /* 6 - 60 MBits, no 9, no CCK */ lq_sta 3761 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->active_mimo2_rate = 0x1FD0; /* 6 - 60 MBits, no 9, no CCK */ lq_sta 3764 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->lq.sta_id, lq_sta->pers.dbg_fixed_rate); lq_sta 3766 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->pers.dbg_fixed_rate) { lq_sta 3767 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_fill_lq_cmd(mvm, NULL, lq_sta, NULL); lq_sta 3768 drivers/net/wireless/intel/iwlwifi/mvm/rs.c iwl_mvm_send_lq_cmd(lq_sta->pers.drv, &lq_sta->lq); lq_sta 3775 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta = file->private_data; lq_sta 3781 drivers/net/wireless/intel/iwlwifi/mvm/rs.c mvm = lq_sta->pers.drv; lq_sta 3788 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->pers.dbg_fixed_rate = parsed_rate; lq_sta 3790 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->pers.dbg_fixed_rate = 0; lq_sta 3792 drivers/net/wireless/intel/iwlwifi/mvm/rs.c rs_program_fix_rate(mvm, lq_sta); lq_sta 3806 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta = file->private_data; lq_sta 3808 drivers/net/wireless/intel/iwlwifi/mvm/rs.c container_of(lq_sta, struct iwl_mvm_sta, lq_sta.rs_drv); lq_sta 3810 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_scale_tbl_info *tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); lq_sta 3814 drivers/net/wireless/intel/iwlwifi/mvm/rs.c mvm = lq_sta->pers.drv; lq_sta 3820 drivers/net/wireless/intel/iwlwifi/mvm/rs.c "sta_id %d\n", lq_sta->lq.sta_id); lq_sta 3823 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->total_failed, lq_sta->total_success, lq_sta 3824 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->active_legacy_rate); lq_sta 3826 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->pers.dbg_fixed_rate); lq_sta 3845 drivers/net/wireless/intel/iwlwifi/mvm/rs.c (lq_sta->is_agg) ? "AGG on" : "", lq_sta 3849 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->last_rate_n_flags); lq_sta 3852 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->lq.flags, lq_sta 3853 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->lq.mimo_delim, lq_sta 3854 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->lq.single_stream_ant_msk, lq_sta 3855 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->lq.dual_stream_ant_msk); lq_sta 3859 drivers/net/wireless/intel/iwlwifi/mvm/rs.c le16_to_cpu(lq_sta->lq.agg_time_limit), lq_sta 3860 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->lq.agg_disable_start_th, lq_sta 3861 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->lq.agg_frame_cnt_limit); lq_sta 3864 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->lq.reduced_tpc); lq_sta 3865 drivers/net/wireless/intel/iwlwifi/mvm/rs.c ss_params = le32_to_cpu(lq_sta->lq.ss_params); lq_sta 3878 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->lq.initial_rate_index[0], lq_sta 3879 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->lq.initial_rate_index[1], lq_sta 3880 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->lq.initial_rate_index[2], lq_sta 3881 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->lq.initial_rate_index[3]); lq_sta 3884 drivers/net/wireless/intel/iwlwifi/mvm/rs.c u32 r = le32_to_cpu(lq_sta->lq.rs_table[i]); lq_sta 3911 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta = file->private_data; lq_sta 3918 drivers/net/wireless/intel/iwlwifi/mvm/rs.c tbl = &(lq_sta->lq_info[i]); lq_sta 3923 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->active_tbl == i ? "*" : "x", lq_sta 3988 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta = file->private_data; lq_sta 4009 drivers/net/wireless/intel/iwlwifi/mvm/rs.c stats = &(lq_sta->pers.tx_stats[col][rate]); lq_sta 4027 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta = file->private_data; lq_sta 4028 drivers/net/wireless/intel/iwlwifi/mvm/rs.c memset(lq_sta->pers.tx_stats, 0, sizeof(lq_sta->pers.tx_stats)); lq_sta 4044 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta = file->private_data; lq_sta 4056 drivers/net/wireless/intel/iwlwifi/mvm/rs.c ss_force_name[lq_sta->pers.ss_force]); lq_sta 4060 drivers/net/wireless/intel/iwlwifi/mvm/rs.c static ssize_t iwl_dbgfs_ss_force_write(struct iwl_lq_sta *lq_sta, char *buf, lq_sta 4063 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_mvm *mvm = lq_sta->pers.drv; lq_sta 4067 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->pers.ss_force = RS_SS_FORCE_NONE; lq_sta 4069 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->pers.ss_force = RS_SS_FORCE_SISO; lq_sta 4071 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->stbc_capable) { lq_sta 4072 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->pers.ss_force = RS_SS_FORCE_STBC; lq_sta 4079 drivers/net/wireless/intel/iwlwifi/mvm/rs.c if (lq_sta->bfer_capable) { lq_sta 4080 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta->pers.ss_force = RS_SS_FORCE_BFER; lq_sta 4096 drivers/net/wireless/intel/iwlwifi/mvm/rs.c debugfs_create_file(#name, mode, parent, lq_sta, \ lq_sta 4105 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_sta *lq_sta = priv_sta; lq_sta 4108 drivers/net/wireless/intel/iwlwifi/mvm/rs.c mvmsta = container_of(lq_sta, struct iwl_mvm_sta, lq_sta.rs_drv); lq_sta 4114 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta, &rs_sta_dbgfs_scale_table_ops); lq_sta 4116 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta, &rs_sta_dbgfs_stats_table_ops); lq_sta 4118 drivers/net/wireless/intel/iwlwifi/mvm/rs.c lq_sta, &rs_sta_dbgfs_drv_tx_stats_ops); lq_sta 4120 drivers/net/wireless/intel/iwlwifi/mvm/rs.c &lq_sta->tx_agg_tid_en); lq_sta 4122 drivers/net/wireless/intel/iwlwifi/mvm/rs.c &lq_sta->pers.dbg_fixed_txp_reduction); lq_sta 4165 drivers/net/wireless/intel/iwlwifi/mvm/rs.c spin_lock(&mvmsta->lq_sta.rs_drv.pers.lock); lq_sta 4167 drivers/net/wireless/intel/iwlwifi/mvm/rs.c spin_unlock(&mvmsta->lq_sta.rs_drv.pers.lock); lq_sta 4184 drivers/net/wireless/intel/iwlwifi/mvm/rs.c struct iwl_lq_cmd *lq = &mvmsta->lq_sta.rs_drv.lq; lq_sta 1692 drivers/net/wireless/intel/iwlwifi/mvm/sta.c spin_lock_init(&mvm_sta->lq_sta.rs_drv.pers.lock); lq_sta 2984 drivers/net/wireless/intel/iwlwifi/mvm/sta.c mvmsta->lq_sta.rs_drv.lq.agg_frame_cnt_limit = mvmsta->max_agg_bufsize; lq_sta 2989 drivers/net/wireless/intel/iwlwifi/mvm/sta.c return iwl_mvm_send_lq_cmd(mvm, &mvmsta->lq_sta.rs_drv.lq); lq_sta 434 drivers/net/wireless/intel/iwlwifi/mvm/sta.h } lq_sta;