mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-08 21:22:09 -04:00
BACKPORT: cfg80211: treat 6 GHz channels as valid regardless of capability
If a 6 GHz channel exists, then we can probably safely assume that the device actually supports it, and then it should support most bandwidths. This will probably need to be extended to check the interface type and then dig into the HE capabilities for that though, to have the correct bandwidth check. Bug: 163110886 Link: https://lore.kernel.org/r/20200528213443.d4864ef52e92.I82f09b2b14a56413ce20376d09967fe954a033eb@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com> Change-Id: Ia393e0ef876ca6251e58dd546fa336eeaf9a398e (cherry picked from commit ba8f6a037f790147438173029799f54c9d3065f2) Signed-off-by: Vamsi Krishna <vamsin@codeaurora.org> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
parent
2a3f0f7a0c
commit
facaadd91b
1 changed files with 15 additions and 7 deletions
|
|
@ -6,7 +6,7 @@
|
|||
*
|
||||
* Copyright 2009 Johannes Berg <johannes@sipsolutions.net>
|
||||
* Copyright 2013-2014 Intel Mobile Communications GmbH
|
||||
* Copyright 2018 Intel Corporation
|
||||
* Copyright 2018-2020 Intel Corporation
|
||||
*/
|
||||
|
||||
#include <linux/export.h>
|
||||
|
|
@ -916,7 +916,8 @@ bool cfg80211_chandef_usable(struct wiphy *wiphy,
|
|||
width = 10;
|
||||
break;
|
||||
case NL80211_CHAN_WIDTH_20:
|
||||
if (!ht_cap->ht_supported)
|
||||
if (!ht_cap->ht_supported &&
|
||||
chandef->chan->band != NL80211_BAND_6GHZ)
|
||||
return false;
|
||||
/* fall through */
|
||||
case NL80211_CHAN_WIDTH_20_NOHT:
|
||||
|
|
@ -925,6 +926,8 @@ bool cfg80211_chandef_usable(struct wiphy *wiphy,
|
|||
break;
|
||||
case NL80211_CHAN_WIDTH_40:
|
||||
width = 40;
|
||||
if (chandef->chan->band == NL80211_BAND_6GHZ)
|
||||
break;
|
||||
if (!ht_cap->ht_supported)
|
||||
return false;
|
||||
if (!(ht_cap->cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40) ||
|
||||
|
|
@ -939,24 +942,29 @@ bool cfg80211_chandef_usable(struct wiphy *wiphy,
|
|||
break;
|
||||
case NL80211_CHAN_WIDTH_80P80:
|
||||
cap = vht_cap->cap & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK;
|
||||
if (cap != IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ)
|
||||
if (chandef->chan->band != NL80211_BAND_6GHZ &&
|
||||
cap != IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ)
|
||||
return false;
|
||||
/* fall through */
|
||||
case NL80211_CHAN_WIDTH_80:
|
||||
if (!vht_cap->vht_supported)
|
||||
return false;
|
||||
prohibited_flags |= IEEE80211_CHAN_NO_80MHZ;
|
||||
width = 80;
|
||||
if (chandef->chan->band == NL80211_BAND_6GHZ)
|
||||
break;
|
||||
if (!vht_cap->vht_supported)
|
||||
return false;
|
||||
break;
|
||||
case NL80211_CHAN_WIDTH_160:
|
||||
prohibited_flags |= IEEE80211_CHAN_NO_160MHZ;
|
||||
width = 160;
|
||||
if (chandef->chan->band == NL80211_BAND_6GHZ)
|
||||
break;
|
||||
if (!vht_cap->vht_supported)
|
||||
return false;
|
||||
cap = vht_cap->cap & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK;
|
||||
if (cap != IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ &&
|
||||
cap != IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ)
|
||||
return false;
|
||||
prohibited_flags |= IEEE80211_CHAN_NO_160MHZ;
|
||||
width = 160;
|
||||
break;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
|
|
|
|||
Loading…
Reference in a new issue