Lines Matching +full:data +full:- +full:width
1 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
3 * Copyright (C) 2024-2025 Intel Corporation
9 #include "fw/api/phy-ctxt.h"
14 unsigned long used = mld->used_phy_ids; in iwl_mld_allocate_fw_phy_id()
17 mld->used_phy_ids |= BIT(id); in iwl_mld_allocate_fw_phy_id()
21 return -ENOSPC; in iwl_mld_allocate_fw_phy_id()
34 if (vif->type != NL80211_IFTYPE_AP) in iwl_mld_chanctx_fils_enabled()
37 return cfg80211_channel_is_psc(ctx->def.chan) || in iwl_mld_chanctx_fils_enabled()
38 (ctx->def.chan->band == NL80211_BAND_6GHZ && in iwl_mld_chanctx_fils_enabled()
39 ctx->def.width >= NL80211_CHAN_WIDTH_80); in iwl_mld_chanctx_fils_enabled()
45 struct iwl_mld_chanctx_usage_data *data = _data; in iwl_mld_chanctx_usage_iter() local
50 if (rcu_access_pointer(link_conf->chanctx_conf) != data->ctx) in iwl_mld_chanctx_usage_iter()
53 if (vif->type == NL80211_IFTYPE_AP && link_conf->ftm_responder) in iwl_mld_chanctx_usage_iter()
54 data->use_def = true; in iwl_mld_chanctx_usage_iter()
56 if (iwl_mld_chanctx_fils_enabled(vif, data->ctx)) in iwl_mld_chanctx_usage_iter()
57 data->use_def = true; in iwl_mld_chanctx_usage_iter()
65 struct iwl_mld_chanctx_usage_data data = { in iwl_mld_get_chandef_from_chanctx() local
70 ieee80211_iterate_active_interfaces_mtx(mld->hw, in iwl_mld_get_chandef_from_chanctx()
73 &data); in iwl_mld_get_chandef_from_chanctx()
75 return data.use_def ? &ctx->def : &ctx->min_def; in iwl_mld_get_chandef_from_chanctx()
79 iwl_mld_nl80211_width_to_fw(enum nl80211_chan_width width) in iwl_mld_nl80211_width_to_fw() argument
81 switch (width) { in iwl_mld_nl80211_width_to_fw()
94 WARN(1, "Invalid channel width=%u", width); in iwl_mld_nl80211_width_to_fw()
104 int offs = chandef->chan->center_freq - chandef->center_freq1; in iwl_mld_get_fw_ctrl_pos()
110 * when in HT/VHT and the channel width is not 20MHz. Return in iwl_mld_get_fw_ctrl_pos()
116 /* this results in a value 0-7, i.e. fitting into 0b0111 */ in iwl_mld_get_fw_ctrl_pos()
117 ret = (abs_offs - 10) / 20; in iwl_mld_get_fw_ctrl_pos()
134 struct cfg80211_chan_def *chandef = &phy->chandef; in iwl_mld_phy_fw_action()
136 .id_and_color = cpu_to_le32(phy->fw_id), in iwl_mld_phy_fw_action()
138 .puncture_mask = cpu_to_le16(chandef->punctured), in iwl_mld_phy_fw_action()
140 .ci.channel = cpu_to_le32(chandef->chan->hw_value), in iwl_mld_phy_fw_action()
141 .ci.band = iwl_mld_nl80211_band_to_fw(chandef->chan->band), in iwl_mld_phy_fw_action()
142 .ci.width = iwl_mld_nl80211_width_to_fw(chandef->width), in iwl_mld_phy_fw_action()
147 if (ctx->ap.chan) { in iwl_mld_phy_fw_action()
149 iwl_mld_nl80211_width_to_fw(ctx->ap.width); in iwl_mld_phy_fw_action()
150 cmd.sbb_ctrl_channel_loc = iwl_mld_get_fw_ctrl_pos(&ctx->ap); in iwl_mld_phy_fw_action()
170 return mld->fw->phy_config & phy_config; in iwl_mld_get_phy_config()
176 &mld->fw->default_calib[IWL_UCODE_REGULAR]; in iwl_mld_send_phy_cfg_cmd()
179 .calib_control.event_trigger = default_calib->event_trigger, in iwl_mld_send_phy_cfg_cmd()
180 .calib_control.flow_trigger = default_calib->flow_trigger, in iwl_mld_send_phy_cfg_cmd()
181 .phy_specific_cfg = mld->fwrt.phy_filters, in iwl_mld_send_phy_cfg_cmd()
196 phy->chandef = *chandef; in iwl_mld_update_phy_chandef()