Lines Matching refs:tbl

404 il4965_get_expected_tpt(struct il_scale_tbl_info *tbl, int rs_idx)  in il4965_get_expected_tpt()  argument
406 if (tbl->expected_tpt) in il4965_get_expected_tpt()
407 return tbl->expected_tpt[rs_idx]; in il4965_get_expected_tpt()
419 il4965_rs_collect_tx_data(struct il_scale_tbl_info *tbl, int scale_idx, in il4965_rs_collect_tx_data() argument
430 win = &(tbl->win[scale_idx]); in il4965_rs_collect_tx_data()
433 tpt = il4965_get_expected_tpt(tbl, scale_idx); in il4965_rs_collect_tx_data()
497 il4965_rate_n_flags_from_tbl(struct il_priv *il, struct il_scale_tbl_info *tbl, in il4965_rate_n_flags_from_tbl() argument
502 if (is_legacy(tbl->lq_type)) { in il4965_rate_n_flags_from_tbl()
507 } else if (is_Ht(tbl->lq_type)) { in il4965_rate_n_flags_from_tbl()
514 if (is_siso(tbl->lq_type)) in il4965_rate_n_flags_from_tbl()
519 IL_ERR("Invalid tbl->lq_type %d\n", tbl->lq_type); in il4965_rate_n_flags_from_tbl()
523 ((tbl->ant_type << RATE_MCS_ANT_POS) & RATE_MCS_ANT_ABC_MSK); in il4965_rate_n_flags_from_tbl()
525 if (is_Ht(tbl->lq_type)) { in il4965_rate_n_flags_from_tbl()
526 if (tbl->is_ht40) { in il4965_rate_n_flags_from_tbl()
527 if (tbl->is_dup) in il4965_rate_n_flags_from_tbl()
532 if (tbl->is_SGI) in il4965_rate_n_flags_from_tbl()
537 if (is_siso(tbl->lq_type) && tbl->is_SGI) { in il4965_rate_n_flags_from_tbl()
553 struct il_scale_tbl_info *tbl, int *rate_idx) in il4965_rs_get_tbl_info_from_mcs() argument
560 memset(tbl, 0, sizeof(struct il_scale_tbl_info)); in il4965_rs_get_tbl_info_from_mcs()
567 tbl->is_SGI = 0; /* default legacy setup */ in il4965_rs_get_tbl_info_from_mcs()
568 tbl->is_ht40 = 0; in il4965_rs_get_tbl_info_from_mcs()
569 tbl->is_dup = 0; in il4965_rs_get_tbl_info_from_mcs()
570 tbl->ant_type = (ant_msk >> RATE_MCS_ANT_POS); in il4965_rs_get_tbl_info_from_mcs()
571 tbl->lq_type = LQ_NONE; in il4965_rs_get_tbl_info_from_mcs()
572 tbl->max_search = IL_MAX_SEARCH; in il4965_rs_get_tbl_info_from_mcs()
578 tbl->lq_type = LQ_A; in il4965_rs_get_tbl_info_from_mcs()
580 tbl->lq_type = LQ_G; in il4965_rs_get_tbl_info_from_mcs()
585 tbl->is_SGI = 1; in il4965_rs_get_tbl_info_from_mcs()
589 tbl->is_ht40 = 1; in il4965_rs_get_tbl_info_from_mcs()
592 tbl->is_dup = 1; in il4965_rs_get_tbl_info_from_mcs()
599 tbl->lq_type = LQ_SISO; /*else NONE */ in il4965_rs_get_tbl_info_from_mcs()
603 tbl->lq_type = LQ_MIMO2; in il4965_rs_get_tbl_info_from_mcs()
613 struct il_scale_tbl_info *tbl) in il4965_rs_toggle_antenna() argument
617 if (!tbl->ant_type || tbl->ant_type > ANT_ABC) in il4965_rs_toggle_antenna()
620 if (!il4965_rs_is_valid_ant(valid_ant, tbl->ant_type)) in il4965_rs_toggle_antenna()
623 new_ant_type = ant_toggle_lookup[tbl->ant_type]; in il4965_rs_toggle_antenna()
625 while (new_ant_type != tbl->ant_type && in il4965_rs_toggle_antenna()
629 if (new_ant_type == tbl->ant_type) in il4965_rs_toggle_antenna()
632 tbl->ant_type = new_ant_type; in il4965_rs_toggle_antenna()
730 struct il_scale_tbl_info *tbl, u8 scale_idx, in il4965_rs_get_lower_rate() argument
743 if (!is_legacy(tbl->lq_type) && (!ht_possible || !scale_idx)) { in il4965_rs_get_lower_rate()
747 tbl->lq_type = LQ_A; in il4965_rs_get_lower_rate()
749 tbl->lq_type = LQ_G; in il4965_rs_get_lower_rate()
751 if (il4965_num_of_ant(tbl->ant_type) > 1) in il4965_rs_get_lower_rate()
752 tbl->ant_type = in il4965_rs_get_lower_rate()
755 tbl->is_ht40 = 0; in il4965_rs_get_lower_rate()
756 tbl->is_SGI = 0; in il4965_rs_get_lower_rate()
757 tbl->max_search = IL_MAX_SEARCH; 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()
763 if (is_legacy(tbl->lq_type)) { in il4965_rs_get_lower_rate()
781 tbl->lq_type); 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()
1027 struct il_scale_tbl_info *tbl) in il4965_rs_set_expected_tpt_table() argument
1033 if (WARN_ON_ONCE(!is_legacy(tbl->lq_type) && !is_Ht(tbl->lq_type))) { in il4965_rs_set_expected_tpt_table()
1034 tbl->expected_tpt = expected_tpt_legacy; in il4965_rs_set_expected_tpt_table()
1039 if (is_legacy(tbl->lq_type)) { in il4965_rs_set_expected_tpt_table()
1040 tbl->expected_tpt = expected_tpt_legacy; in il4965_rs_set_expected_tpt_table()
1047 if (is_siso(tbl->lq_type) && (!tbl->is_ht40 || lq_sta->is_dup)) in il4965_rs_set_expected_tpt_table()
1049 else if (is_siso(tbl->lq_type)) 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()
1057 tbl->expected_tpt = ht_tbl_pointer[0]; 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()
1059 tbl->expected_tpt = ht_tbl_pointer[1]; 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()
1061 tbl->expected_tpt = ht_tbl_pointer[2]; in il4965_rs_set_expected_tpt_table()
1063 tbl->expected_tpt = ht_tbl_pointer[3]; in il4965_rs_set_expected_tpt_table()
1080 struct il_scale_tbl_info *tbl, /* "search" */ in il4965_rs_get_best_rate() argument
1090 s32 *tpt_tbl = tbl->expected_tpt; in il4965_rs_get_best_rate()
1101 tbl->lq_type); in il4965_rs_get_best_rate()
1176 struct il_scale_tbl_info *tbl, int idx) in il4965_rs_switch_to_mimo2() argument
1194 tbl->lq_type = LQ_MIMO2; in il4965_rs_switch_to_mimo2()
1195 tbl->is_dup = lq_sta->is_dup; in il4965_rs_switch_to_mimo2()
1196 tbl->action = 0; in il4965_rs_switch_to_mimo2()
1197 tbl->max_search = IL_MAX_SEARCH; in il4965_rs_switch_to_mimo2()
1201 tbl->is_ht40 = 1; in il4965_rs_switch_to_mimo2()
1203 tbl->is_ht40 = 0; 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()
1215 tbl->current_rate = in il4965_rs_switch_to_mimo2()
1216 il4965_rate_n_flags_from_tbl(il, tbl, rate, is_green); in il4965_rs_switch_to_mimo2()
1218 D_RATE("LQ: Switch to new mcs %X idx is green %X\n", tbl->current_rate, in il4965_rs_switch_to_mimo2()
1229 struct il_scale_tbl_info *tbl, int idx) in il4965_rs_switch_to_siso() argument
1240 tbl->is_dup = lq_sta->is_dup; in il4965_rs_switch_to_siso()
1241 tbl->lq_type = LQ_SISO; in il4965_rs_switch_to_siso()
1242 tbl->action = 0; in il4965_rs_switch_to_siso()
1243 tbl->max_search = IL_MAX_SEARCH; in il4965_rs_switch_to_siso()
1247 tbl->is_ht40 = 1; in il4965_rs_switch_to_siso()
1249 tbl->is_ht40 = 0; in il4965_rs_switch_to_siso()
1252 tbl->is_SGI = 0; /*11n spec: no SGI in SISO+Greenfield */ 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()
1263 tbl->current_rate = in il4965_rs_switch_to_siso()
1264 il4965_rate_n_flags_from_tbl(il, tbl, rate, is_green); in il4965_rs_switch_to_siso()
1265 D_RATE("LQ: Switch to new mcs %X idx is green %X\n", tbl->current_rate, in il4965_rs_switch_to_siso()
1278 struct il_scale_tbl_info *tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); in il4965_rs_move_legacy_other() local
1281 struct il_rate_scale_data *win = &(tbl->win[idx]); in il4965_rs_move_legacy_other()
1291 tbl->action = IL_LEGACY_SWITCH_SISO; in il4965_rs_move_legacy_other()
1293 start_action = tbl->action; in il4965_rs_move_legacy_other()
1296 switch (tbl->action) { in il4965_rs_move_legacy_other()
1301 if ((tbl->action == IL_LEGACY_SWITCH_ANTENNA1 && in il4965_rs_move_legacy_other()
1303 (tbl->action == IL_LEGACY_SWITCH_ANTENNA2 && in il4965_rs_move_legacy_other()
1312 memcpy(search_tbl, tbl, sz); in il4965_rs_move_legacy_other()
1327 memcpy(search_tbl, tbl, sz); in il4965_rs_move_legacy_other()
1344 memcpy(search_tbl, tbl, sz); in il4965_rs_move_legacy_other()
1347 if (tbl->action == IL_LEGACY_SWITCH_MIMO2_AB) in il4965_rs_move_legacy_other()
1349 else if (tbl->action == IL_LEGACY_SWITCH_MIMO2_AC) in il4965_rs_move_legacy_other()
1367 tbl->action++; in il4965_rs_move_legacy_other()
1368 if (tbl->action > IL_LEGACY_SWITCH_MIMO2_BC) in il4965_rs_move_legacy_other()
1369 tbl->action = IL_LEGACY_SWITCH_ANTENNA1; in il4965_rs_move_legacy_other()
1371 if (tbl->action == start_action) in il4965_rs_move_legacy_other()
1380 tbl->action++; in il4965_rs_move_legacy_other()
1381 if (tbl->action > IL_LEGACY_SWITCH_MIMO2_BC) in il4965_rs_move_legacy_other()
1382 tbl->action = IL_LEGACY_SWITCH_ANTENNA1; in il4965_rs_move_legacy_other()
1384 search_tbl->action = tbl->action; in il4965_rs_move_legacy_other()
1398 struct il_scale_tbl_info *tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); in il4965_rs_move_siso_to_other() local
1401 struct il_rate_scale_data *win = &(tbl->win[idx]); in il4965_rs_move_siso_to_other()
1412 start_action = tbl->action; in il4965_rs_move_siso_to_other()
1416 switch (tbl->action) { in il4965_rs_move_siso_to_other()
1420 if ((tbl->action == IL_SISO_SWITCH_ANTENNA1 && in il4965_rs_move_siso_to_other()
1422 (tbl->action == IL_SISO_SWITCH_ANTENNA2 && in il4965_rs_move_siso_to_other()
1429 memcpy(search_tbl, tbl, sz); in il4965_rs_move_siso_to_other()
1441 memcpy(search_tbl, tbl, sz); in il4965_rs_move_siso_to_other()
1444 if (tbl->action == IL_SISO_SWITCH_MIMO2_AB) in il4965_rs_move_siso_to_other()
1446 else if (tbl->action == IL_SISO_SWITCH_MIMO2_AC) in il4965_rs_move_siso_to_other()
1462 if (!tbl->is_ht40 && in il4965_rs_move_siso_to_other()
1465 if (tbl->is_ht40 && in il4965_rs_move_siso_to_other()
1471 memcpy(search_tbl, tbl, sz); in il4965_rs_move_siso_to_other()
1473 if (!tbl->is_SGI) in il4965_rs_move_siso_to_other()
1478 search_tbl->is_SGI = !tbl->is_SGI; in il4965_rs_move_siso_to_other()
1480 if (tbl->is_SGI) { in il4965_rs_move_siso_to_other()
1491 tbl->action++; in il4965_rs_move_siso_to_other()
1492 if (tbl->action > IL_SISO_SWITCH_GI) in il4965_rs_move_siso_to_other()
1493 tbl->action = IL_SISO_SWITCH_ANTENNA1; in il4965_rs_move_siso_to_other()
1495 if (tbl->action == start_action) in il4965_rs_move_siso_to_other()
1503 tbl->action++; in il4965_rs_move_siso_to_other()
1504 if (tbl->action > IL_SISO_SWITCH_GI) in il4965_rs_move_siso_to_other()
1505 tbl->action = IL_SISO_SWITCH_ANTENNA1; in il4965_rs_move_siso_to_other()
1507 search_tbl->action = tbl->action; in il4965_rs_move_siso_to_other()
1521 struct il_scale_tbl_info *tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); in il4965_rs_move_mimo2_to_other() local
1524 struct il_rate_scale_data *win = &(tbl->win[idx]); in il4965_rs_move_mimo2_to_other()
1535 start_action = tbl->action; in il4965_rs_move_mimo2_to_other()
1538 switch (tbl->action) { in il4965_rs_move_mimo2_to_other()
1549 memcpy(search_tbl, tbl, sz); in il4965_rs_move_mimo2_to_other()
1563 memcpy(search_tbl, tbl, sz); in il4965_rs_move_mimo2_to_other()
1565 if (tbl->action == IL_MIMO2_SWITCH_SISO_A) in il4965_rs_move_mimo2_to_other()
1567 else if (tbl->action == IL_MIMO2_SWITCH_SISO_B) in il4965_rs_move_mimo2_to_other()
1585 if (!tbl->is_ht40 && in il4965_rs_move_mimo2_to_other()
1588 if (tbl->is_ht40 && in il4965_rs_move_mimo2_to_other()
1595 memcpy(search_tbl, tbl, sz); in il4965_rs_move_mimo2_to_other()
1596 search_tbl->is_SGI = !tbl->is_SGI; in il4965_rs_move_mimo2_to_other()
1604 if (tbl->is_SGI) { in il4965_rs_move_mimo2_to_other()
1616 tbl->action++; in il4965_rs_move_mimo2_to_other()
1617 if (tbl->action > IL_MIMO2_SWITCH_GI) in il4965_rs_move_mimo2_to_other()
1618 tbl->action = IL_MIMO2_SWITCH_ANTENNA1; in il4965_rs_move_mimo2_to_other()
1620 if (tbl->action == start_action) in il4965_rs_move_mimo2_to_other()
1627 tbl->action++; in il4965_rs_move_mimo2_to_other()
1628 if (tbl->action > IL_MIMO2_SWITCH_GI) in il4965_rs_move_mimo2_to_other()
1629 tbl->action = IL_MIMO2_SWITCH_ANTENNA1; in il4965_rs_move_mimo2_to_other()
1631 search_tbl->action = tbl->action; in il4965_rs_move_mimo2_to_other()
1647 struct il_scale_tbl_info *tbl; in il4965_rs_stay_in_table() local
1656 tbl = &(lq_sta->lq_info[active_tbl]); in il4965_rs_stay_in_table()
1705 (tbl-> in il4965_rs_stay_in_table()
1716 il4965_rs_rate_scale_clear_win(&(tbl->win[i])); in il4965_rs_stay_in_table()
1726 struct il_scale_tbl_info *tbl, int idx, u8 is_green) in il4965_rs_update_rate_tbl() argument
1731 rate = il4965_rate_n_flags_from_tbl(il, tbl, idx, is_green); in il4965_rs_update_rate_tbl()
1760 struct il_scale_tbl_info *tbl, *tbl1; in il4965_rs_rate_scale_perform() local
1800 tbl = &(lq_sta->lq_info[active_tbl]); in il4965_rs_rate_scale_perform()
1801 if (is_legacy(tbl->lq_type)) in il4965_rs_rate_scale_perform()
1810 D_RATE("Rate scale idx %d for type %d\n", idx, tbl->lq_type); 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()
1818 if (is_legacy(tbl->lq_type)) { in il4965_rs_rate_scale_perform()
1838 tbl->lq_type = LQ_NONE; in il4965_rs_rate_scale_perform()
1840 tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); in il4965_rs_rate_scale_perform()
1842 idx = il4965_hwrate_to_plcp_idx(tbl->current_rate); in il4965_rs_rate_scale_perform()
1843 il4965_rs_update_rate_tbl(il, lq_sta, tbl, idx, in il4965_rs_rate_scale_perform()
1850 if (!tbl->expected_tpt) { in il4965_rs_rate_scale_perform()
1859 win = &(tbl->win[idx]); in il4965_rs_rate_scale_perform()
1863 win = &(tbl->win[idx]); in il4965_rs_rate_scale_perform()
1890 ((win->success_ratio * tbl->expected_tpt[idx] + 64) / 128)) { in il4965_rs_rate_scale_perform()
1893 ((win->success_ratio * tbl->expected_tpt[idx] + 64) / 128); in il4965_rs_rate_scale_perform()
1908 if (!is_legacy(tbl->lq_type)) in il4965_rs_rate_scale_perform()
1924 tbl->lq_type = LQ_NONE; in il4965_rs_rate_scale_perform()
1928 tbl = &(lq_sta->lq_info[active_tbl]); in il4965_rs_rate_scale_perform()
1931 idx = il4965_hwrate_to_plcp_idx(tbl->current_rate); in il4965_rs_rate_scale_perform()
1949 tbl->lq_type); in il4965_rs_rate_scale_perform()
1962 low_tpt = tbl->win[low].average_tpt; in il4965_rs_rate_scale_perform()
1964 high_tpt = tbl->win[high].average_tpt; in il4965_rs_rate_scale_perform()
2014 (sr > RATE_HIGH_TH || current_tpt > 100 * tbl->expected_tpt[low])) in il4965_rs_rate_scale_perform()
2041 idx, scale_action, low, high, tbl->lq_type); 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()
2064 if (is_legacy(tbl->lq_type)) in il4965_rs_rate_scale_perform()
2066 else if (is_siso(tbl->lq_type)) in il4965_rs_rate_scale_perform()
2076 tbl = &(lq_sta->lq_info[(1 - lq_sta->active_tbl)]); in il4965_rs_rate_scale_perform()
2078 il4965_rs_rate_scale_clear_win(&(tbl->win[i])); in il4965_rs_rate_scale_perform()
2081 idx = il4965_hwrate_to_plcp_idx(tbl->current_rate); in il4965_rs_rate_scale_perform()
2084 tbl->current_rate, idx); in il4965_rs_rate_scale_perform()
2085 il4965_rs_fill_link_cmd(il, lq_sta, tbl->current_rate); in il4965_rs_rate_scale_perform()
2126 tbl->current_rate = in il4965_rs_rate_scale_perform()
2127 il4965_rate_n_flags_from_tbl(il, tbl, idx, is_green); in il4965_rs_rate_scale_perform()
2150 struct il_scale_tbl_info *tbl; in il4965_rs_initialize_lq() local
2174 tbl = &(lq_sta->lq_info[active_tbl]); in il4965_rs_initialize_lq()
2180 tbl->ant_type = il4965_first_antenna(valid_tx_ant); in il4965_rs_initialize_lq()
2181 rate |= tbl->ant_type << RATE_MCS_ANT_POS; in il4965_rs_initialize_lq()
2186 il4965_rs_get_tbl_info_from_mcs(rate, il->band, tbl, &rate_idx); in il4965_rs_initialize_lq()
2187 if (!il4965_rs_is_valid_ant(valid_tx_ant, tbl->ant_type)) in il4965_rs_initialize_lq()
2188 il4965_rs_toggle_antenna(valid_tx_ant, &rate, tbl); in il4965_rs_initialize_lq()
2190 rate = il4965_rate_n_flags_from_tbl(il, tbl, rate_idx, use_green); in il4965_rs_initialize_lq()
2191 tbl->current_rate = rate; in il4965_rs_initialize_lq()
2192 il4965_rs_set_expected_tpt_table(lq_sta, tbl); in il4965_rs_initialize_lq()
2599 struct il_scale_tbl_info *tbl = &(lq_sta->lq_info[lq_sta->active_tbl]); in il4965_rs_sta_dbgfs_scale_table_read() local
2620 (is_legacy(tbl->lq_type)) ? "legacy" : "HT"); in il4965_rs_sta_dbgfs_scale_table_read()
2621 if (is_Ht(tbl->lq_type)) { in il4965_rs_sta_dbgfs_scale_table_read()
2624 (is_siso(tbl->lq_type)) ? "SISO" : "MIMO2"); in il4965_rs_sta_dbgfs_scale_table_read()
2627 (tbl->is_ht40) ? "40MHz" : "20MHz"); in il4965_rs_sta_dbgfs_scale_table_read()
2630 (tbl->is_SGI) ? "SGI" : "", in il4965_rs_sta_dbgfs_scale_table_read()
2666 if (is_legacy(tbl->lq_type)) { in il4965_rs_sta_dbgfs_scale_table_read()
2748 struct il_scale_tbl_info *tbl = &lq_sta->lq_info[lq_sta->active_tbl]; in il4965_rs_sta_dbgfs_rate_scale_data_read() local
2750 if (is_Ht(tbl->lq_type)) 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()