Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
We got slightly different patches removing a double word
in a comment in net/ipv4/raw.c - picked the version from net.
Simple conflict in drivers/net/ethernet/ibm/ibmvnic.c. Use cached
values instead of VNIC login response buffer (following what
commit 507ebe6444 ("ibmvnic: Fix use-after-free of VNIC login
response buffer") did).
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
*/
|
||||
|
||||
#include <linux/export.h>
|
||||
#include <linux/bitfield.h>
|
||||
#include <net/cfg80211.h>
|
||||
#include "core.h"
|
||||
#include "rdev-ops.h"
|
||||
@@ -912,6 +913,7 @@ bool cfg80211_chandef_usable(struct wiphy *wiphy,
|
||||
struct ieee80211_sta_vht_cap *vht_cap;
|
||||
struct ieee80211_edmg *edmg_cap;
|
||||
u32 width, control_freq, cap;
|
||||
bool support_80_80 = false;
|
||||
|
||||
if (WARN_ON(!cfg80211_chandef_valid(chandef)))
|
||||
return false;
|
||||
@@ -979,9 +981,13 @@ bool cfg80211_chandef_usable(struct wiphy *wiphy,
|
||||
return false;
|
||||
break;
|
||||
case NL80211_CHAN_WIDTH_80P80:
|
||||
cap = vht_cap->cap & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK;
|
||||
if (chandef->chan->band != NL80211_BAND_6GHZ &&
|
||||
cap != IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ)
|
||||
cap = vht_cap->cap;
|
||||
support_80_80 =
|
||||
(cap & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ) ||
|
||||
(cap & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ &&
|
||||
cap & IEEE80211_VHT_CAP_EXT_NSS_BW_MASK) ||
|
||||
u32_get_bits(cap, IEEE80211_VHT_CAP_EXT_NSS_BW_MASK) > 1;
|
||||
if (chandef->chan->band != NL80211_BAND_6GHZ && !support_80_80)
|
||||
return false;
|
||||
fallthrough;
|
||||
case NL80211_CHAN_WIDTH_80:
|
||||
@@ -1001,7 +1007,8 @@ bool cfg80211_chandef_usable(struct wiphy *wiphy,
|
||||
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)
|
||||
cap != IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ &&
|
||||
!(vht_cap->cap & IEEE80211_VHT_CAP_EXT_NSS_BW_MASK))
|
||||
return false;
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -6129,7 +6129,7 @@ static int nl80211_set_station(struct sk_buff *skb, struct genl_info *info)
|
||||
|
||||
if (info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY])
|
||||
params.he_6ghz_capa =
|
||||
nla_data(info->attrs[NL80211_ATTR_HE_CAPABILITY]);
|
||||
nla_data(info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]);
|
||||
|
||||
if (info->attrs[NL80211_ATTR_AIRTIME_WEIGHT])
|
||||
params.airtime_weight =
|
||||
|
||||
@@ -3105,6 +3105,9 @@ int regulatory_hint_user(const char *alpha2,
|
||||
if (WARN_ON(!alpha2))
|
||||
return -EINVAL;
|
||||
|
||||
if (!is_world_regdom(alpha2) && !is_an_alpha2(alpha2))
|
||||
return -EINVAL;
|
||||
|
||||
request = kzalloc(sizeof(struct regulatory_request), GFP_KERNEL);
|
||||
if (!request)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -123,11 +123,13 @@ int ieee80211_freq_khz_to_channel(u32 freq)
|
||||
return (freq - 2407) / 5;
|
||||
else if (freq >= 4910 && freq <= 4980)
|
||||
return (freq - 4000) / 5;
|
||||
else if (freq < 5945)
|
||||
else if (freq < 5925)
|
||||
return (freq - 5000) / 5;
|
||||
else if (freq == 5935)
|
||||
return 2;
|
||||
else if (freq <= 45000) /* DMG band lower limit */
|
||||
/* see 802.11ax D4.1 27.3.22.2 */
|
||||
return (freq - 5940) / 5;
|
||||
/* see 802.11ax D6.1 27.3.22.2 */
|
||||
return (freq - 5950) / 5;
|
||||
else if (freq >= 58320 && freq <= 70200)
|
||||
return (freq - 56160) / 2160;
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user