link.c (1d52e8ca4cba508011fb5a50b968116a2317642a) link.c (8ecdc570781d1664516323a52152493c856df215)
1// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
2/*
3 * Copyright (C) 2022 - 2024 Intel Corporation
4 */
5#include "mvm.h"
6#include "time-event.h"
7
8static u32 iwl_mvm_get_free_fw_link_id(struct iwl_mvm *mvm,

--- 713 unchanged lines hidden (view full) ---

722 new_active_links = BIT(data[a].link_id) |
723 BIT(data[b].link_id);
724 }
725
726 /* No valid pair was found, go with the best link */
727 if (hweight16(new_active_links) <= 1)
728 goto set_active;
729
1// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
2/*
3 * Copyright (C) 2022 - 2024 Intel Corporation
4 */
5#include "mvm.h"
6#include "time-event.h"
7
8static u32 iwl_mvm_get_free_fw_link_id(struct iwl_mvm *mvm,

--- 713 unchanged lines hidden (view full) ---

722 new_active_links = BIT(data[a].link_id) |
723 BIT(data[b].link_id);
724 }
725
726 /* No valid pair was found, go with the best link */
727 if (hweight16(new_active_links) <= 1)
728 goto set_active;
729
730 /* prefer single link over marginal eSR improvement */
731 if (best_link->grade * 110 / 100 >= max_esr_grade) {
730 /* For equal grade - prefer EMLSR */
731 if (best_link->grade > max_esr_grade) {
732 primary_link = best_link->link_id;
733 new_active_links = BIT(best_link->link_id);
734 }
735set_active:
736 IWL_DEBUG_INFO(mvm, "Link selection result: 0x%x. Primary = %d\n",
737 new_active_links, primary_link);
738 ieee80211_set_active_links_async(vif, new_active_links);
739 mvmvif->link_selection_res = new_active_links;

--- 230 unchanged lines hidden ---
732 primary_link = best_link->link_id;
733 new_active_links = BIT(best_link->link_id);
734 }
735set_active:
736 IWL_DEBUG_INFO(mvm, "Link selection result: 0x%x. Primary = %d\n",
737 new_active_links, primary_link);
738 ieee80211_set_active_links_async(vif, new_active_links);
739 mvmvif->link_selection_res = new_active_links;

--- 230 unchanged lines hidden ---