diff options
author | Johannes Berg <johannes.berg@intel.com> | 2024-03-08 13:18:13 +0200 |
---|---|---|
committer | iwlwifi publisher <> | 2024-04-17 13:09:28 +0000 |
commit | e328e2b45335f6729765c12e80773707ce86235d (patch) | |
tree | 64a78ba6e976c6084ee9dae4cc78ddd88421cbe8 | |
parent | 2cb9ff545ac864a38fa7039670b4f303b04779c0 (diff) | |
download | backport-iwlwifi-e328e2b45335f6729765c12e80773707ce86235d.tar.gz |
wifi: mac80211: add flag to disallow puncturing in 5 GHz
Some devices may not be capable of handling puncturing in 5 GHz
only (vs. the current flag that just removes puncturing support
completely). Add a flag to support such devices: check and then
downgrade the channel width if needed.
type=feature
ticket=none
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Change-Id: I12c5a61f0be512e0c4e574c2f794ef4b37ecaf6b
Reviewed-on: https://gerritwcs.ir.intel.com/c/iwlwifi-stack-dev/+/98216
automatic-review: iil_jenkins iil_jenkins <EC.GER.UNIX.IIL.JENKINS@INTEL.COM>
tested: iil_jenkins iil_jenkins <EC.GER.UNIX.IIL.JENKINS@INTEL.COM>
Reviewed-by: Miriam Rachel Korenblit <miriam.rachel.korenblit@intel.com>
x-iwlwifi-stack-dev: e2b2a4f59474119d47047802b901be4aeb39b8e6
-rw-r--r-- | include/net/mac80211.h | 3 | ||||
-rw-r--r-- | net/mac80211/debugfs.c | 1 | ||||
-rw-r--r-- | net/mac80211/mlme.c | 4 | ||||
-rw-r--r-- | versions | 2 |
4 files changed, 9 insertions, 1 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index f9bcb822a3..5f2a48e786 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h @@ -2790,6 +2790,8 @@ struct ieee80211_txq { * * @IEEE80211_HW_DISALLOW_PUNCTURING: HW requires disabling puncturing in EHT * and connecting with a lower bandwidth instead + * @IEEE80211_HW_DISALLOW_PUNCTURING_5GHZ: HW requires disabling puncturing in + * EHT in 5 GHz and connecting with a lower bandwidth instead * * @IEEE80211_HW_HANDLES_QUIET_CSA: HW/driver handles quieting for CSA, so * no need to stop queues. This really should be set by a driver that @@ -2854,6 +2856,7 @@ enum ieee80211_hw_flags { IEEE80211_HW_DETECTS_COLOR_COLLISION, IEEE80211_HW_MLO_MCAST_MULTI_LINK_TX, IEEE80211_HW_DISALLOW_PUNCTURING, + IEEE80211_HW_DISALLOW_PUNCTURING_5GHZ, IEEE80211_HW_HANDLES_QUIET_CSA, /* keep last, obviously */ diff --git a/net/mac80211/debugfs.c b/net/mac80211/debugfs.c index 610d07d899..01e55b6470 100644 --- a/net/mac80211/debugfs.c +++ b/net/mac80211/debugfs.c @@ -504,6 +504,7 @@ static const char *hw_flag_names[] = { FLAG(DETECTS_COLOR_COLLISION), FLAG(MLO_MCAST_MULTI_LINK_TX), FLAG(DISALLOW_PUNCTURING), + FLAG(DISALLOW_PUNCTURING_5GHZ), FLAG(HANDLES_QUIET_CSA), #undef FLAG }; diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 3e05930772..640b503d29 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -599,6 +599,10 @@ static bool ieee80211_chandef_usable(struct ieee80211_sub_if_data *sdata, ieee80211_hw_check(&sdata->local->hw, DISALLOW_PUNCTURING)) return false; + if (chandef->punctured && chandef->chan->band == NL80211_BAND_5GHZ && + ieee80211_hw_check(&sdata->local->hw, DISALLOW_PUNCTURING_5GHZ)) + return false; + return true; } @@ -2,4 +2,4 @@ BACKPORTS_VERSION="(see git)" BACKPORTED_KERNEL_VERSION="(see git)" BACKPORTED_KERNEL_NAME="iwlwifi" BACKPORTS_BUILD_TSTAMP=__DATE__ \" \" __TIME__ -BACKPORTS_GIT_TRACKED="iwlwifi-stack-public:master:11996:839954ab" +BACKPORTS_GIT_TRACKED="iwlwifi-stack-public:master:11997:e2b2a4f5" |