mirror of
https://github.com/torvalds/linux.git
synced 2024-11-27 22:51:35 +00:00
wireless-drivers fixes for v5.15
Second set of fixes for v5.15, nothing major this time. Most important here are reverting a brcmfmac regression and a fix for an old rare ath5k build error. iwlwifi * fixes to NULL dereference, off by one and missing unlock * add support for Killer AX1650 on Dell XPS 15 (9510) laptop ath5k * build fix with LEDS=m brcmfmac * revert a regression causing BCM4359/9 devices stop working as access point mwifiex * fix clang warning about null pointer arithmetic -----BEGIN PGP SIGNATURE----- iQFJBAABCgAzFiEEiBjanGPFTz4PRfLobhckVSbrbZsFAmFWy3oVHGt2YWxvQGNv ZGVhdXJvcmEub3JnAAoJEG4XJFUm622bBRYIAKBa0NeCkgX8Jnfj492SQj8E9B2o +fim/W1OcBQqJnfFKaTgEHIYvudnaLuOAiCnTpzvQ5+Dc+dvM3RaPz9c405uzhwj TaHYs8zoB+//VWTGwmL+ACBYpUCdlVHRzwREv6hCiprd7M57rs1IYkgDgQ8EFCop prm3z4+Gcr48cNB0CYY39xOEz8K0+pjq82DMK5DnBrfBhO9xjf9PybXqKwjnEcxm qoRApBjNtDXrQVYHg+AcF8XQ+Vix9H5kSOW+60nGMCtkQszxvu/SQi6hJWALY1U2 0iFNGj/uY92wibQBenqW/nc96vq99HSWPPJeAD52KPXIWZFIUt3V5vJ8aRU= =hYgS -----END PGP SIGNATURE----- Merge tag 'wireless-drivers-2021-10-01' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers wireless-drivers fixes for v5.15 Second set of fixes for v5.15, nothing major this time. Most important here are reverting a brcmfmac regression and a fix for an old rare ath5k build error. iwlwifi * fixes to NULL dereference, off by one and missing unlock * add support for Killer AX1650 on Dell XPS 15 (9510) laptop ath5k * build fix with LEDS=m brcmfmac * revert a regression causing BCM4359/9 devices stop working as access point mwifiex * fix clang warning about null pointer arithmetic
This commit is contained in:
commit
5abab4982d
1
CREDITS
1
CREDITS
@ -971,6 +971,7 @@ D: PowerPC
|
||||
N: Daniel Drake
|
||||
E: dsd@gentoo.org
|
||||
D: USBAT02 CompactFlash support in usb-storage
|
||||
D: ZD1211RW wireless driver
|
||||
S: UK
|
||||
|
||||
N: Oleg Drokin
|
||||
|
@ -17793,7 +17793,6 @@ F: drivers/staging/nvec/
|
||||
|
||||
STAGING - OLPC SECONDARY DISPLAY CONTROLLER (DCON)
|
||||
M: Jens Frederich <jfrederich@gmail.com>
|
||||
M: Daniel Drake <dsd@laptop.org>
|
||||
M: Jon Nettleton <jon.nettleton@gmail.com>
|
||||
S: Maintained
|
||||
W: http://wiki.laptop.org/go/DCON
|
||||
@ -20698,7 +20697,6 @@ S: Maintained
|
||||
F: mm/zbud.c
|
||||
|
||||
ZD1211RW WIRELESS DRIVER
|
||||
M: Daniel Drake <dsd@gentoo.org>
|
||||
M: Ulrich Kunitz <kune@deine-taler.de>
|
||||
L: linux-wireless@vger.kernel.org
|
||||
L: zd1211-devs@lists.sourceforge.net (subscribers-only)
|
||||
|
@ -3,9 +3,7 @@ config ATH5K
|
||||
tristate "Atheros 5xxx wireless cards support"
|
||||
depends on (PCI || ATH25) && MAC80211
|
||||
select ATH_COMMON
|
||||
select MAC80211_LEDS
|
||||
select LEDS_CLASS
|
||||
select NEW_LEDS
|
||||
select MAC80211_LEDS if LEDS_CLASS=y || LEDS_CLASS=MAC80211
|
||||
select ATH5K_AHB if ATH25
|
||||
select ATH5K_PCI if !ATH25
|
||||
help
|
||||
|
@ -89,7 +89,8 @@ static const struct pci_device_id ath5k_led_devices[] = {
|
||||
|
||||
void ath5k_led_enable(struct ath5k_hw *ah)
|
||||
{
|
||||
if (test_bit(ATH_STAT_LEDSOFT, ah->status)) {
|
||||
if (IS_ENABLED(CONFIG_MAC80211_LEDS) &&
|
||||
test_bit(ATH_STAT_LEDSOFT, ah->status)) {
|
||||
ath5k_hw_set_gpio_output(ah, ah->led_pin);
|
||||
ath5k_led_off(ah);
|
||||
}
|
||||
@ -104,7 +105,8 @@ static void ath5k_led_on(struct ath5k_hw *ah)
|
||||
|
||||
void ath5k_led_off(struct ath5k_hw *ah)
|
||||
{
|
||||
if (!test_bit(ATH_STAT_LEDSOFT, ah->status))
|
||||
if (!IS_ENABLED(CONFIG_MAC80211_LEDS) ||
|
||||
!test_bit(ATH_STAT_LEDSOFT, ah->status))
|
||||
return;
|
||||
ath5k_hw_set_gpio(ah, ah->led_pin, !ah->led_on);
|
||||
}
|
||||
@ -146,7 +148,7 @@ ath5k_register_led(struct ath5k_hw *ah, struct ath5k_led *led,
|
||||
static void
|
||||
ath5k_unregister_led(struct ath5k_led *led)
|
||||
{
|
||||
if (!led->ah)
|
||||
if (!IS_ENABLED(CONFIG_MAC80211_LEDS) || !led->ah)
|
||||
return;
|
||||
led_classdev_unregister(&led->led_dev);
|
||||
ath5k_led_off(led->ah);
|
||||
@ -169,7 +171,7 @@ int ath5k_init_leds(struct ath5k_hw *ah)
|
||||
char name[ATH5K_LED_MAX_NAME_LEN + 1];
|
||||
const struct pci_device_id *match;
|
||||
|
||||
if (!ah->pdev)
|
||||
if (!IS_ENABLED(CONFIG_MAC80211_LEDS) || !ah->pdev)
|
||||
return 0;
|
||||
|
||||
#ifdef CONFIG_ATH5K_AHB
|
||||
|
@ -7463,23 +7463,18 @@ static s32 brcmf_translate_country_code(struct brcmf_pub *drvr, char alpha2[2],
|
||||
s32 found_index;
|
||||
int i;
|
||||
|
||||
country_codes = drvr->settings->country_codes;
|
||||
if (!country_codes) {
|
||||
brcmf_dbg(TRACE, "No country codes configured for device\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if ((alpha2[0] == ccreq->country_abbrev[0]) &&
|
||||
(alpha2[1] == ccreq->country_abbrev[1])) {
|
||||
brcmf_dbg(TRACE, "Country code already set\n");
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
country_codes = drvr->settings->country_codes;
|
||||
if (!country_codes) {
|
||||
brcmf_dbg(TRACE, "No country codes configured for device, using ISO3166 code and 0 rev\n");
|
||||
memset(ccreq, 0, sizeof(*ccreq));
|
||||
ccreq->country_abbrev[0] = alpha2[0];
|
||||
ccreq->country_abbrev[1] = alpha2[1];
|
||||
ccreq->ccode[0] = alpha2[0];
|
||||
ccreq->ccode[1] = alpha2[1];
|
||||
return 0;
|
||||
}
|
||||
|
||||
found_index = -1;
|
||||
for (i = 0; i < country_codes->table_size; i++) {
|
||||
cc = &country_codes->table[i];
|
||||
|
@ -160,6 +160,7 @@ static void iwl_mvm_wowlan_program_keys(struct ieee80211_hw *hw,
|
||||
mvm->ptk_icvlen = key->icv_len;
|
||||
mvm->gtk_ivlen = key->iv_len;
|
||||
mvm->gtk_icvlen = key->icv_len;
|
||||
mutex_unlock(&mvm->mutex);
|
||||
|
||||
/* don't upload key again */
|
||||
return;
|
||||
@ -360,11 +361,11 @@ static void iwl_mvm_wowlan_get_rsc_v5_data(struct ieee80211_hw *hw,
|
||||
if (sta) {
|
||||
rsc = data->rsc->ucast_rsc;
|
||||
} else {
|
||||
if (WARN_ON(data->gtks > ARRAY_SIZE(data->gtk_ids)))
|
||||
if (WARN_ON(data->gtks >= ARRAY_SIZE(data->gtk_ids)))
|
||||
return;
|
||||
data->gtk_ids[data->gtks] = key->keyidx;
|
||||
rsc = data->rsc->mcast_rsc[data->gtks % 2];
|
||||
if (WARN_ON(key->keyidx >
|
||||
if (WARN_ON(key->keyidx >=
|
||||
ARRAY_SIZE(data->rsc->mcast_key_id_map)))
|
||||
return;
|
||||
data->rsc->mcast_key_id_map[key->keyidx] = data->gtks % 2;
|
||||
|
@ -662,12 +662,13 @@ static bool __iwl_mvm_remove_time_event(struct iwl_mvm *mvm,
|
||||
u32 *uid)
|
||||
{
|
||||
u32 id;
|
||||
struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(te_data->vif);
|
||||
struct iwl_mvm_vif *mvmvif;
|
||||
enum nl80211_iftype iftype;
|
||||
|
||||
if (!te_data->vif)
|
||||
return false;
|
||||
|
||||
mvmvif = iwl_mvm_vif_from_mac80211(te_data->vif);
|
||||
iftype = te_data->vif->type;
|
||||
|
||||
/*
|
||||
|
@ -547,6 +547,8 @@ static const struct iwl_dev_info iwl_dev_info_table[] = {
|
||||
IWL_DEV_INFO(0x43F0, 0x0074, iwl_ax201_cfg_qu_hr, NULL),
|
||||
IWL_DEV_INFO(0x43F0, 0x0078, iwl_ax201_cfg_qu_hr, NULL),
|
||||
IWL_DEV_INFO(0x43F0, 0x007C, iwl_ax201_cfg_qu_hr, NULL),
|
||||
IWL_DEV_INFO(0x43F0, 0x1651, killer1650s_2ax_cfg_qu_b0_hr_b0, iwl_ax201_killer_1650s_name),
|
||||
IWL_DEV_INFO(0x43F0, 0x1652, killer1650i_2ax_cfg_qu_b0_hr_b0, iwl_ax201_killer_1650i_name),
|
||||
IWL_DEV_INFO(0x43F0, 0x2074, iwl_ax201_cfg_qu_hr, NULL),
|
||||
IWL_DEV_INFO(0x43F0, 0x4070, iwl_ax201_cfg_qu_hr, NULL),
|
||||
IWL_DEV_INFO(0xA0F0, 0x0070, iwl_ax201_cfg_qu_hr, NULL),
|
||||
|
@ -62,8 +62,8 @@ void *mwifiex_process_sta_txpd(struct mwifiex_private *priv,
|
||||
|
||||
pkt_type = mwifiex_is_skb_mgmt_frame(skb) ? PKT_TYPE_MGMT : 0;
|
||||
|
||||
pad = ((void *)skb->data - (sizeof(*local_tx_pd) + hroom)-
|
||||
NULL) & (MWIFIEX_DMA_ALIGN_SZ - 1);
|
||||
pad = ((uintptr_t)skb->data - (sizeof(*local_tx_pd) + hroom)) &
|
||||
(MWIFIEX_DMA_ALIGN_SZ - 1);
|
||||
skb_push(skb, sizeof(*local_tx_pd) + pad);
|
||||
|
||||
local_tx_pd = (struct txpd *) skb->data;
|
||||
|
@ -475,8 +475,8 @@ void *mwifiex_process_uap_txpd(struct mwifiex_private *priv,
|
||||
|
||||
pkt_type = mwifiex_is_skb_mgmt_frame(skb) ? PKT_TYPE_MGMT : 0;
|
||||
|
||||
pad = ((void *)skb->data - (sizeof(*txpd) + hroom) - NULL) &
|
||||
(MWIFIEX_DMA_ALIGN_SZ - 1);
|
||||
pad = ((uintptr_t)skb->data - (sizeof(*txpd) + hroom)) &
|
||||
(MWIFIEX_DMA_ALIGN_SZ - 1);
|
||||
|
||||
skb_push(skb, sizeof(*txpd) + pad);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user