Commit 0303b3a1 authored by David S. Miller's avatar David S. Miller

Merge tag 'wireless-drivers-2020-04-24' of...

Merge tag 'wireless-drivers-2020-04-24' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers

Kalle Valo says:

====================
wireless-drivers fixes for v5.7

Second set of fixes for v5.7. Quite a few iwlwifi fixes and some
maintainers file updates.

iwlwifi

* fix a bug with kmemdup() error handling

* fix a DMA pool warning about unfreed memory

* fix beacon statistics

* fix a theoritical bug in device initialisation

* fix queue limit handling and inactive TID removal

* disable ACK Enabled Aggregation which was enabled by accident

* fix transmit power setting reading from BIOS with certain versions
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents a6d0b83f 10e41f34
...@@ -189,7 +189,7 @@ F: drivers/net/hamradio/6pack.c ...@@ -189,7 +189,7 @@ F: drivers/net/hamradio/6pack.c
M: Johannes Berg <johannes@sipsolutions.net> M: Johannes Berg <johannes@sipsolutions.net>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Maintained S: Maintained
W: http://wireless.kernel.org/ W: https://wireless.wiki.kernel.org/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git
F: Documentation/driver-api/80211/cfg80211.rst F: Documentation/driver-api/80211/cfg80211.rst
...@@ -505,7 +505,7 @@ F: drivers/hwmon/adm1029.c ...@@ -505,7 +505,7 @@ F: drivers/hwmon/adm1029.c
ADM8211 WIRELESS DRIVER ADM8211 WIRELESS DRIVER
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Orphan S: Orphan
W: http://wireless.kernel.org/ W: https://wireless.wiki.kernel.org/
F: drivers/net/wireless/admtek/adm8211.* F: drivers/net/wireless/admtek/adm8211.*
ADP1653 FLASH CONTROLLER DRIVER ADP1653 FLASH CONTROLLER DRIVER
...@@ -2847,14 +2847,14 @@ M: Nick Kossifidis <mickflemm@gmail.com> ...@@ -2847,14 +2847,14 @@ M: Nick Kossifidis <mickflemm@gmail.com>
M: Luis Chamberlain <mcgrof@kernel.org> M: Luis Chamberlain <mcgrof@kernel.org>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Maintained S: Maintained
W: http://wireless.kernel.org/en/users/Drivers/ath5k W: https://wireless.wiki.kernel.org/en/users/Drivers/ath5k
F: drivers/net/wireless/ath/ath5k/ F: drivers/net/wireless/ath/ath5k/
ATHEROS ATH6KL WIRELESS DRIVER ATHEROS ATH6KL WIRELESS DRIVER
M: Kalle Valo <kvalo@codeaurora.org> M: Kalle Valo <kvalo@codeaurora.org>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Supported S: Supported
W: http://wireless.kernel.org/en/users/Drivers/ath6kl W: https://wireless.wiki.kernel.org/en/users/Drivers/ath6kl
T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
F: drivers/net/wireless/ath/ath6kl/ F: drivers/net/wireless/ath/ath6kl/
...@@ -3017,7 +3017,7 @@ B43 WIRELESS DRIVER ...@@ -3017,7 +3017,7 @@ B43 WIRELESS DRIVER
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
L: b43-dev@lists.infradead.org L: b43-dev@lists.infradead.org
S: Odd Fixes S: Odd Fixes
W: http://wireless.kernel.org/en/users/Drivers/b43 W: https://wireless.wiki.kernel.org/en/users/Drivers/b43
F: drivers/net/wireless/broadcom/b43/ F: drivers/net/wireless/broadcom/b43/
B43LEGACY WIRELESS DRIVER B43LEGACY WIRELESS DRIVER
...@@ -3025,7 +3025,7 @@ M: Larry Finger <Larry.Finger@lwfinger.net> ...@@ -3025,7 +3025,7 @@ M: Larry Finger <Larry.Finger@lwfinger.net>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
L: b43-dev@lists.infradead.org L: b43-dev@lists.infradead.org
S: Maintained S: Maintained
W: http://wireless.kernel.org/en/users/Drivers/b43 W: https://wireless.wiki.kernel.org/en/users/Drivers/b43
F: drivers/net/wireless/broadcom/b43legacy/ F: drivers/net/wireless/broadcom/b43legacy/
BACKLIGHT CLASS/SUBSYSTEM BACKLIGHT CLASS/SUBSYSTEM
...@@ -3840,7 +3840,7 @@ CARL9170 LINUX COMMUNITY WIRELESS DRIVER ...@@ -3840,7 +3840,7 @@ CARL9170 LINUX COMMUNITY WIRELESS DRIVER
M: Christian Lamparter <chunkeey@googlemail.com> M: Christian Lamparter <chunkeey@googlemail.com>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Maintained S: Maintained
W: http://wireless.kernel.org/en/users/Drivers/carl9170 W: https://wireless.wiki.kernel.org/en/users/Drivers/carl9170
F: drivers/net/wireless/ath/carl9170/ F: drivers/net/wireless/ath/carl9170/
CAVIUM I2C DRIVER CAVIUM I2C DRIVER
...@@ -10065,7 +10065,7 @@ MAC80211 ...@@ -10065,7 +10065,7 @@ MAC80211
M: Johannes Berg <johannes@sipsolutions.net> M: Johannes Berg <johannes@sipsolutions.net>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Maintained S: Maintained
W: http://wireless.kernel.org/ W: https://wireless.wiki.kernel.org/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git
F: Documentation/networking/mac80211-injection.txt F: Documentation/networking/mac80211-injection.txt
...@@ -10695,7 +10695,6 @@ MEDIATEK MT76 WIRELESS LAN DRIVER ...@@ -10695,7 +10695,6 @@ MEDIATEK MT76 WIRELESS LAN DRIVER
M: Felix Fietkau <nbd@nbd.name> M: Felix Fietkau <nbd@nbd.name>
M: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com> M: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
R: Ryder Lee <ryder.lee@mediatek.com> R: Ryder Lee <ryder.lee@mediatek.com>
R: Roy Luo <royluo@google.com>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Maintained S: Maintained
F: drivers/net/wireless/mediatek/mt76/ F: drivers/net/wireless/mediatek/mt76/
...@@ -12646,7 +12645,7 @@ F: fs/orangefs/ ...@@ -12646,7 +12645,7 @@ F: fs/orangefs/
ORINOCO DRIVER ORINOCO DRIVER
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Orphan S: Orphan
W: http://wireless.kernel.org/en/users/Drivers/orinoco W: https://wireless.wiki.kernel.org/en/users/Drivers/orinoco
W: http://www.nongnu.org/orinoco/ W: http://www.nongnu.org/orinoco/
F: drivers/net/wireless/intersil/orinoco/ F: drivers/net/wireless/intersil/orinoco/
...@@ -12672,7 +12671,7 @@ P54 WIRELESS DRIVER ...@@ -12672,7 +12671,7 @@ P54 WIRELESS DRIVER
M: Christian Lamparter <chunkeey@googlemail.com> M: Christian Lamparter <chunkeey@googlemail.com>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Maintained S: Maintained
W: http://wireless.kernel.org/en/users/Drivers/p54 W: https://wireless.wiki.kernel.org/en/users/Drivers/p54
F: drivers/net/wireless/intersil/p54/ F: drivers/net/wireless/intersil/p54/
PACKING PACKING
...@@ -13593,7 +13592,7 @@ PRISM54 WIRELESS DRIVER ...@@ -13593,7 +13592,7 @@ PRISM54 WIRELESS DRIVER
M: Luis Chamberlain <mcgrof@kernel.org> M: Luis Chamberlain <mcgrof@kernel.org>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Obsolete S: Obsolete
W: http://wireless.kernel.org/en/users/Drivers/p54 W: https://wireless.wiki.kernel.org/en/users/Drivers/p54
F: drivers/net/wireless/intersil/prism54/ F: drivers/net/wireless/intersil/prism54/
PROC FILESYSTEM PROC FILESYSTEM
...@@ -13933,7 +13932,7 @@ QUALCOMM ATHEROS ATH10K WIRELESS DRIVER ...@@ -13933,7 +13932,7 @@ QUALCOMM ATHEROS ATH10K WIRELESS DRIVER
M: Kalle Valo <kvalo@codeaurora.org> M: Kalle Valo <kvalo@codeaurora.org>
L: ath10k@lists.infradead.org L: ath10k@lists.infradead.org
S: Supported S: Supported
W: http://wireless.kernel.org/en/users/Drivers/ath10k W: https://wireless.wiki.kernel.org/en/users/Drivers/ath10k
T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
F: drivers/net/wireless/ath/ath10k/ F: drivers/net/wireless/ath/ath10k/
...@@ -13948,7 +13947,7 @@ QUALCOMM ATHEROS ATH9K WIRELESS DRIVER ...@@ -13948,7 +13947,7 @@ QUALCOMM ATHEROS ATH9K WIRELESS DRIVER
M: QCA ath9k Development <ath9k-devel@qca.qualcomm.com> M: QCA ath9k Development <ath9k-devel@qca.qualcomm.com>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Supported S: Supported
W: http://wireless.kernel.org/en/users/Drivers/ath9k W: https://wireless.wiki.kernel.org/en/users/Drivers/ath9k
F: drivers/net/wireless/ath/ath9k/ F: drivers/net/wireless/ath/ath9k/
QUALCOMM CAMERA SUBSYSTEM DRIVER QUALCOMM CAMERA SUBSYSTEM DRIVER
...@@ -14045,13 +14044,12 @@ QUALCOMM WCN36XX WIRELESS DRIVER ...@@ -14045,13 +14044,12 @@ QUALCOMM WCN36XX WIRELESS DRIVER
M: Kalle Valo <kvalo@codeaurora.org> M: Kalle Valo <kvalo@codeaurora.org>
L: wcn36xx@lists.infradead.org L: wcn36xx@lists.infradead.org
S: Supported S: Supported
W: http://wireless.kernel.org/en/users/Drivers/wcn36xx W: https://wireless.wiki.kernel.org/en/users/Drivers/wcn36xx
T: git git://github.com/KrasnikovEugene/wcn36xx.git T: git git://github.com/KrasnikovEugene/wcn36xx.git
F: drivers/net/wireless/ath/wcn36xx/ F: drivers/net/wireless/ath/wcn36xx/
QUANTENNA QTNFMAC WIRELESS DRIVER QUANTENNA QTNFMAC WIRELESS DRIVER
M: Igor Mitsyanko <imitsyanko@quantenna.com> M: Igor Mitsyanko <imitsyanko@quantenna.com>
M: Avinash Patil <avinashp@quantenna.com>
M: Sergey Matyukevich <smatyukevich@quantenna.com> M: Sergey Matyukevich <smatyukevich@quantenna.com>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Maintained S: Maintained
...@@ -14273,7 +14271,7 @@ REALTEK WIRELESS DRIVER (rtlwifi family) ...@@ -14273,7 +14271,7 @@ REALTEK WIRELESS DRIVER (rtlwifi family)
M: Ping-Ke Shih <pkshih@realtek.com> M: Ping-Ke Shih <pkshih@realtek.com>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Maintained S: Maintained
W: http://wireless.kernel.org/ W: https://wireless.wiki.kernel.org/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
F: drivers/net/wireless/realtek/rtlwifi/ F: drivers/net/wireless/realtek/rtlwifi/
...@@ -14408,7 +14406,7 @@ RFKILL ...@@ -14408,7 +14406,7 @@ RFKILL
M: Johannes Berg <johannes@sipsolutions.net> M: Johannes Berg <johannes@sipsolutions.net>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Maintained S: Maintained
W: http://wireless.kernel.org/ W: https://wireless.wiki.kernel.org/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git
F: Documentation/ABI/stable/sysfs-class-rfkill F: Documentation/ABI/stable/sysfs-class-rfkill
...@@ -14557,7 +14555,7 @@ F: drivers/media/dvb-frontends/rtl2832_sdr* ...@@ -14557,7 +14555,7 @@ F: drivers/media/dvb-frontends/rtl2832_sdr*
RTL8180 WIRELESS DRIVER RTL8180 WIRELESS DRIVER
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Orphan S: Orphan
W: http://wireless.kernel.org/ W: https://wireless.wiki.kernel.org/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
F: drivers/net/wireless/realtek/rtl818x/rtl8180/ F: drivers/net/wireless/realtek/rtl818x/rtl8180/
...@@ -14567,7 +14565,7 @@ M: Hin-Tak Leung <htl10@users.sourceforge.net> ...@@ -14567,7 +14565,7 @@ M: Hin-Tak Leung <htl10@users.sourceforge.net>
M: Larry Finger <Larry.Finger@lwfinger.net> M: Larry Finger <Larry.Finger@lwfinger.net>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Maintained S: Maintained
W: http://wireless.kernel.org/ W: https://wireless.wiki.kernel.org/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
F: drivers/net/wireless/realtek/rtl818x/rtl8187/ F: drivers/net/wireless/realtek/rtl818x/rtl8187/
...@@ -16922,8 +16920,8 @@ F: drivers/media/platform/ti-vpe/ ...@@ -16922,8 +16920,8 @@ F: drivers/media/platform/ti-vpe/
TI WILINK WIRELESS DRIVERS TI WILINK WIRELESS DRIVERS
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Orphan S: Orphan
W: http://wireless.kernel.org/en/users/Drivers/wl12xx W: https://wireless.wiki.kernel.org/en/users/Drivers/wl12xx
W: http://wireless.kernel.org/en/users/Drivers/wl1251 W: https://wireless.wiki.kernel.org/en/users/Drivers/wl1251
T: git git://git.kernel.org/pub/scm/linux/kernel/git/luca/wl12xx.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/luca/wl12xx.git
F: drivers/net/wireless/ti/ F: drivers/net/wireless/ti/
F: include/linux/wl12xx.h F: include/linux/wl12xx.h
...@@ -18205,7 +18203,7 @@ M: Maya Erez <merez@codeaurora.org> ...@@ -18205,7 +18203,7 @@ M: Maya Erez <merez@codeaurora.org>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
L: wil6210@qti.qualcomm.com L: wil6210@qti.qualcomm.com
S: Supported S: Supported
W: http://wireless.kernel.org/en/users/Drivers/wil6210 W: https://wireless.wiki.kernel.org/en/users/Drivers/wil6210
F: drivers/net/wireless/ath/wil6210/ F: drivers/net/wireless/ath/wil6210/
WIMAX STACK WIMAX STACK
......
...@@ -296,9 +296,14 @@ int iwl_sar_select_profile(struct iwl_fw_runtime *fwrt, ...@@ -296,9 +296,14 @@ int iwl_sar_select_profile(struct iwl_fw_runtime *fwrt,
if (!prof->enabled) { if (!prof->enabled) {
IWL_DEBUG_RADIO(fwrt, "SAR profile %d is disabled.\n", IWL_DEBUG_RADIO(fwrt, "SAR profile %d is disabled.\n",
profs[i]); profs[i]);
/* if one of the profiles is disabled, we fail all */ /*
return -ENOENT; * if one of the profiles is disabled, we
* ignore all of them and return 1 to
* differentiate disabled from other failures.
*/
return 1;
} }
IWL_DEBUG_INFO(fwrt, IWL_DEBUG_INFO(fwrt,
"SAR EWRD: chain %d profile index %d\n", "SAR EWRD: chain %d profile index %d\n",
i, profs[i]); i, profs[i]);
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* Copyright(c) 2007 - 2014 Intel Corporation. All rights reserved. * Copyright(c) 2007 - 2014 Intel Corporation. All rights reserved.
* Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH
* Copyright(c) 2016 - 2017 Intel Deutschland GmbH * Copyright(c) 2016 - 2017 Intel Deutschland GmbH
* Copyright(c) 2019 Intel Corporation * Copyright(c) 2019 - 2020 Intel Corporation
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of version 2 of the GNU General Public License as * it under the terms of version 2 of the GNU General Public License as
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
* Copyright(c) 2005 - 2014 Intel Corporation. All rights reserved. * Copyright(c) 2005 - 2014 Intel Corporation. All rights reserved.
* Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH
* Copyright(c) 2016 - 2017 Intel Deutschland GmbH * Copyright(c) 2016 - 2017 Intel Deutschland GmbH
* Copyright(c) 2019 Intel Corporation * Copyright(c) 2019 - 2020 Intel Corporation
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
...@@ -99,7 +99,7 @@ enum iwl_mvm_dqa_txq { ...@@ -99,7 +99,7 @@ enum iwl_mvm_dqa_txq {
IWL_MVM_DQA_MAX_MGMT_QUEUE = 8, IWL_MVM_DQA_MAX_MGMT_QUEUE = 8,
IWL_MVM_DQA_AP_PROBE_RESP_QUEUE = 9, IWL_MVM_DQA_AP_PROBE_RESP_QUEUE = 9,
IWL_MVM_DQA_MIN_DATA_QUEUE = 10, IWL_MVM_DQA_MIN_DATA_QUEUE = 10,
IWL_MVM_DQA_MAX_DATA_QUEUE = 31, IWL_MVM_DQA_MAX_DATA_QUEUE = 30,
}; };
enum iwl_mvm_tx_fifo { enum iwl_mvm_tx_fifo {
......
...@@ -1467,7 +1467,7 @@ static void iwl_req_fw_callback(const struct firmware *ucode_raw, void *context) ...@@ -1467,7 +1467,7 @@ static void iwl_req_fw_callback(const struct firmware *ucode_raw, void *context)
kmemdup(pieces->dbg_conf_tlv[i], kmemdup(pieces->dbg_conf_tlv[i],
pieces->dbg_conf_tlv_len[i], pieces->dbg_conf_tlv_len[i],
GFP_KERNEL); GFP_KERNEL);
if (!pieces->dbg_conf_tlv[i]) if (!drv->fw.dbg.conf_tlv[i])
goto out_free_fw; goto out_free_fw;
} }
} }
......
...@@ -532,8 +532,7 @@ static struct ieee80211_sband_iftype_data iwl_he_capa[] = { ...@@ -532,8 +532,7 @@ static struct ieee80211_sband_iftype_data iwl_he_capa[] = {
IEEE80211_HE_MAC_CAP1_TF_MAC_PAD_DUR_16US | IEEE80211_HE_MAC_CAP1_TF_MAC_PAD_DUR_16US |
IEEE80211_HE_MAC_CAP1_MULTI_TID_AGG_RX_QOS_8, IEEE80211_HE_MAC_CAP1_MULTI_TID_AGG_RX_QOS_8,
.mac_cap_info[2] = .mac_cap_info[2] =
IEEE80211_HE_MAC_CAP2_32BIT_BA_BITMAP | IEEE80211_HE_MAC_CAP2_32BIT_BA_BITMAP,
IEEE80211_HE_MAC_CAP2_ACK_EN,
.mac_cap_info[3] = .mac_cap_info[3] =
IEEE80211_HE_MAC_CAP3_OMI_CONTROL | IEEE80211_HE_MAC_CAP3_OMI_CONTROL |
IEEE80211_HE_MAC_CAP3_MAX_AMPDU_LEN_EXP_VHT_2, IEEE80211_HE_MAC_CAP3_MAX_AMPDU_LEN_EXP_VHT_2,
...@@ -617,8 +616,7 @@ static struct ieee80211_sband_iftype_data iwl_he_capa[] = { ...@@ -617,8 +616,7 @@ static struct ieee80211_sband_iftype_data iwl_he_capa[] = {
IEEE80211_HE_MAC_CAP1_TF_MAC_PAD_DUR_16US | IEEE80211_HE_MAC_CAP1_TF_MAC_PAD_DUR_16US |
IEEE80211_HE_MAC_CAP1_MULTI_TID_AGG_RX_QOS_8, IEEE80211_HE_MAC_CAP1_MULTI_TID_AGG_RX_QOS_8,
.mac_cap_info[2] = .mac_cap_info[2] =
IEEE80211_HE_MAC_CAP2_BSR | IEEE80211_HE_MAC_CAP2_BSR,
IEEE80211_HE_MAC_CAP2_ACK_EN,
.mac_cap_info[3] = .mac_cap_info[3] =
IEEE80211_HE_MAC_CAP3_OMI_CONTROL | IEEE80211_HE_MAC_CAP3_OMI_CONTROL |
IEEE80211_HE_MAC_CAP3_MAX_AMPDU_LEN_EXP_VHT_2, IEEE80211_HE_MAC_CAP3_MAX_AMPDU_LEN_EXP_VHT_2,
......
...@@ -727,6 +727,7 @@ int iwl_mvm_sar_select_profile(struct iwl_mvm *mvm, int prof_a, int prof_b) ...@@ -727,6 +727,7 @@ int iwl_mvm_sar_select_profile(struct iwl_mvm *mvm, int prof_a, int prof_b)
struct iwl_dev_tx_power_cmd_v4 v4; struct iwl_dev_tx_power_cmd_v4 v4;
} cmd; } cmd;
int ret;
u16 len = 0; u16 len = 0;
cmd.v5.v3.set_mode = cpu_to_le32(IWL_TX_POWER_MODE_SET_CHAINS); cmd.v5.v3.set_mode = cpu_to_le32(IWL_TX_POWER_MODE_SET_CHAINS);
...@@ -741,9 +742,14 @@ int iwl_mvm_sar_select_profile(struct iwl_mvm *mvm, int prof_a, int prof_b) ...@@ -741,9 +742,14 @@ int iwl_mvm_sar_select_profile(struct iwl_mvm *mvm, int prof_a, int prof_b)
len = sizeof(cmd.v4.v3); len = sizeof(cmd.v4.v3);
if (iwl_sar_select_profile(&mvm->fwrt, cmd.v5.v3.per_chain_restriction, ret = iwl_sar_select_profile(&mvm->fwrt,
prof_a, prof_b)) cmd.v5.v3.per_chain_restriction,
return -ENOENT; prof_a, prof_b);
/* return on error or if the profile is disabled (positive number) */
if (ret)
return ret;
IWL_DEBUG_RADIO(mvm, "Sending REDUCE_TX_POWER_CMD per chain\n"); IWL_DEBUG_RADIO(mvm, "Sending REDUCE_TX_POWER_CMD per chain\n");
return iwl_mvm_send_cmd_pdu(mvm, REDUCE_TX_POWER_CMD, 0, len, &cmd); return iwl_mvm_send_cmd_pdu(mvm, REDUCE_TX_POWER_CMD, 0, len, &cmd);
} }
...@@ -1034,16 +1040,7 @@ static int iwl_mvm_sar_init(struct iwl_mvm *mvm) ...@@ -1034,16 +1040,7 @@ static int iwl_mvm_sar_init(struct iwl_mvm *mvm)
"EWRD SAR BIOS table invalid or unavailable. (%d)\n", "EWRD SAR BIOS table invalid or unavailable. (%d)\n",
ret); ret);
ret = iwl_mvm_sar_select_profile(mvm, 1, 1); return iwl_mvm_sar_select_profile(mvm, 1, 1);
/*
* If we don't have profile 0 from BIOS, just skip it. This
* means that SAR Geo will not be enabled either, even if we
* have other valid profiles.
*/
if (ret == -ENOENT)
return 1;
return ret;
} }
static int iwl_mvm_load_rt_fw(struct iwl_mvm *mvm) static int iwl_mvm_load_rt_fw(struct iwl_mvm *mvm)
...@@ -1272,7 +1269,7 @@ int iwl_mvm_up(struct iwl_mvm *mvm) ...@@ -1272,7 +1269,7 @@ int iwl_mvm_up(struct iwl_mvm *mvm)
ret = iwl_mvm_sar_init(mvm); ret = iwl_mvm_sar_init(mvm);
if (ret == 0) { if (ret == 0) {
ret = iwl_mvm_sar_geo_init(mvm); ret = iwl_mvm_sar_geo_init(mvm);
} else if (ret > 0 && !iwl_sar_get_wgds_table(&mvm->fwrt)) { } else if (ret == -ENOENT && !iwl_sar_get_wgds_table(&mvm->fwrt)) {
/* /*
* If basic SAR is not available, we check for WGDS, * If basic SAR is not available, we check for WGDS,
* which should *not* be available either. If it is * which should *not* be available either. If it is
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved. * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved.
* Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH
* Copyright(c) 2016 - 2017 Intel Deutschland GmbH * Copyright(c) 2016 - 2017 Intel Deutschland GmbH
* Copyright(c) 2018 - 2019 Intel Corporation * Copyright(c) 2018 - 2020 Intel Corporation
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of version 2 of the GNU General Public License as * it under the terms of version 2 of the GNU General Public License as
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
* Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved. * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved.
* Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH
* Copyright(c) 2016 - 2017 Intel Deutschland GmbH * Copyright(c) 2016 - 2017 Intel Deutschland GmbH
* Copyright(c) 2018 - 2019 Intel Corporation * Copyright(c) 2018 - 2020 Intel Corporation
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
...@@ -566,6 +566,7 @@ void iwl_mvm_rx_rx_mpdu(struct iwl_mvm *mvm, struct napi_struct *napi, ...@@ -566,6 +566,7 @@ void iwl_mvm_rx_rx_mpdu(struct iwl_mvm *mvm, struct napi_struct *napi,
struct iwl_mvm_stat_data { struct iwl_mvm_stat_data {
struct iwl_mvm *mvm; struct iwl_mvm *mvm;
__le32 flags;
__le32 mac_id; __le32 mac_id;
u8 beacon_filter_average_energy; u8 beacon_filter_average_energy;
void *general; void *general;
...@@ -606,6 +607,13 @@ static void iwl_mvm_stat_iterator(void *_data, u8 *mac, ...@@ -606,6 +607,13 @@ static void iwl_mvm_stat_iterator(void *_data, u8 *mac,
-general->beacon_average_energy[vif_id]; -general->beacon_average_energy[vif_id];
} }
/* make sure that beacon statistics don't go backwards with TCM
* request to clear statistics
*/
if (le32_to_cpu(data->flags) & IWL_STATISTICS_REPLY_FLG_CLEAR)
mvmvif->beacon_stats.accu_num_beacons +=
mvmvif->beacon_stats.num_beacons;
if (mvmvif->id != id) if (mvmvif->id != id)
return; return;
...@@ -763,6 +771,7 @@ void iwl_mvm_handle_rx_statistics(struct iwl_mvm *mvm, ...@@ -763,6 +771,7 @@ void iwl_mvm_handle_rx_statistics(struct iwl_mvm *mvm,
flags = stats->flag; flags = stats->flag;
} }
data.flags = flags;
iwl_mvm_rx_stats_check_trigger(mvm, pkt); iwl_mvm_rx_stats_check_trigger(mvm, pkt);
......
...@@ -722,6 +722,11 @@ static int iwl_mvm_find_free_queue(struct iwl_mvm *mvm, u8 sta_id, ...@@ -722,6 +722,11 @@ static int iwl_mvm_find_free_queue(struct iwl_mvm *mvm, u8 sta_id,
lockdep_assert_held(&mvm->mutex); lockdep_assert_held(&mvm->mutex);
if (WARN(maxq >= mvm->trans->trans_cfg->base_params->num_of_queues,
"max queue %d >= num_of_queues (%d)", maxq,
mvm->trans->trans_cfg->base_params->num_of_queues))
maxq = mvm->trans->trans_cfg->base_params->num_of_queues - 1;
/* This should not be hit with new TX path */ /* This should not be hit with new TX path */
if (WARN_ON(iwl_mvm_has_new_tx_api(mvm))) if (WARN_ON(iwl_mvm_has_new_tx_api(mvm)))
return -ENOSPC; return -ENOSPC;
...@@ -1164,9 +1169,9 @@ static int iwl_mvm_inactivity_check(struct iwl_mvm *mvm, u8 alloc_for_sta) ...@@ -1164,9 +1169,9 @@ static int iwl_mvm_inactivity_check(struct iwl_mvm *mvm, u8 alloc_for_sta)
inactive_tid_bitmap, inactive_tid_bitmap,
&unshare_queues, &unshare_queues,
&changetid_queues); &changetid_queues);
if (ret >= 0 && free_queue < 0) { if (ret && free_queue < 0) {
queue_owner = sta; queue_owner = sta;
free_queue = ret; free_queue = i;
} }
/* only unlock sta lock - we still need the queue info lock */ /* only unlock sta lock - we still need the queue info lock */
spin_unlock_bh(&mvmsta->lock); spin_unlock_bh(&mvmsta->lock);
......
...@@ -129,6 +129,18 @@ int iwl_pcie_ctxt_info_gen3_init(struct iwl_trans *trans, ...@@ -129,6 +129,18 @@ int iwl_pcie_ctxt_info_gen3_init(struct iwl_trans *trans,
int cmdq_size = max_t(u32, IWL_CMD_QUEUE_SIZE, int cmdq_size = max_t(u32, IWL_CMD_QUEUE_SIZE,
trans->cfg->min_txq_size); trans->cfg->min_txq_size);
switch (trans_pcie->rx_buf_size) {
case IWL_AMSDU_DEF:
return -EINVAL;
case IWL_AMSDU_2K:
break;
case IWL_AMSDU_4K:
case IWL_AMSDU_8K:
case IWL_AMSDU_12K:
control_flags |= IWL_PRPH_SCRATCH_RB_SIZE_4K;
break;
}
/* Allocate prph scratch */ /* Allocate prph scratch */
prph_scratch = dma_alloc_coherent(trans->dev, sizeof(*prph_scratch), prph_scratch = dma_alloc_coherent(trans->dev, sizeof(*prph_scratch),
&trans_pcie->prph_scratch_dma_addr, &trans_pcie->prph_scratch_dma_addr,
...@@ -143,10 +155,8 @@ int iwl_pcie_ctxt_info_gen3_init(struct iwl_trans *trans, ...@@ -143,10 +155,8 @@ int iwl_pcie_ctxt_info_gen3_init(struct iwl_trans *trans,
cpu_to_le16((u16)iwl_read32(trans, CSR_HW_REV)); cpu_to_le16((u16)iwl_read32(trans, CSR_HW_REV));
prph_sc_ctrl->version.size = cpu_to_le16(sizeof(*prph_scratch) / 4); prph_sc_ctrl->version.size = cpu_to_le16(sizeof(*prph_scratch) / 4);
control_flags = IWL_PRPH_SCRATCH_RB_SIZE_4K | control_flags |= IWL_PRPH_SCRATCH_MTR_MODE;
IWL_PRPH_SCRATCH_MTR_MODE | control_flags |= IWL_PRPH_MTR_FORMAT_256B & IWL_PRPH_SCRATCH_MTR_FORMAT;
(IWL_PRPH_MTR_FORMAT_256B &
IWL_PRPH_SCRATCH_MTR_FORMAT);
/* initialize RX default queue */ /* initialize RX default queue */
prph_sc_ctrl->rbd_cfg.free_rbd_addr = prph_sc_ctrl->rbd_cfg.free_rbd_addr =
......
...@@ -1418,6 +1418,9 @@ void iwl_trans_pcie_dyn_txq_free(struct iwl_trans *trans, int queue) ...@@ -1418,6 +1418,9 @@ void iwl_trans_pcie_dyn_txq_free(struct iwl_trans *trans, int queue)
iwl_pcie_gen2_txq_unmap(trans, queue); iwl_pcie_gen2_txq_unmap(trans, queue);
iwl_pcie_gen2_txq_free_memory(trans, trans_pcie->txq[queue]);
trans_pcie->txq[queue] = NULL;
IWL_DEBUG_TX_QUEUES(trans, "Deactivate queue %d\n", queue); IWL_DEBUG_TX_QUEUES(trans, "Deactivate queue %d\n", queue);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment