Lines Matching refs:lq_sta

144 					 struct il_lq_sta *lq_sta);
146 struct il_lq_sta *lq_sta, u32 rate_n_flags);
147 static void il4965_rs_stay_in_table(struct il_lq_sta *lq_sta,
151 static void il4965_rs_dbgfs_set_mcs(struct il_lq_sta *lq_sta,
155 il4965_rs_dbgfs_set_mcs(struct il_lq_sta *lq_sta, u32 * rate_n_flags, int idx) in il4965_rs_dbgfs_set_mcs() argument
657 il4965_rs_get_supported_rates(struct il_lq_sta *lq_sta, in il4965_rs_get_supported_rates() argument
662 return lq_sta->active_legacy_rate; in il4965_rs_get_supported_rates()
665 return lq_sta->active_siso_rate; in il4965_rs_get_supported_rates()
667 return lq_sta->active_mimo2_rate; in il4965_rs_get_supported_rates()
729 il4965_rs_get_lower_rate(struct il_lq_sta *lq_sta, in il4965_rs_get_lower_rate() argument
737 u8 is_green = lq_sta->is_green; in il4965_rs_get_lower_rate()
738 struct il_priv *il = lq_sta->drv; in il4965_rs_get_lower_rate()
746 if (lq_sta->band == IEEE80211_BAND_5GHZ) in il4965_rs_get_lower_rate()
760 rate_mask = il4965_rs_get_supported_rates(lq_sta, NULL, tbl->lq_type); in il4965_rs_get_lower_rate()
765 if (lq_sta->band == IEEE80211_BAND_5GHZ) in il4965_rs_get_lower_rate()
768 (lq_sta->supp_rates << IL_FIRST_OFDM_RATE)); in il4965_rs_get_lower_rate()
770 rate_mask = (u16) (rate_mask & lq_sta->supp_rates); in il4965_rs_get_lower_rate()
780 il4965_rs_get_adjacent_rate(lq_sta->drv, scale_idx, rate_mask, in il4965_rs_get_lower_rate()
788 return il4965_rate_n_flags_from_tbl(lq_sta->drv, tbl, low, is_green); in il4965_rs_get_lower_rate()
813 struct il_lq_sta *lq_sta = il_sta; in il4965_rs_tx_status() local
826 if (!lq_sta) { in il4965_rs_tx_status()
829 } else if (!lq_sta->drv) { in il4965_rs_tx_status()
851 table = &lq_sta->lq; in il4965_rs_tx_status()
886 lq_sta->missed_rate_counter++; in il4965_rs_tx_status()
887 if (lq_sta->missed_rate_counter > IL_MISSED_RATE_MAX) { in il4965_rs_tx_status()
888 lq_sta->missed_rate_counter = 0; in il4965_rs_tx_status()
889 il_send_lq_cmd(il, &lq_sta->lq, CMD_ASYNC, false); in il4965_rs_tx_status()
895 lq_sta->missed_rate_counter = 0; in il4965_rs_tx_status()
899 (&tbl_type, &(lq_sta->lq_info[lq_sta->active_tbl]))) { in il4965_rs_tx_status()
900 curr_tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); in il4965_rs_tx_status()
901 other_tbl = &(lq_sta->lq_info[1 - lq_sta->active_tbl]); in il4965_rs_tx_status()
904 (&tbl_type, &lq_sta->lq_info[1 - lq_sta->active_tbl])) { in il4965_rs_tx_status()
905 curr_tbl = &(lq_sta->lq_info[1 - lq_sta->active_tbl]); in il4965_rs_tx_status()
906 other_tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); in il4965_rs_tx_status()
909 tmp_tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); in il4965_rs_tx_status()
912 tmp_tbl = &(lq_sta->lq_info[1 - lq_sta->active_tbl]); in il4965_rs_tx_status()
921 il4965_rs_stay_in_table(lq_sta, true); in il4965_rs_tx_status()
941 if (lq_sta->stay_in_tbl) { in il4965_rs_tx_status()
942 lq_sta->total_success += info->status.ampdu_ack_len; in il4965_rs_tx_status()
943 lq_sta->total_failed += in il4965_rs_tx_status()
979 if (lq_sta->stay_in_tbl) { in il4965_rs_tx_status()
980 lq_sta->total_success += legacy_success; in il4965_rs_tx_status()
981 lq_sta->total_failed += retries + (1 - legacy_success); in il4965_rs_tx_status()
985 lq_sta->last_rate_n_flags = tx_rate; in il4965_rs_tx_status()
989 il4965_rs_rate_scale_perform(il, skb, sta, lq_sta); in il4965_rs_tx_status()
1002 struct il_lq_sta *lq_sta) in il4965_rs_set_stay_in_table() argument
1005 lq_sta->stay_in_tbl = 1; /* only place this gets set */ in il4965_rs_set_stay_in_table()
1007 lq_sta->table_count_limit = IL_LEGACY_TBL_COUNT; in il4965_rs_set_stay_in_table()
1008 lq_sta->max_failure_limit = IL_LEGACY_FAILURE_LIMIT; in il4965_rs_set_stay_in_table()
1009 lq_sta->max_success_limit = IL_LEGACY_SUCCESS_LIMIT; in il4965_rs_set_stay_in_table()
1011 lq_sta->table_count_limit = IL_NONE_LEGACY_TBL_COUNT; in il4965_rs_set_stay_in_table()
1012 lq_sta->max_failure_limit = IL_NONE_LEGACY_FAILURE_LIMIT; in il4965_rs_set_stay_in_table()
1013 lq_sta->max_success_limit = IL_NONE_LEGACY_SUCCESS_LIMIT; in il4965_rs_set_stay_in_table()
1015 lq_sta->table_count = 0; in il4965_rs_set_stay_in_table()
1016 lq_sta->total_failed = 0; in il4965_rs_set_stay_in_table()
1017 lq_sta->total_success = 0; in il4965_rs_set_stay_in_table()
1018 lq_sta->flush_timer = jiffies; in il4965_rs_set_stay_in_table()
1019 lq_sta->action_counter = 0; in il4965_rs_set_stay_in_table()
1026 il4965_rs_set_expected_tpt_table(struct il_lq_sta *lq_sta, in il4965_rs_set_expected_tpt_table() argument
1047 if (is_siso(tbl->lq_type) && (!tbl->is_ht40 || lq_sta->is_dup)) in il4965_rs_set_expected_tpt_table()
1051 else if (is_mimo2(tbl->lq_type) && (!tbl->is_ht40 || lq_sta->is_dup)) in il4965_rs_set_expected_tpt_table()
1056 if (!tbl->is_SGI && !lq_sta->is_agg) /* Normal */ in il4965_rs_set_expected_tpt_table()
1058 else if (tbl->is_SGI && !lq_sta->is_agg) /* SGI */ in il4965_rs_set_expected_tpt_table()
1060 else if (!tbl->is_SGI && lq_sta->is_agg) /* AGG */ in il4965_rs_set_expected_tpt_table()
1079 il4965_rs_get_best_rate(struct il_priv *il, struct il_lq_sta *lq_sta, in il4965_rs_get_best_rate() argument
1085 &(lq_sta->lq_info[lq_sta->active_tbl]); in il4965_rs_get_best_rate()
1121 if ((100 * tpt_tbl[rate] > lq_sta->last_tpt && in il4965_rs_get_best_rate()
1173 il4965_rs_switch_to_mimo2(struct il_priv *il, struct il_lq_sta *lq_sta, in il4965_rs_switch_to_mimo2() argument
1180 s8 is_green = lq_sta->is_green; in il4965_rs_switch_to_mimo2()
1195 tbl->is_dup = lq_sta->is_dup; in il4965_rs_switch_to_mimo2()
1198 rate_mask = lq_sta->active_mimo2_rate; in il4965_rs_switch_to_mimo2()
1205 il4965_rs_set_expected_tpt_table(lq_sta, tbl); in il4965_rs_switch_to_mimo2()
1207 rate = il4965_rs_get_best_rate(il, lq_sta, tbl, rate_mask, idx); in il4965_rs_switch_to_mimo2()
1227 il4965_rs_switch_to_siso(struct il_priv *il, struct il_lq_sta *lq_sta, in il4965_rs_switch_to_siso() argument
1232 u8 is_green = lq_sta->is_green; in il4965_rs_switch_to_siso()
1240 tbl->is_dup = lq_sta->is_dup; in il4965_rs_switch_to_siso()
1244 rate_mask = lq_sta->active_siso_rate; in il4965_rs_switch_to_siso()
1254 il4965_rs_set_expected_tpt_table(lq_sta, tbl); in il4965_rs_switch_to_siso()
1255 rate = il4965_rs_get_best_rate(il, lq_sta, tbl, rate_mask, idx); in il4965_rs_switch_to_siso()
1274 il4965_rs_move_legacy_other(struct il_priv *il, struct il_lq_sta *lq_sta, in il4965_rs_move_legacy_other() argument
1278 struct il_scale_tbl_info *tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); in il4965_rs_move_legacy_other()
1280 &(lq_sta->lq_info[(1 - lq_sta->active_tbl)]); in il4965_rs_move_legacy_other()
1295 lq_sta->action_counter++; in il4965_rs_move_legacy_other()
1318 il4965_rs_set_expected_tpt_table(lq_sta, in il4965_rs_move_legacy_other()
1330 il4965_rs_switch_to_siso(il, lq_sta, conf, sta, in il4965_rs_move_legacy_other()
1333 lq_sta->action_counter = 0; in il4965_rs_move_legacy_other()
1359 il4965_rs_switch_to_mimo2(il, lq_sta, conf, sta, in il4965_rs_move_legacy_other()
1362 lq_sta->action_counter = 0; in il4965_rs_move_legacy_other()
1379 lq_sta->search_better_tbl = 1; in il4965_rs_move_legacy_other()
1393 il4965_rs_move_siso_to_other(struct il_priv *il, struct il_lq_sta *lq_sta, in il4965_rs_move_siso_to_other() argument
1397 u8 is_green = lq_sta->is_green; in il4965_rs_move_siso_to_other()
1398 struct il_scale_tbl_info *tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); in il4965_rs_move_siso_to_other()
1400 &(lq_sta->lq_info[(1 - lq_sta->active_tbl)]); in il4965_rs_move_siso_to_other()
1415 lq_sta->action_counter++; in il4965_rs_move_siso_to_other()
1456 il4965_rs_switch_to_mimo2(il, lq_sta, conf, sta, in il4965_rs_move_siso_to_other()
1479 il4965_rs_set_expected_tpt_table(lq_sta, search_tbl); in il4965_rs_move_siso_to_other()
1481 s32 tpt = lq_sta->last_tpt / 100; in il4965_rs_move_siso_to_other()
1502 lq_sta->search_better_tbl = 1; in il4965_rs_move_siso_to_other()
1516 il4965_rs_move_mimo2_to_other(struct il_priv *il, struct il_lq_sta *lq_sta, in il4965_rs_move_mimo2_to_other() argument
1520 s8 is_green = lq_sta->is_green; in il4965_rs_move_mimo2_to_other()
1521 struct il_scale_tbl_info *tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); in il4965_rs_move_mimo2_to_other()
1523 &(lq_sta->lq_info[(1 - lq_sta->active_tbl)]); in il4965_rs_move_mimo2_to_other()
1537 lq_sta->action_counter++; in il4965_rs_move_mimo2_to_other()
1577 il4965_rs_switch_to_siso(il, lq_sta, conf, sta, in il4965_rs_move_mimo2_to_other()
1597 il4965_rs_set_expected_tpt_table(lq_sta, search_tbl); in il4965_rs_move_mimo2_to_other()
1605 s32 tpt = lq_sta->last_tpt / 100; in il4965_rs_move_mimo2_to_other()
1626 lq_sta->search_better_tbl = 1; in il4965_rs_move_mimo2_to_other()
1645 il4965_rs_stay_in_table(struct il_lq_sta *lq_sta, bool force_search) in il4965_rs_stay_in_table() argument
1653 il = lq_sta->drv; in il4965_rs_stay_in_table()
1654 active_tbl = lq_sta->active_tbl; in il4965_rs_stay_in_table()
1656 tbl = &(lq_sta->lq_info[active_tbl]); in il4965_rs_stay_in_table()
1659 if (lq_sta->stay_in_tbl) { in il4965_rs_stay_in_table()
1662 if (lq_sta->flush_timer) in il4965_rs_stay_in_table()
1665 (unsigned long)(lq_sta->flush_timer + in il4965_rs_stay_in_table()
1677 lq_sta->total_failed > lq_sta->max_failure_limit || in il4965_rs_stay_in_table()
1678 lq_sta->total_success > lq_sta->max_success_limit || in il4965_rs_stay_in_table()
1679 (!lq_sta->search_better_tbl && lq_sta->flush_timer && in il4965_rs_stay_in_table()
1682 lq_sta->total_failed, lq_sta->total_success, in il4965_rs_stay_in_table()
1686 lq_sta->stay_in_tbl = 0; /* only place reset */ in il4965_rs_stay_in_table()
1687 lq_sta->total_failed = 0; in il4965_rs_stay_in_table()
1688 lq_sta->total_success = 0; in il4965_rs_stay_in_table()
1689 lq_sta->flush_timer = 0; in il4965_rs_stay_in_table()
1698 lq_sta->table_count++; in il4965_rs_stay_in_table()
1699 if (lq_sta->table_count >= lq_sta->table_count_limit) { in il4965_rs_stay_in_table()
1700 lq_sta->table_count = 0; in il4965_rs_stay_in_table()
1714 if (!lq_sta->stay_in_tbl) { in il4965_rs_stay_in_table()
1725 il4965_rs_update_rate_tbl(struct il_priv *il, struct il_lq_sta *lq_sta, in il4965_rs_update_rate_tbl() argument
1732 il4965_rs_fill_link_cmd(il, lq_sta, rate); in il4965_rs_update_rate_tbl()
1733 il_send_lq_cmd(il, &lq_sta->lq, CMD_ASYNC, false); in il4965_rs_update_rate_tbl()
1742 struct il_lq_sta *lq_sta) in il4965_rs_rate_scale_perform() argument
1778 lq_sta->supp_rates = sta->supp_rates[lq_sta->band]; in il4965_rs_rate_scale_perform()
1780 tid = il4965_rs_tl_add_packet(lq_sta, hdr); in il4965_rs_rate_scale_perform()
1781 if (tid != MAX_TID_COUNT && (lq_sta->tx_agg_tid_en & (1 << tid))) { in il4965_rs_rate_scale_perform()
1782 tid_data = &il->stations[lq_sta->lq.sta_id].tid[tid]; in il4965_rs_rate_scale_perform()
1784 lq_sta->is_agg = 0; in il4965_rs_rate_scale_perform()
1786 lq_sta->is_agg = 1; in il4965_rs_rate_scale_perform()
1788 lq_sta->is_agg = 0; in il4965_rs_rate_scale_perform()
1795 if (!lq_sta->search_better_tbl) in il4965_rs_rate_scale_perform()
1796 active_tbl = lq_sta->active_tbl; in il4965_rs_rate_scale_perform()
1798 active_tbl = 1 - lq_sta->active_tbl; in il4965_rs_rate_scale_perform()
1800 tbl = &(lq_sta->lq_info[active_tbl]); in il4965_rs_rate_scale_perform()
1802 lq_sta->is_green = 0; in il4965_rs_rate_scale_perform()
1804 lq_sta->is_green = il4965_rs_use_green(il, sta); in il4965_rs_rate_scale_perform()
1805 is_green = lq_sta->is_green; in il4965_rs_rate_scale_perform()
1808 idx = lq_sta->last_txrate_idx; in il4965_rs_rate_scale_perform()
1813 rate_mask = il4965_rs_get_supported_rates(lq_sta, hdr, tbl->lq_type); in il4965_rs_rate_scale_perform()
1819 if (lq_sta->band == IEEE80211_BAND_5GHZ) in il4965_rs_rate_scale_perform()
1823 (lq_sta->supp_rates << IL_FIRST_OFDM_RATE)); in il4965_rs_rate_scale_perform()
1826 (u16) (rate_mask & lq_sta->supp_rates); in il4965_rs_rate_scale_perform()
1836 if (lq_sta->search_better_tbl) { in il4965_rs_rate_scale_perform()
1839 lq_sta->search_better_tbl = 0; in il4965_rs_rate_scale_perform()
1840 tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); in il4965_rs_rate_scale_perform()
1843 il4965_rs_update_rate_tbl(il, lq_sta, tbl, idx, in il4965_rs_rate_scale_perform()
1856 if (lq_sta->max_rate_idx != -1 && lq_sta->max_rate_idx < idx) { in il4965_rs_rate_scale_perform()
1857 idx = lq_sta->max_rate_idx; in il4965_rs_rate_scale_perform()
1883 il4965_rs_stay_in_table(lq_sta, false); in il4965_rs_rate_scale_perform()
1897 if (lq_sta->search_better_tbl) { in il4965_rs_rate_scale_perform()
1901 if (win->average_tpt > lq_sta->last_tpt) { in il4965_rs_rate_scale_perform()
1906 lq_sta->last_tpt); in il4965_rs_rate_scale_perform()
1909 lq_sta->enable_counter = 1; in il4965_rs_rate_scale_perform()
1912 lq_sta->active_tbl = active_tbl; in il4965_rs_rate_scale_perform()
1921 lq_sta->last_tpt); in il4965_rs_rate_scale_perform()
1927 active_tbl = lq_sta->active_tbl; in il4965_rs_rate_scale_perform()
1928 tbl = &(lq_sta->lq_info[active_tbl]); in il4965_rs_rate_scale_perform()
1932 current_tpt = lq_sta->last_tpt; in il4965_rs_rate_scale_perform()
1940 lq_sta->search_better_tbl = 0; in il4965_rs_rate_scale_perform()
1954 if (lq_sta->max_rate_idx != -1 && lq_sta->max_rate_idx < high) in il4965_rs_rate_scale_perform()
2046 il4965_rs_update_rate_tbl(il, lq_sta, tbl, idx, is_green); in il4965_rs_rate_scale_perform()
2050 il4965_rs_stay_in_table(lq_sta, false); in il4965_rs_rate_scale_perform()
2058 if (!update_lq && !done_search && !lq_sta->stay_in_tbl && win->counter) { in il4965_rs_rate_scale_perform()
2060 lq_sta->last_tpt = current_tpt; in il4965_rs_rate_scale_perform()
2065 il4965_rs_move_legacy_other(il, lq_sta, conf, sta, idx); in il4965_rs_rate_scale_perform()
2067 il4965_rs_move_siso_to_other(il, lq_sta, conf, sta, in il4965_rs_rate_scale_perform()
2070 il4965_rs_move_mimo2_to_other(il, lq_sta, conf, sta, in il4965_rs_rate_scale_perform()
2074 if (lq_sta->search_better_tbl) { in il4965_rs_rate_scale_perform()
2076 tbl = &(lq_sta->lq_info[(1 - lq_sta->active_tbl)]); in il4965_rs_rate_scale_perform()
2085 il4965_rs_fill_link_cmd(il, lq_sta, tbl->current_rate); in il4965_rs_rate_scale_perform()
2086 il_send_lq_cmd(il, &lq_sta->lq, CMD_ASYNC, false); in il4965_rs_rate_scale_perform()
2091 if (done_search && !lq_sta->stay_in_tbl) { in il4965_rs_rate_scale_perform()
2097 tbl1 = &(lq_sta->lq_info[lq_sta->active_tbl]); in il4965_rs_rate_scale_perform()
2099 lq_sta->action_counter > tbl1->max_search) { in il4965_rs_rate_scale_perform()
2101 il4965_rs_set_stay_in_table(il, 1, lq_sta); in il4965_rs_rate_scale_perform()
2107 if (lq_sta->enable_counter && in il4965_rs_rate_scale_perform()
2108 lq_sta->action_counter >= tbl1->max_search) { in il4965_rs_rate_scale_perform()
2109 if (lq_sta->last_tpt > IL_AGG_TPT_THREHOLD && in il4965_rs_rate_scale_perform()
2110 (lq_sta->tx_agg_tid_en & (1 << tid)) && in il4965_rs_rate_scale_perform()
2113 &il->stations[lq_sta->lq.sta_id].tid[tid]; in il4965_rs_rate_scale_perform()
2118 lq_sta, sta); in il4965_rs_rate_scale_perform()
2121 il4965_rs_set_stay_in_table(il, 0, lq_sta); in il4965_rs_rate_scale_perform()
2129 lq_sta->last_txrate_idx = i; in il4965_rs_rate_scale_perform()
2148 struct ieee80211_sta *sta, struct il_lq_sta *lq_sta) in il4965_rs_initialize_lq() argument
2159 if (!sta || !lq_sta) in il4965_rs_initialize_lq()
2165 i = lq_sta->last_txrate_idx; in il4965_rs_initialize_lq()
2169 if (!lq_sta->search_better_tbl) in il4965_rs_initialize_lq()
2170 active_tbl = lq_sta->active_tbl; in il4965_rs_initialize_lq()
2172 active_tbl = 1 - lq_sta->active_tbl; in il4965_rs_initialize_lq()
2174 tbl = &(lq_sta->lq_info[active_tbl]); in il4965_rs_initialize_lq()
2192 il4965_rs_set_expected_tpt_table(lq_sta, tbl); in il4965_rs_initialize_lq()
2193 il4965_rs_fill_link_cmd(NULL, lq_sta, rate); in il4965_rs_initialize_lq()
2194 il->stations[lq_sta->lq.sta_id].lq = &lq_sta->lq; in il4965_rs_initialize_lq()
2195 il_send_lq_cmd(il, &lq_sta->lq, CMD_SYNC, true); in il4965_rs_initialize_lq()
2207 struct il_lq_sta *lq_sta = il_sta; in il4965_rs_get_rate() local
2213 if (lq_sta) { in il4965_rs_get_rate()
2214 lq_sta->max_rate_idx = txrc->max_rate_idx; in il4965_rs_get_rate()
2216 lq_sta->max_rate_idx != -1) in il4965_rs_get_rate()
2217 lq_sta->max_rate_idx += IL_FIRST_OFDM_RATE; in il4965_rs_get_rate()
2218 if (lq_sta->max_rate_idx < 0 || in il4965_rs_get_rate()
2219 lq_sta->max_rate_idx >= RATE_COUNT) in il4965_rs_get_rate()
2220 lq_sta->max_rate_idx = -1; in il4965_rs_get_rate()
2224 if (lq_sta && !lq_sta->drv) { in il4965_rs_get_rate()
2233 if (!lq_sta) in il4965_rs_get_rate()
2236 rate_idx = lq_sta->last_txrate_idx; in il4965_rs_get_rate()
2238 if (lq_sta->last_rate_n_flags & RATE_MCS_HT_MSK) { in il4965_rs_get_rate()
2242 if (il4965_rs_extract_rate(lq_sta->last_rate_n_flags) >= in il4965_rs_get_rate()
2246 if (lq_sta->last_rate_n_flags & RATE_MCS_SGI_MSK) in il4965_rs_get_rate()
2249 if (lq_sta->last_rate_n_flags & RATE_MCS_DUP_MSK) in il4965_rs_get_rate()
2252 if (lq_sta->last_rate_n_flags & RATE_MCS_HT40_MSK) in il4965_rs_get_rate()
2255 if (lq_sta->last_rate_n_flags & RATE_MCS_GF_MSK) in il4965_rs_get_rate()
2283 return &sta_priv->lq_sta; in il4965_rs_alloc_sta()
2297 struct il_lq_sta *lq_sta; in il4965_rs_rate_init() local
2301 lq_sta = &sta_priv->lq_sta; in il4965_rs_rate_init()
2304 lq_sta->lq.sta_id = sta_id; in il4965_rs_rate_init()
2308 il4965_rs_rate_scale_clear_win(&lq_sta->lq_info[j]. in il4965_rs_rate_init()
2311 lq_sta->flush_timer = 0; in il4965_rs_rate_init()
2312 lq_sta->supp_rates = sta->supp_rates[sband->band]; in il4965_rs_rate_init()
2315 il4965_rs_rate_scale_clear_win(&lq_sta->lq_info[j]. in il4965_rs_rate_init()
2325 lq_sta->is_dup = 0; in il4965_rs_rate_init()
2326 lq_sta->max_rate_idx = -1; in il4965_rs_rate_init()
2327 lq_sta->missed_rate_counter = IL_MISSED_RATE_MAX; in il4965_rs_rate_init()
2328 lq_sta->is_green = il4965_rs_use_green(il, sta); in il4965_rs_rate_init()
2329 lq_sta->active_legacy_rate = il->active_rate & ~(0x1000); in il4965_rs_rate_init()
2330 lq_sta->band = il->band; in il4965_rs_rate_init()
2335 lq_sta->active_siso_rate = ht_cap->mcs.rx_mask[0] << 1; in il4965_rs_rate_init()
2336 lq_sta->active_siso_rate |= ht_cap->mcs.rx_mask[0] & 0x1; in il4965_rs_rate_init()
2337 lq_sta->active_siso_rate &= ~((u16) 0x2); in il4965_rs_rate_init()
2338 lq_sta->active_siso_rate <<= IL_FIRST_OFDM_RATE; in il4965_rs_rate_init()
2341 lq_sta->active_mimo2_rate = ht_cap->mcs.rx_mask[1] << 1; in il4965_rs_rate_init()
2342 lq_sta->active_mimo2_rate |= ht_cap->mcs.rx_mask[1] & 0x1; in il4965_rs_rate_init()
2343 lq_sta->active_mimo2_rate &= ~((u16) 0x2); in il4965_rs_rate_init()
2344 lq_sta->active_mimo2_rate <<= IL_FIRST_OFDM_RATE; in il4965_rs_rate_init()
2347 lq_sta->lq.general_params.single_stream_ant_msk = in il4965_rs_rate_init()
2349 lq_sta->lq.general_params.dual_stream_ant_msk = in il4965_rs_rate_init()
2352 if (!lq_sta->lq.general_params.dual_stream_ant_msk) { in il4965_rs_rate_init()
2353 lq_sta->lq.general_params.dual_stream_ant_msk = ANT_AB; in il4965_rs_rate_init()
2355 lq_sta->lq.general_params.dual_stream_ant_msk = in il4965_rs_rate_init()
2360 lq_sta->tx_agg_tid_en = IL_AGG_ALL_TID; in il4965_rs_rate_init()
2361 lq_sta->drv = il; in il4965_rs_rate_init()
2364 lq_sta->last_txrate_idx = rate_lowest_index(sband, sta); in il4965_rs_rate_init()
2366 lq_sta->last_txrate_idx += IL_FIRST_OFDM_RATE; in il4965_rs_rate_init()
2367 lq_sta->is_agg = 0; in il4965_rs_rate_init()
2370 lq_sta->dbg_fixed_rate = 0; in il4965_rs_rate_init()
2373 il4965_rs_initialize_lq(il, conf, sta, lq_sta); in il4965_rs_rate_init()
2377 il4965_rs_fill_link_cmd(struct il_priv *il, struct il_lq_sta *lq_sta, in il4965_rs_fill_link_cmd() argument
2387 struct il_link_quality_cmd *lq_cmd = &lq_sta->lq; in il4965_rs_fill_link_cmd()
2390 il4965_rs_dbgfs_set_mcs(lq_sta, &new_rate, idx); in il4965_rs_fill_link_cmd()
2393 il4965_rs_get_tbl_info_from_mcs(new_rate, lq_sta->band, &tbl_type, in il4965_rs_fill_link_cmd()
2439 il4965_rs_dbgfs_set_mcs(lq_sta, &new_rate, idx); in il4965_rs_fill_link_cmd()
2448 il4965_rs_get_tbl_info_from_mcs(new_rate, lq_sta->band, in il4965_rs_fill_link_cmd()
2459 il4965_rs_get_lower_rate(lq_sta, &tbl_type, rate_idx, in il4965_rs_fill_link_cmd()
2481 il4965_rs_dbgfs_set_mcs(lq_sta, &new_rate, idx); in il4965_rs_fill_link_cmd()
2522 il4965_rs_dbgfs_set_mcs(struct il_lq_sta *lq_sta, u32 * rate_n_flags, int idx) in il4965_rs_dbgfs_set_mcs() argument
2528 il = lq_sta->drv; in il4965_rs_dbgfs_set_mcs()
2530 if (lq_sta->dbg_fixed_rate) { in il4965_rs_dbgfs_set_mcs()
2532 ((lq_sta-> in il4965_rs_dbgfs_set_mcs()
2536 *rate_n_flags = lq_sta->dbg_fixed_rate; in il4965_rs_dbgfs_set_mcs()
2539 lq_sta->dbg_fixed_rate = 0; in il4965_rs_dbgfs_set_mcs()
2555 struct il_lq_sta *lq_sta = file->private_data; in il4965_rs_sta_dbgfs_scale_table_write() local
2561 il = lq_sta->drv; in il4965_rs_sta_dbgfs_scale_table_write()
2568 lq_sta->dbg_fixed_rate = parsed_rate; in il4965_rs_sta_dbgfs_scale_table_write()
2570 lq_sta->dbg_fixed_rate = 0; in il4965_rs_sta_dbgfs_scale_table_write()
2572 lq_sta->active_legacy_rate = 0x0FFF; /* 1 - 54 MBits, includes CCK */ in il4965_rs_sta_dbgfs_scale_table_write()
2573 lq_sta->active_siso_rate = 0x1FD0; /* 6 - 60 MBits, no 9, no CCK */ in il4965_rs_sta_dbgfs_scale_table_write()
2574 lq_sta->active_mimo2_rate = 0x1FD0; /* 6 - 60 MBits, no 9, no CCK */ in il4965_rs_sta_dbgfs_scale_table_write()
2576 D_RATE("sta_id %d rate 0x%X\n", lq_sta->lq.sta_id, in il4965_rs_sta_dbgfs_scale_table_write()
2577 lq_sta->dbg_fixed_rate); in il4965_rs_sta_dbgfs_scale_table_write()
2579 if (lq_sta->dbg_fixed_rate) { in il4965_rs_sta_dbgfs_scale_table_write()
2580 il4965_rs_fill_link_cmd(NULL, lq_sta, lq_sta->dbg_fixed_rate); in il4965_rs_sta_dbgfs_scale_table_write()
2581 il_send_lq_cmd(lq_sta->drv, &lq_sta->lq, CMD_ASYNC, false); in il4965_rs_sta_dbgfs_scale_table_write()
2597 struct il_lq_sta *lq_sta = file->private_data; in il4965_rs_sta_dbgfs_scale_table_read() local
2599 struct il_scale_tbl_info *tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); in il4965_rs_sta_dbgfs_scale_table_read()
2601 il = lq_sta->drv; in il4965_rs_sta_dbgfs_scale_table_read()
2606 desc += sprintf(buff + desc, "sta_id %d\n", lq_sta->lq.sta_id); in il4965_rs_sta_dbgfs_scale_table_read()
2609 lq_sta->total_failed, lq_sta->total_success, in il4965_rs_sta_dbgfs_scale_table_read()
2610 lq_sta->active_legacy_rate); in il4965_rs_sta_dbgfs_scale_table_read()
2612 sprintf(buff + desc, "fixed rate 0x%X\n", lq_sta->dbg_fixed_rate); in il4965_rs_sta_dbgfs_scale_table_read()
2631 (lq_sta->is_green) ? "GF enabled" : "", in il4965_rs_sta_dbgfs_scale_table_read()
2632 (lq_sta->is_agg) ? "AGG on" : ""); in il4965_rs_sta_dbgfs_scale_table_read()
2636 lq_sta->last_rate_n_flags); in il4965_rs_sta_dbgfs_scale_table_read()
2640 lq_sta->lq.general_params.flags, in il4965_rs_sta_dbgfs_scale_table_read()
2641 lq_sta->lq.general_params.mimo_delimiter, in il4965_rs_sta_dbgfs_scale_table_read()
2642 lq_sta->lq.general_params.single_stream_ant_msk, in il4965_rs_sta_dbgfs_scale_table_read()
2643 lq_sta->lq.general_params.dual_stream_ant_msk); in il4965_rs_sta_dbgfs_scale_table_read()
2649 le16_to_cpu(lq_sta->lq.agg_params.agg_time_limit), in il4965_rs_sta_dbgfs_scale_table_read()
2650 lq_sta->lq.agg_params.agg_dis_start_th, in il4965_rs_sta_dbgfs_scale_table_read()
2651 lq_sta->lq.agg_params.agg_frame_cnt_limit); in il4965_rs_sta_dbgfs_scale_table_read()
2656 lq_sta->lq.general_params.start_rate_idx[0], in il4965_rs_sta_dbgfs_scale_table_read()
2657 lq_sta->lq.general_params.start_rate_idx[1], in il4965_rs_sta_dbgfs_scale_table_read()
2658 lq_sta->lq.general_params.start_rate_idx[2], in il4965_rs_sta_dbgfs_scale_table_read()
2659 lq_sta->lq.general_params.start_rate_idx[3]); in il4965_rs_sta_dbgfs_scale_table_read()
2664 (lq_sta->lq.rs_table[i]. in il4965_rs_sta_dbgfs_scale_table_read()
2669 le32_to_cpu(lq_sta->lq.rs_table[i]. in il4965_rs_sta_dbgfs_scale_table_read()
2676 le32_to_cpu(lq_sta->lq.rs_table[i]. in il4965_rs_sta_dbgfs_scale_table_read()
2704 struct il_lq_sta *lq_sta = file->private_data; in il4965_rs_sta_dbgfs_stats_table_read() local
2714 "rate=0x%X\n", lq_sta->active_tbl == i ? "*" : "x", in il4965_rs_sta_dbgfs_stats_table_read()
2715 lq_sta->lq_info[i].lq_type, in il4965_rs_sta_dbgfs_stats_table_read()
2716 lq_sta->lq_info[i].is_SGI, in il4965_rs_sta_dbgfs_stats_table_read()
2717 lq_sta->lq_info[i].is_ht40, in il4965_rs_sta_dbgfs_stats_table_read()
2718 lq_sta->lq_info[i].is_dup, lq_sta->is_green, in il4965_rs_sta_dbgfs_stats_table_read()
2719 lq_sta->lq_info[i].current_rate); in il4965_rs_sta_dbgfs_stats_table_read()
2724 lq_sta->lq_info[i].win[j].counter, in il4965_rs_sta_dbgfs_stats_table_read()
2725 lq_sta->lq_info[i].win[j].success_counter, in il4965_rs_sta_dbgfs_stats_table_read()
2726 lq_sta->lq_info[i].win[j].success_ratio); in il4965_rs_sta_dbgfs_stats_table_read()
2747 struct il_lq_sta *lq_sta = file->private_data; in il4965_rs_sta_dbgfs_rate_scale_data_read() local
2748 struct il_scale_tbl_info *tbl = &lq_sta->lq_info[lq_sta->active_tbl]; in il4965_rs_sta_dbgfs_rate_scale_data_read()
2753 tbl->expected_tpt[lq_sta->last_txrate_idx]); in il4965_rs_sta_dbgfs_rate_scale_data_read()
2757 il_rates[lq_sta->last_txrate_idx].ieee >> 1); in il4965_rs_sta_dbgfs_rate_scale_data_read()
2771 struct il_lq_sta *lq_sta = il_sta; in il4965_rs_add_debugfs() local
2772 lq_sta->rs_sta_dbgfs_scale_table_file = in il4965_rs_add_debugfs()
2774 lq_sta, &rs_sta_dbgfs_scale_table_ops); in il4965_rs_add_debugfs()
2775 lq_sta->rs_sta_dbgfs_stats_table_file = in il4965_rs_add_debugfs()
2776 debugfs_create_file("rate_stats_table", S_IRUSR, dir, lq_sta, in il4965_rs_add_debugfs()
2778 lq_sta->rs_sta_dbgfs_rate_scale_data_file = in il4965_rs_add_debugfs()
2779 debugfs_create_file("rate_scale_data", S_IRUSR, dir, lq_sta, in il4965_rs_add_debugfs()
2781 lq_sta->rs_sta_dbgfs_tx_agg_tid_en_file = in il4965_rs_add_debugfs()
2783 &lq_sta->tx_agg_tid_en); in il4965_rs_add_debugfs()
2790 struct il_lq_sta *lq_sta = il_sta; in il4965_rs_remove_debugfs() local
2791 debugfs_remove(lq_sta->rs_sta_dbgfs_scale_table_file); in il4965_rs_remove_debugfs()
2792 debugfs_remove(lq_sta->rs_sta_dbgfs_stats_table_file); in il4965_rs_remove_debugfs()
2793 debugfs_remove(lq_sta->rs_sta_dbgfs_rate_scale_data_file); in il4965_rs_remove_debugfs()
2794 debugfs_remove(lq_sta->rs_sta_dbgfs_tx_agg_tid_en_file); in il4965_rs_remove_debugfs()