mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 15:27:29 +00:00
A few big new things:
* 802.11 frame encapsulation offload support * more HE (802.11ax) support, including some for 6 GHz band * powersave in hwsim, for better testing Of course as usual there are various cleanups and small fixes. -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEH1e1rEeCd0AIMq6MB8qZga/fl8QFAl5GggsACgkQB8qZga/f l8Qgdg//R42bSv94JYPcwZ5phgTgraCRZODWjBJq08n2T5m0EmEufgX79d9uEdgT u9npvn+ich5/VZhmuSbGrW9TT6/FPLAZyghV1fj79o971Qd7ky2Mp8G1fcTEbtDn IG2e9vauY9XDSb2O3wNj8dA8rAN/kLNmhsPqWxn2CgLPqjdbf+W15dvo4rnaL2gs ffGyE47dHuAFwCruyT8UPbw3iu4+tQhruN9eVg+UkU8rJGvEMqfrLK20zl1weIV9 a7IuXdxacdsHO8Y+tl6GtvgOURQPpvf55+leLOUhcmHPJ3f/eAal6wmWRxDxs/qB IWSe8BC81cZZ5pYWk1A+0sXfJMlYjNsN0xw5SQRSrbgyb5saz8aLUIlHsOBM4iPH SwzCMN5A1GOPOUFsugzPwbiki9g6dh0/EC2NyXE4A26CAd967dVXTvTY5SMNgiB+ bZaaUDaPQUm1jgDT5bLRhTipTHbekDkYzG/e+wNO+HKyStoEYM485MwY4MQCYzEh HKDmkAbFuCwEUeXXw1y8GybUknApCRru9FtY+oiN/+y/aESfB7HJfmDFFU/KYgPu HOuqJoNAxdMdycDCb24/cLjUiehzfM6sujwBxZOD5WHhAcXrBo5dGd6ibfurIrjj XI36/mwTiMtyyb0/5xM1AKvoic2j+a5YU3MB7KSc9TlaPa5j2NA= =CgmJ -----END PGP SIGNATURE----- Merge tag 'mac80211-next-for-net-next-2020-02-14' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next Johannes Berg says: ==================== A few big new things: * 802.11 frame encapsulation offload support * more HE (802.11ax) support, including some for 6 GHz band * powersave in hwsim, for better testing Of course as usual there are various cleanups and small fixes. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
ddb535a6a0
35 changed files with 1078 additions and 338 deletions
|
@ -6,7 +6,7 @@
|
|||
* Copyright 2007 Johannes Berg <johannes@sipsolutions.net>
|
||||
* Copyright 2013-2014 Intel Mobile Communications GmbH
|
||||
* Copyright (C) 2015-2017 Intel Deutschland GmbH
|
||||
* Copyright (C) 2018-2019 Intel Corporation
|
||||
* Copyright (C) 2018-2020 Intel Corporation
|
||||
*
|
||||
* utilities for mac80211
|
||||
*/
|
||||
|
@ -39,7 +39,6 @@ const void *const mac80211_wiphy_privid = &mac80211_wiphy_privid;
|
|||
struct ieee80211_hw *wiphy_to_ieee80211_hw(struct wiphy *wiphy)
|
||||
{
|
||||
struct ieee80211_local *local;
|
||||
BUG_ON(!wiphy);
|
||||
|
||||
local = wiphy_priv(wiphy);
|
||||
return &local->hw;
|
||||
|
@ -891,6 +890,51 @@ void ieee80211_queue_delayed_work(struct ieee80211_hw *hw,
|
|||
}
|
||||
EXPORT_SYMBOL(ieee80211_queue_delayed_work);
|
||||
|
||||
static void ieee80211_parse_extension_element(u32 *crc,
|
||||
const struct element *elem,
|
||||
struct ieee802_11_elems *elems)
|
||||
{
|
||||
const void *data = elem->data + 1;
|
||||
u8 len = elem->datalen - 1;
|
||||
|
||||
switch (elem->data[0]) {
|
||||
case WLAN_EID_EXT_HE_MU_EDCA:
|
||||
if (len == sizeof(*elems->mu_edca_param_set)) {
|
||||
elems->mu_edca_param_set = data;
|
||||
if (crc)
|
||||
*crc = crc32_be(*crc, (void *)elem,
|
||||
elem->datalen + 2);
|
||||
}
|
||||
break;
|
||||
case WLAN_EID_EXT_HE_CAPABILITY:
|
||||
elems->he_cap = data;
|
||||
elems->he_cap_len = len;
|
||||
break;
|
||||
case WLAN_EID_EXT_HE_OPERATION:
|
||||
if (len >= sizeof(*elems->he_operation) &&
|
||||
len == ieee80211_he_oper_size(data) - 1)
|
||||
elems->he_operation = data;
|
||||
break;
|
||||
case WLAN_EID_EXT_UORA:
|
||||
if (len == 1)
|
||||
elems->uora_element = data;
|
||||
break;
|
||||
case WLAN_EID_EXT_MAX_CHANNEL_SWITCH_TIME:
|
||||
if (len == 3)
|
||||
elems->max_channel_switch_time = data;
|
||||
break;
|
||||
case WLAN_EID_EXT_MULTIPLE_BSSID_CONFIGURATION:
|
||||
if (len == sizeof(*elems->mbssid_config_ie))
|
||||
elems->mbssid_config_ie = data;
|
||||
break;
|
||||
case WLAN_EID_EXT_HE_SPR:
|
||||
if (len >= sizeof(*elems->he_spr) &&
|
||||
len >= ieee80211_he_spr_size(data))
|
||||
elems->he_spr = data;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static u32
|
||||
_ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action,
|
||||
struct ieee802_11_elems *elems,
|
||||
|
@ -950,6 +994,7 @@ _ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action,
|
|||
case WLAN_EID_CHAN_SWITCH_TIMING:
|
||||
case WLAN_EID_LINK_ID:
|
||||
case WLAN_EID_BSS_MAX_IDLE_PERIOD:
|
||||
case WLAN_EID_RSNX:
|
||||
/*
|
||||
* not listing WLAN_EID_CHANNEL_SWITCH_WRAPPER -- it seems possible
|
||||
* that if the content gets bigger it might be needed more than once
|
||||
|
@ -1226,34 +1271,14 @@ _ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action,
|
|||
if (elen >= sizeof(*elems->max_idle_period_ie))
|
||||
elems->max_idle_period_ie = (void *)pos;
|
||||
break;
|
||||
case WLAN_EID_RSNX:
|
||||
elems->rsnx = pos;
|
||||
elems->rsnx_len = elen;
|
||||
break;
|
||||
case WLAN_EID_EXTENSION:
|
||||
if (pos[0] == WLAN_EID_EXT_HE_MU_EDCA &&
|
||||
elen >= (sizeof(*elems->mu_edca_param_set) + 1)) {
|
||||
elems->mu_edca_param_set = (void *)&pos[1];
|
||||
if (calc_crc)
|
||||
crc = crc32_be(crc, pos - 2, elen + 2);
|
||||
} else if (pos[0] == WLAN_EID_EXT_HE_CAPABILITY) {
|
||||
elems->he_cap = (void *)&pos[1];
|
||||
elems->he_cap_len = elen - 1;
|
||||
} else if (pos[0] == WLAN_EID_EXT_HE_OPERATION &&
|
||||
elen >= sizeof(*elems->he_operation) &&
|
||||
elen >= ieee80211_he_oper_size(&pos[1])) {
|
||||
elems->he_operation = (void *)&pos[1];
|
||||
} else if (pos[0] == WLAN_EID_EXT_UORA && elen >= 1) {
|
||||
elems->uora_element = (void *)&pos[1];
|
||||
} else if (pos[0] ==
|
||||
WLAN_EID_EXT_MAX_CHANNEL_SWITCH_TIME &&
|
||||
elen == 4) {
|
||||
elems->max_channel_switch_time = pos + 1;
|
||||
} else if (pos[0] ==
|
||||
WLAN_EID_EXT_MULTIPLE_BSSID_CONFIGURATION &&
|
||||
elen == 3) {
|
||||
elems->mbssid_config_ie = (void *)&pos[1];
|
||||
} else if (pos[0] == WLAN_EID_EXT_HE_SPR &&
|
||||
elen >= sizeof(*elems->he_spr) &&
|
||||
elen >= ieee80211_he_spr_size(&pos[1])) {
|
||||
elems->he_spr = (void *)&pos[1];
|
||||
}
|
||||
ieee80211_parse_extension_element(calc_crc ?
|
||||
&crc : NULL,
|
||||
elem, elems);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue