wifi: mac80211: allow disabling SMPS debugfs controls
There are cases in which we don't want the user to override the smps mode, e.g. when SMPS should be disabled due to EMLSR. Add a driver flag to disable SMPS overriding and don't override if it is set. Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Signed-off-by: Gregory Greenman <gregory.greenman@intel.com> Link: https://lore.kernel.org/r/20230608163202.ef129e80556c.I74a298fdc86b87074c95228d3916739de1400597@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
0e966d9a35
commit
bc1be54d7e
@ -1755,12 +1755,15 @@ struct ieee80211_channel_switch {
|
|||||||
* @IEEE80211_VIF_GET_NOA_UPDATE: request to handle NOA attributes
|
* @IEEE80211_VIF_GET_NOA_UPDATE: request to handle NOA attributes
|
||||||
* and send P2P_PS notification to the driver if NOA changed, even
|
* and send P2P_PS notification to the driver if NOA changed, even
|
||||||
* this is not pure P2P vif.
|
* this is not pure P2P vif.
|
||||||
|
* @IEEE80211_VIF_DISABLE_SMPS_OVERRIDE: disable user configuration of
|
||||||
|
* SMPS mode via debugfs.
|
||||||
*/
|
*/
|
||||||
enum ieee80211_vif_flags {
|
enum ieee80211_vif_flags {
|
||||||
IEEE80211_VIF_BEACON_FILTER = BIT(0),
|
IEEE80211_VIF_BEACON_FILTER = BIT(0),
|
||||||
IEEE80211_VIF_SUPPORTS_CQM_RSSI = BIT(1),
|
IEEE80211_VIF_SUPPORTS_CQM_RSSI = BIT(1),
|
||||||
IEEE80211_VIF_SUPPORTS_UAPSD = BIT(2),
|
IEEE80211_VIF_SUPPORTS_UAPSD = BIT(2),
|
||||||
IEEE80211_VIF_GET_NOA_UPDATE = BIT(3),
|
IEEE80211_VIF_GET_NOA_UPDATE = BIT(3),
|
||||||
|
IEEE80211_VIF_DISABLE_SMPS_OVERRIDE = BIT(4),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2006 Jiri Benc <jbenc@suse.cz>
|
* Copyright (c) 2006 Jiri Benc <jbenc@suse.cz>
|
||||||
* Copyright 2007 Johannes Berg <johannes@sipsolutions.net>
|
* Copyright 2007 Johannes Berg <johannes@sipsolutions.net>
|
||||||
* Copyright (C) 2020-2022 Intel Corporation
|
* Copyright (C) 2020-2023 Intel Corporation
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
@ -267,6 +267,9 @@ static int ieee80211_set_smps(struct ieee80211_link_data *link,
|
|||||||
struct ieee80211_local *local = sdata->local;
|
struct ieee80211_local *local = sdata->local;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
|
if (sdata->vif.driver_flags & IEEE80211_VIF_DISABLE_SMPS_OVERRIDE)
|
||||||
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
if (!(local->hw.wiphy->features & NL80211_FEATURE_STATIC_SMPS) &&
|
if (!(local->hw.wiphy->features & NL80211_FEATURE_STATIC_SMPS) &&
|
||||||
smps_mode == IEEE80211_SMPS_STATIC)
|
smps_mode == IEEE80211_SMPS_STATIC)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user