mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 16:44:58 +02:00
wifi: iwlwifi: mvm: make functions public
In the following patch, iwl_mvm_roc_duration_and_delay and iwl_mvm_roc_add_cmd will be called also from time-event.c. Move then there (where they more belong) and make then public. Signed-off-by: Shaul Triebitz <shaul.triebitz@intel.com> Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://msgid.link/20240201155157.3edafc4d59aa.Ic68e90758bcad9ae00e0aa602101842dac60e1a1@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
12e1a6a5b0
commit
5932ad8782
|
|
@ -4427,44 +4427,6 @@ static bool iwl_mvm_rx_aux_roc(struct iwl_notif_wait_data *notif_wait,
|
|||
return true;
|
||||
}
|
||||
|
||||
#define AUX_ROC_MIN_DURATION MSEC_TO_TU(100)
|
||||
#define AUX_ROC_MIN_DELAY MSEC_TO_TU(200)
|
||||
#define AUX_ROC_MAX_DELAY MSEC_TO_TU(600)
|
||||
#define AUX_ROC_SAFETY_BUFFER MSEC_TO_TU(20)
|
||||
#define AUX_ROC_MIN_SAFETY_BUFFER MSEC_TO_TU(10)
|
||||
|
||||
static void iwl_mvm_roc_duration_and_delay(struct ieee80211_vif *vif,
|
||||
u32 duration_ms,
|
||||
u32 *duration_tu,
|
||||
u32 *delay)
|
||||
{
|
||||
u32 dtim_interval = vif->bss_conf.dtim_period *
|
||||
vif->bss_conf.beacon_int;
|
||||
|
||||
*delay = AUX_ROC_MIN_DELAY;
|
||||
*duration_tu = MSEC_TO_TU(duration_ms);
|
||||
|
||||
/*
|
||||
* If we are associated we want the delay time to be at least one
|
||||
* dtim interval so that the FW can wait until after the DTIM and
|
||||
* then start the time event, this will potentially allow us to
|
||||
* remain off-channel for the max duration.
|
||||
* Since we want to use almost a whole dtim interval we would also
|
||||
* like the delay to be for 2-3 dtim intervals, in case there are
|
||||
* other time events with higher priority.
|
||||
*/
|
||||
if (vif->cfg.assoc) {
|
||||
*delay = min_t(u32, dtim_interval * 3, AUX_ROC_MAX_DELAY);
|
||||
/* We cannot remain off-channel longer than the DTIM interval */
|
||||
if (dtim_interval <= *duration_tu) {
|
||||
*duration_tu = dtim_interval - AUX_ROC_SAFETY_BUFFER;
|
||||
if (*duration_tu <= AUX_ROC_MIN_DURATION)
|
||||
*duration_tu = dtim_interval -
|
||||
AUX_ROC_MIN_SAFETY_BUFFER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static int iwl_mvm_send_aux_roc_cmd(struct iwl_mvm *mvm,
|
||||
struct ieee80211_channel *channel,
|
||||
struct ieee80211_vif *vif,
|
||||
|
|
@ -4562,48 +4524,6 @@ static int iwl_mvm_send_aux_roc_cmd(struct iwl_mvm *mvm,
|
|||
return res;
|
||||
}
|
||||
|
||||
static int iwl_mvm_roc_add_cmd(struct iwl_mvm *mvm,
|
||||
struct ieee80211_channel *channel,
|
||||
struct ieee80211_vif *vif,
|
||||
int duration, u32 activity)
|
||||
{
|
||||
int res;
|
||||
u32 duration_tu, delay;
|
||||
struct iwl_roc_req roc_req = {
|
||||
.action = cpu_to_le32(FW_CTXT_ACTION_ADD),
|
||||
.activity = cpu_to_le32(activity),
|
||||
.sta_id = cpu_to_le32(mvm->aux_sta.sta_id),
|
||||
};
|
||||
|
||||
lockdep_assert_held(&mvm->mutex);
|
||||
|
||||
/* Set the channel info data */
|
||||
iwl_mvm_set_chan_info(mvm, &roc_req.channel_info,
|
||||
channel->hw_value,
|
||||
iwl_mvm_phy_band_from_nl80211(channel->band),
|
||||
IWL_PHY_CHANNEL_MODE20, 0);
|
||||
|
||||
iwl_mvm_roc_duration_and_delay(vif, duration, &duration_tu,
|
||||
&delay);
|
||||
roc_req.duration = cpu_to_le32(duration_tu);
|
||||
roc_req.max_delay = cpu_to_le32(delay);
|
||||
|
||||
IWL_DEBUG_TE(mvm,
|
||||
"\t(requested = %ums, max_delay = %ums)\n",
|
||||
duration, delay);
|
||||
IWL_DEBUG_TE(mvm,
|
||||
"Requesting to remain on channel %u for %utu\n",
|
||||
channel->hw_value, duration_tu);
|
||||
|
||||
/* Set the node address */
|
||||
memcpy(roc_req.node_addr, vif->addr, ETH_ALEN);
|
||||
|
||||
res = iwl_mvm_send_cmd_pdu(mvm, WIDE_ID(MAC_CONF_GROUP, ROC_CMD),
|
||||
0, sizeof(roc_req), &roc_req);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
static int iwl_mvm_add_aux_sta_for_hs20(struct iwl_mvm *mvm, u32 lmac_id)
|
||||
{
|
||||
int ret = 0;
|
||||
|
|
|
|||
|
|
@ -2764,4 +2764,12 @@ iwl_mvm_chanctx_def(struct iwl_mvm *mvm, struct ieee80211_chanctx_conf *ctx)
|
|||
return use_def ? &ctx->def : &ctx->min_def;
|
||||
}
|
||||
|
||||
void iwl_mvm_roc_duration_and_delay(struct ieee80211_vif *vif,
|
||||
u32 duration_ms,
|
||||
u32 *duration_tu,
|
||||
u32 *delay);
|
||||
int iwl_mvm_roc_add_cmd(struct iwl_mvm *mvm,
|
||||
struct ieee80211_channel *channel,
|
||||
struct ieee80211_vif *vif,
|
||||
int duration, u32 activity);
|
||||
#endif /* __IWL_MVM_H__ */
|
||||
|
|
|
|||
|
|
@ -986,6 +986,86 @@ void iwl_mvm_rx_session_protect_notif(struct iwl_mvm *mvm,
|
|||
rcu_read_unlock();
|
||||
}
|
||||
|
||||
#define AUX_ROC_MIN_DURATION MSEC_TO_TU(100)
|
||||
#define AUX_ROC_MIN_DELAY MSEC_TO_TU(200)
|
||||
#define AUX_ROC_MAX_DELAY MSEC_TO_TU(600)
|
||||
#define AUX_ROC_SAFETY_BUFFER MSEC_TO_TU(20)
|
||||
#define AUX_ROC_MIN_SAFETY_BUFFER MSEC_TO_TU(10)
|
||||
|
||||
void iwl_mvm_roc_duration_and_delay(struct ieee80211_vif *vif,
|
||||
u32 duration_ms,
|
||||
u32 *duration_tu,
|
||||
u32 *delay)
|
||||
{
|
||||
u32 dtim_interval = vif->bss_conf.dtim_period *
|
||||
vif->bss_conf.beacon_int;
|
||||
|
||||
*delay = AUX_ROC_MIN_DELAY;
|
||||
*duration_tu = MSEC_TO_TU(duration_ms);
|
||||
|
||||
/*
|
||||
* If we are associated we want the delay time to be at least one
|
||||
* dtim interval so that the FW can wait until after the DTIM and
|
||||
* then start the time event, this will potentially allow us to
|
||||
* remain off-channel for the max duration.
|
||||
* Since we want to use almost a whole dtim interval we would also
|
||||
* like the delay to be for 2-3 dtim intervals, in case there are
|
||||
* other time events with higher priority.
|
||||
*/
|
||||
if (vif->cfg.assoc) {
|
||||
*delay = min_t(u32, dtim_interval * 3, AUX_ROC_MAX_DELAY);
|
||||
/* We cannot remain off-channel longer than the DTIM interval */
|
||||
if (dtim_interval <= *duration_tu) {
|
||||
*duration_tu = dtim_interval - AUX_ROC_SAFETY_BUFFER;
|
||||
if (*duration_tu <= AUX_ROC_MIN_DURATION)
|
||||
*duration_tu = dtim_interval -
|
||||
AUX_ROC_MIN_SAFETY_BUFFER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int iwl_mvm_roc_add_cmd(struct iwl_mvm *mvm,
|
||||
struct ieee80211_channel *channel,
|
||||
struct ieee80211_vif *vif,
|
||||
int duration, u32 activity)
|
||||
{
|
||||
int res;
|
||||
u32 duration_tu, delay;
|
||||
struct iwl_roc_req roc_req = {
|
||||
.action = cpu_to_le32(FW_CTXT_ACTION_ADD),
|
||||
.activity = cpu_to_le32(activity),
|
||||
.sta_id = cpu_to_le32(mvm->aux_sta.sta_id),
|
||||
};
|
||||
|
||||
lockdep_assert_held(&mvm->mutex);
|
||||
|
||||
/* Set the channel info data */
|
||||
iwl_mvm_set_chan_info(mvm, &roc_req.channel_info,
|
||||
channel->hw_value,
|
||||
iwl_mvm_phy_band_from_nl80211(channel->band),
|
||||
IWL_PHY_CHANNEL_MODE20, 0);
|
||||
|
||||
iwl_mvm_roc_duration_and_delay(vif, duration, &duration_tu,
|
||||
&delay);
|
||||
roc_req.duration = cpu_to_le32(duration_tu);
|
||||
roc_req.max_delay = cpu_to_le32(delay);
|
||||
|
||||
IWL_DEBUG_TE(mvm,
|
||||
"\t(requested = %ums, max_delay = %ums)\n",
|
||||
duration, delay);
|
||||
IWL_DEBUG_TE(mvm,
|
||||
"Requesting to remain on channel %u for %utu\n",
|
||||
channel->hw_value, duration_tu);
|
||||
|
||||
/* Set the node address */
|
||||
memcpy(roc_req.node_addr, vif->addr, ETH_ALEN);
|
||||
|
||||
res = iwl_mvm_send_cmd_pdu(mvm, WIDE_ID(MAC_CONF_GROUP, ROC_CMD),
|
||||
0, sizeof(roc_req), &roc_req);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
static int
|
||||
iwl_mvm_start_p2p_roc_session_protection(struct iwl_mvm *mvm,
|
||||
struct ieee80211_vif *vif,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user