Lines Matching full:role

444 	struct rtw89_vif *role;  in rtw89_entity_recalc_mgnt_roles()  local
459 /* To be consistent with legacy behavior, expect the first active role in rtw89_entity_recalc_mgnt_roles()
463 list_for_each_entry(role, &mgnt->active_list, mgnt_entry) { in rtw89_entity_recalc_mgnt_roles()
464 for (i = 0; i < role->links_inst_valid_num; i++) { in rtw89_entity_recalc_mgnt_roles()
465 link = rtw89_vif_get_link_inst(role, i); in rtw89_entity_recalc_mgnt_roles()
472 list_del(&role->mgnt_entry); in rtw89_entity_recalc_mgnt_roles()
473 list_add(&role->mgnt_entry, &mgnt->active_list); in rtw89_entity_recalc_mgnt_roles()
480 list_for_each_entry(role, &mgnt->active_list, mgnt_entry) { in rtw89_entity_recalc_mgnt_roles()
488 for (i = 0; i < role->links_inst_valid_num; i++) { in rtw89_entity_recalc_mgnt_roles()
489 link = rtw89_vif_get_link_inst(role, i); in rtw89_entity_recalc_mgnt_roles()
497 mgnt->active_roles[pos++] = role; in rtw89_entity_recalc_mgnt_roles()
636 struct rtw89_mcc_role *role, u64 tsf) in rtw89_mcc_get_tbtt_ofst() argument
638 struct rtw89_vif_link *rtwvif_link = role->rtwvif_link; in rtw89_mcc_get_tbtt_ofst()
639 u32 bcn_intvl_us = ieee80211_tu_to_usec(role->beacon_interval); in rtw89_mcc_get_tbtt_ofst()
643 if (role->is_go) { in rtw89_mcc_get_tbtt_ofst()
857 "MCC role limit: mismatch interval: %d vs. %d\n", in rtw89_mcc_fill_role_limit()
878 "MCC role limit: hit boundary\n"); in rtw89_mcc_fill_role_limit()
884 "MCC role limit: insufficient duration\n"); in rtw89_mcc_fill_role_limit()
894 "MCC role limit: max_toa %d, max_tob %d, max_dur %d\n", in rtw89_mcc_fill_role_limit()
901 struct rtw89_mcc_role *role) in rtw89_mcc_fill_role() argument
906 memset(role, 0, sizeof(*role)); in rtw89_mcc_fill_role()
907 role->rtwvif_link = rtwvif_link; in rtw89_mcc_fill_role()
912 role->beacon_interval = bss_conf->beacon_int; in rtw89_mcc_fill_role()
916 if (!role->beacon_interval) { in rtw89_mcc_fill_role()
918 "cannot handle MCC role without beacon interval\n"); in rtw89_mcc_fill_role()
922 role->duration = role->beacon_interval / 2; in rtw89_mcc_fill_role()
925 role->is_2ghz = chan->band_type == RTW89_BAND_2G; in rtw89_mcc_fill_role()
926 role->is_go = rtwvif_link->wifi_role == RTW89_WIFI_ROLE_P2P_GO; in rtw89_mcc_fill_role()
927 role->is_gc = rtwvif_link->wifi_role == RTW89_WIFI_ROLE_P2P_CLIENT; in rtw89_mcc_fill_role()
929 rtw89_mcc_fill_role_macid_bitmap(rtwdev, role); in rtw89_mcc_fill_role()
930 rtw89_mcc_fill_role_policy(rtwdev, role); in rtw89_mcc_fill_role()
931 rtw89_mcc_fill_role_limit(rtwdev, role); in rtw89_mcc_fill_role()
934 "MCC role: bcn_intvl %d, is_2ghz %d, is_go %d, is_gc %d\n", in rtw89_mcc_fill_role()
935 role->beacon_interval, role->is_2ghz, role->is_go, role->is_gc); in rtw89_mcc_fill_role()
947 rtw89_debug(rtwdev, RTW89_DBG_CHAN, "MCC bt role: dur %d\n", in rtw89_mcc_fill_bt_role()
968 rtw89_warn(rtwdev, "cannot handle MCC without role[%d]\n", in rtw89_mcc_fill_role_iterator()
974 "MCC fill role[%d] with vif <macid %d>\n", in rtw89_mcc_fill_role_iterator()
1522 "MCC mod dur: chk role[%u]: dur %u, min %u, room %u\n", in rtw89_mcc_mod_dur_get_iterator()
1540 "MCC mod dur: set role[%u]: dur %u\n", in rtw89_mcc_mod_dur_put_iterator()
1651 "MCC one role is on 2GHz; modify another for BT duration\n"); in rtw89_mcc_duration_decision_on_bt()
1775 static int __mcc_fw_add_role(struct rtw89_dev *rtwdev, struct rtw89_mcc_role *role) in __mcc_fw_add_role() argument
1777 const struct rtw89_mcc_courtesy_cfg *crtz = role->crtz; in __mcc_fw_add_role()
1779 struct rtw89_mcc_policy *policy = &role->policy; in __mcc_fw_add_role()
1784 chan = rtw89_chan_get(rtwdev, role->rtwvif_link->chanctx_idx); in __mcc_fw_add_role()
1790 req.macid = role->rtwvif_link->mac_id; in __mcc_fw_add_role()
1798 req.duration = role->duration; in __mcc_fw_add_role()
1810 "MCC h2c failed to add wifi role: %d\n", ret); in __mcc_fw_add_role()
1815 role->rtwvif_link->mac_id, in __mcc_fw_add_role()
1816 role->macid_bitmap); in __mcc_fw_add_role()
1827 void __mrc_fw_add_role(struct rtw89_dev *rtwdev, struct rtw89_mcc_role *role, in __mrc_fw_add_role() argument
1832 struct rtw89_mcc_policy *policy = &role->policy; in __mrc_fw_add_role()
1837 role->slot_idx = slot_idx; in __mrc_fw_add_role()
1839 slot_arg->duration = role->duration; in __mrc_fw_add_role()
1842 chan = rtw89_chan_get(rtwdev, role->rtwvif_link->chanctx_idx); in __mrc_fw_add_role()
1845 slot_arg->roles[0].is_master = role == ref; in __mrc_fw_add_role()
1852 slot_arg->roles[0].macid = role->rtwvif_link->mac_id; in __mrc_fw_add_role()
1854 rtw89_mcc_role_fw_macid_bitmap_to_u32(role); in __mrc_fw_add_role()
1871 "MCC h2c failed to add bt role: %d\n", ret); in __mcc_fw_add_bt_role()
2015 NUM_OF_RTW89_MCC_ROLES + 1 /* bt role */); in __mrc_fw_start()
2275 static bool rtw89_mcc_ignore_bcn(struct rtw89_dev *rtwdev, struct rtw89_mcc_role *role) in rtw89_mcc_ignore_bcn() argument
2279 if (role->is_go) in rtw89_mcc_ignore_bcn()
2281 else if (chip_gen == RTW89_CHIP_BE && role->is_gc) in rtw89_mcc_ignore_bcn()
2510 struct rtw89_mcc_role **role = data; in rtw89_mcc_search_gc_iterator() local
2513 *role = mcc_role; in rtw89_mcc_search_gc_iterator()
2521 struct rtw89_mcc_role *role = NULL; in rtw89_mcc_get_gc_role() local
2526 rtw89_iterate_mcc_roles(rtwdev, rtw89_mcc_search_gc_iterator, &role); in rtw89_mcc_get_gc_role()
2528 return role; in rtw89_mcc_get_gc_role()
2567 struct rtw89_mcc_role *role; in rtw89_mcc_detect_go_bcn() local
2573 role = rtw89_mcc_get_gc_role(rtwdev); in rtw89_mcc_detect_go_bcn()
2574 if (!role) in rtw89_mcc_detect_go_bcn()
2577 if (role->rtwvif_link != rtwvif_link) in rtw89_mcc_detect_go_bcn()
2600 struct rtw89_mcc_role *role) in rtw89_mcc_detect_connection() argument
2606 ret = rtw89_core_send_nullfunc(rtwdev, role->rtwvif_link, true, false, in rtw89_mcc_detect_connection()
2609 role->probe_count++; in rtw89_mcc_detect_connection()
2611 role->probe_count = 0; in rtw89_mcc_detect_connection()
2613 if (role->probe_count < RTW89_MCC_PROBE_MAX_TRIES) in rtw89_mcc_detect_connection()
2617 "MCC <macid %d> can not detect AP/GO\n", role->rtwvif_link->mac_id); in rtw89_mcc_detect_connection()
2619 start_detect = rtw89_mcc_detect_go_bcn(rtwdev, role->rtwvif_link); in rtw89_mcc_detect_connection()
2623 vif = rtwvif_link_to_vif(role->rtwvif_link); in rtw89_mcc_detect_connection()