The removed patches were applied upstream.
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
PKG_NAME:=mac80211
-PKG_VERSION:=5.15.74-1
+PKG_VERSION:=5.15.81-1
PKG_RELEASE:=1
-PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v5.15.74/
-PKG_HASH:=98098d0cab24cc76a04db738dc746a0c8d38d180398805481224f141cca06423
+PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v5.15.81/
+PKG_HASH:=5227d3c35ccebacfaee6b8180b3a87b9910f3c94ee768ebc5c0fef3c86b6146d
PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/backports-$(PKG_VERSION)
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
-@@ -3309,6 +3309,8 @@ void regulatory_hint_country_ie(struct w
+@@ -3315,6 +3315,8 @@ void regulatory_hint_country_ie(struct w
enum environment_cap env = ENVIRON_ANY;
struct regulatory_request *request = NULL, *lr;
/* IE len must be evenly divisible by 2 */
if (country_ie_len & 0x01)
return;
-@@ -3560,6 +3562,7 @@ static bool is_wiphy_all_set_reg_flag(en
+@@ -3566,6 +3568,7 @@ static bool is_wiphy_all_set_reg_flag(en
void regulatory_hint_disconnect(void)
{
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
-@@ -3710,6 +3710,9 @@ ath10k_mac_tx_h_get_txmode(struct ath10k
+@@ -3717,6 +3717,9 @@ ath10k_mac_tx_h_get_txmode(struct ath10k
const struct ath10k_skb_cb *skb_cb = ATH10K_SKB_CB(skb);
__le16 fc = hdr->frame_control;
if (!vif || vif->type == NL80211_IFTYPE_MONITOR)
return ATH10K_HW_TXRX_RAW;
-@@ -3870,6 +3873,12 @@ static void ath10k_mac_tx_h_fill_cb(stru
+@@ -3877,6 +3880,12 @@ static void ath10k_mac_tx_h_fill_cb(stru
bool noack = false;
cb->flags = 0;
if (!ath10k_tx_h_use_hwcrypto(vif, skb))
cb->flags |= ATH10K_SKB_F_NO_HWCRYPT;
-@@ -3908,6 +3917,7 @@ static void ath10k_mac_tx_h_fill_cb(stru
+@@ -3915,6 +3924,7 @@ static void ath10k_mac_tx_h_fill_cb(stru
cb->flags |= ATH10K_SKB_F_RAW_TX;
}
cb->vif = vif;
cb->txq = txq;
cb->airtime_est = airtime;
-@@ -4031,7 +4041,11 @@ static int ath10k_mac_tx(struct ath10k *
+@@ -4038,7 +4048,11 @@ static int ath10k_mac_tx(struct ath10k *
ath10k_tx_h_seq_no(vif, skb);
break;
case ATH10K_HW_TXRX_ETHERNET:
break;
case ATH10K_HW_TXRX_RAW:
if (!test_bit(ATH10K_FLAG_RAW_MODE, &ar->dev_flags) &&
-@@ -4643,12 +4657,10 @@ static void ath10k_mac_op_tx(struct ieee
+@@ -4650,12 +4664,10 @@ static void ath10k_mac_op_tx(struct ieee
struct ieee80211_vif *vif = info->control.vif;
struct ieee80211_sta *sta = control->sta;
struct ieee80211_txq *txq = NULL;
int ret;
u16 airtime;
-@@ -4662,8 +4674,14 @@ static void ath10k_mac_op_tx(struct ieee
+@@ -4669,8 +4681,14 @@ static void ath10k_mac_op_tx(struct ieee
is_mgmt = (txpath == ATH10K_MAC_TX_HTT_MGMT);
if (is_htt) {
ret = ath10k_htt_tx_inc_pending(htt);
if (ret) {
-@@ -5463,6 +5481,30 @@ static int ath10k_mac_set_txbf_conf(stru
+@@ -5470,6 +5488,30 @@ static int ath10k_mac_set_txbf_conf(stru
ar->wmi.vdev_param->txbf, value);
}
/*
* TODO:
* Figure out how to handle WMI_VDEV_SUBTYPE_P2P_DEVICE,
-@@ -5672,15 +5714,7 @@ static int ath10k_add_interface(struct i
+@@ -5679,15 +5721,7 @@ static int ath10k_add_interface(struct i
arvif->def_wep_key_idx = -1;
/* Configuring number of spatial stream for monitor interface is causing
* target assert in qca9888 and qca6174.
-@@ -9368,6 +9402,7 @@ static const struct ieee80211_ops ath10k
+@@ -9372,6 +9406,7 @@ static const struct ieee80211_ops ath10k
.stop = ath10k_stop,
.config = ath10k_config,
.add_interface = ath10k_add_interface,
.remove_interface = ath10k_remove_interface,
.configure_filter = ath10k_configure_filter,
.bss_info_changed = ath10k_bss_info_changed,
-@@ -10037,6 +10072,12 @@ int ath10k_mac_register(struct ath10k *a
+@@ -10041,6 +10076,12 @@ int ath10k_mac_register(struct ath10k *a
if (test_bit(WMI_SERVICE_TDLS_UAPSD_BUFFER_STA, ar->wmi.svc_map))
ieee80211_hw_set(ar->hw, SUPPORTS_TDLS_BUFFER_STA);
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
-@@ -9894,6 +9894,21 @@ static int ath10k_mac_init_rd(struct ath
+@@ -9898,6 +9898,21 @@ static int ath10k_mac_init_rd(struct ath
return 0;
}
int ath10k_mac_register(struct ath10k *ar)
{
static const u32 cipher_suites[] = {
-@@ -10252,6 +10267,12 @@ int ath10k_mac_register(struct ath10k *a
+@@ -10256,6 +10271,12 @@ int ath10k_mac_register(struct ath10k *a
ar->hw->weight_multiplier = ATH10K_AIRTIME_WEIGHT_MULTIPLIER;
if (ret)
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
-@@ -10269,7 +10269,7 @@ int ath10k_mac_register(struct ath10k *a
+@@ -10273,7 +10273,7 @@ int ath10k_mac_register(struct ath10k *a
ar->hw->weight_multiplier = ATH10K_AIRTIME_WEIGHT_MULTIPLIER;
#ifdef CPTCFG_MAC80211_LEDS
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
-@@ -1021,6 +1021,40 @@ static inline int ath10k_vdev_setup_sync
+@@ -1028,6 +1028,40 @@ static inline int ath10k_vdev_setup_sync
return ar->last_wmi_vdev_start_status;
}
static int ath10k_monitor_vdev_start(struct ath10k *ar, int vdev_id)
{
struct cfg80211_chan_def *chandef = NULL;
-@@ -1053,7 +1087,8 @@ static int ath10k_monitor_vdev_start(str
+@@ -1060,7 +1094,8 @@ static int ath10k_monitor_vdev_start(str
arg.channel.min_power = 0;
arg.channel.max_power = channel->max_power * 2;
arg.channel.max_reg_power = channel->max_reg_power * 2;
reinit_completion(&ar->vdev_setup_done);
reinit_completion(&ar->vdev_delete_done);
-@@ -1499,7 +1534,8 @@ static int ath10k_vdev_start_restart(str
+@@ -1506,7 +1541,8 @@ static int ath10k_vdev_start_restart(str
arg.channel.min_power = 0;
arg.channel.max_power = chandef->chan->max_power * 2;
arg.channel.max_reg_power = chandef->chan->max_reg_power * 2;
if (arvif->vdev_type == WMI_VDEV_TYPE_AP) {
arg.ssid = arvif->u.ap.ssid;
-@@ -3427,7 +3463,8 @@ static int ath10k_update_channel_list(st
+@@ -3434,7 +3470,8 @@ static int ath10k_update_channel_list(st
ch->min_power = 0;
ch->max_power = channel->max_power * 2;
ch->max_reg_power = channel->max_reg_power * 2;
#include <net/cfg80211.h>
#include <net/rtnetlink.h>
#include <net/addrconf.h>
-@@ -1226,7 +1227,8 @@ static int brcmf_bus_started(struct brcm
+@@ -1227,7 +1228,8 @@ static int brcmf_bus_started(struct brcm
brcmf_dbg(TRACE, "\n");
/* add primary networking interface */
.add_key = brcmf_cfg80211_add_key,
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
-@@ -1363,6 +1363,8 @@ int brcmf_attach(struct device *dev)
+@@ -1364,6 +1364,8 @@ int brcmf_attach(struct device *dev)
/* Link to bus module */
drvr->hdrlen = 0;
/* Attach and link in the protocol */
ret = brcmf_proto_attach(drvr);
-@@ -1445,6 +1447,12 @@ void brcmf_detach(struct device *dev)
+@@ -1446,6 +1448,12 @@ void brcmf_detach(struct device *dev)
if (drvr == NULL)
return;
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
-@@ -9435,6 +9435,8 @@ static int rt2800_init_eeprom(struct rt2
+@@ -9461,6 +9461,8 @@ static int rt2800_init_eeprom(struct rt2
rf = RF3853;
else if (rt2x00_rt(rt2x00dev, RT5350))
rf = RF5350;
* EEPROM LNA
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
-@@ -4368,6 +4368,43 @@ static void rt2800_config_channel(struct
- rt2800_iq_calibrate(rt2x00dev, rf->channel);
+@@ -4372,6 +4372,43 @@ static void rt2800_config_channel(struct
+ rt2800_iq_calibrate(rt2x00dev, rf->channel);
}
+ if (rt2x00_rt(rt2x00dev, RT6352)) {
bbp = rt2800_bbp_read(rt2x00dev, 4);
rt2x00_set_field8(&bbp, BBP4_BANDWIDTH, 2 * conf_is_ht40(conf));
rt2800_bbp_write(rt2x00dev, 4, bbp);
-@@ -9566,7 +9603,8 @@ static int rt2800_init_eeprom(struct rt2
+@@ -9592,7 +9629,8 @@ static int rt2800_init_eeprom(struct rt2
*/
eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1);
if (rt2x00_get_field16(eeprom,
EEPROM_NIC_CONF1_EXTERNAL_TX0_PA_3352))
__set_bit(CAPABILITY_EXTERNAL_PA_TX0,
-@@ -9577,6 +9615,18 @@ static int rt2800_init_eeprom(struct rt2
+@@ -9603,6 +9641,18 @@ static int rt2800_init_eeprom(struct rt2
&rt2x00dev->cap_flags);
}
if (chan->center_freq > 2457) {
bbp = rt2800_bbp_read(rt2x00dev, 30);
-@@ -6249,46 +6282,6 @@ static int rt2800_init_registers(struct
+@@ -6275,46 +6308,6 @@ static int rt2800_init_registers(struct
return 0;
}
static void rt2800_bbp4_mac_if_ctrl(struct rt2x00_dev *rt2x00dev)
{
-@@ -9110,7 +9103,7 @@ int rt2800_enable_radio(struct rt2x00_de
+@@ -9136,7 +9129,7 @@ int rt2800_enable_radio(struct rt2x00_de
/*
* Wait BBP/RF to wake up.
*/
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
-@@ -8428,6 +8428,53 @@ static void rt2800_init_rfcsr_5592(struc
+@@ -8454,6 +8454,53 @@ static void rt2800_init_rfcsr_5592(struc
rt2800_led_open_drain_enable(rt2x00dev);
}
static void rt2800_bbp_core_soft_reset(struct rt2x00_dev *rt2x00dev,
bool set_bw, bool is_ht40)
{
-@@ -9035,6 +9082,7 @@ static void rt2800_init_rfcsr_6352(struc
+@@ -9061,6 +9108,7 @@ static void rt2800_init_rfcsr_6352(struc
rt2800_rfcsr_write_dccal(rt2x00dev, 5, 0x00);
rt2800_rfcsr_write_dccal(rt2x00dev, 17, 0x7C);
* PWR_PIN_CFG:
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
-@@ -8475,6 +8475,138 @@ static void rt2800_rf_self_txdc_cal(stru
+@@ -8501,6 +8501,138 @@ static void rt2800_rf_self_txdc_cal(stru
rt2800_register_write(rt2x00dev, RF_BYPASS2, mac052c);
}
static void rt2800_bbp_core_soft_reset(struct rt2x00_dev *rt2x00dev,
bool set_bw, bool is_ht40)
{
-@@ -9082,6 +9214,7 @@ static void rt2800_init_rfcsr_6352(struc
+@@ -9108,6 +9240,7 @@ static void rt2800_init_rfcsr_6352(struc
rt2800_rfcsr_write_dccal(rt2x00dev, 5, 0x00);
rt2800_rfcsr_write_dccal(rt2x00dev, 17, 0x7C);
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
-@@ -8607,6 +8607,65 @@ static void rt2800_r_calibration(struct
+@@ -8633,6 +8633,65 @@ static void rt2800_r_calibration(struct
rt2800_register_write(rt2x00dev, PWR_PIN_CFG, MAC_PWR_PIN_CFG);
}
static void rt2800_bbp_core_soft_reset(struct rt2x00_dev *rt2x00dev,
bool set_bw, bool is_ht40)
{
-@@ -9216,6 +9275,7 @@ static void rt2800_init_rfcsr_6352(struc
+@@ -9242,6 +9301,7 @@ static void rt2800_init_rfcsr_6352(struc
rt2800_r_calibration(rt2x00dev);
rt2800_rf_self_txdc_cal(rt2x00dev);
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
-@@ -8666,6 +8666,380 @@ static void rt2800_rxdcoc_calibration(st
+@@ -8692,6 +8692,380 @@ static void rt2800_rxdcoc_calibration(st
rt2800_rfcsr_write_bank(rt2x00dev, 0, 2, saverfb0r2);
}
static void rt2800_bbp_core_soft_reset(struct rt2x00_dev *rt2x00dev,
bool set_bw, bool is_ht40)
{
-@@ -9278,6 +9652,7 @@ static void rt2800_init_rfcsr_6352(struc
+@@ -9304,6 +9678,7 @@ static void rt2800_init_rfcsr_6352(struc
rt2800_rxdcoc_calibration(rt2x00dev);
rt2800_bw_filter_calibration(rt2x00dev, true);
rt2800_bw_filter_calibration(rt2x00dev, false);
+++ /dev/null
-From patchwork Sat Sep 17 20:28:29 2022
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-X-Patchwork-Submitter: Daniel Golle <daniel@makrotopia.org>
-X-Patchwork-Id: 12979250
-X-Patchwork-Delegate: kvalo@adurom.com
-Return-Path: <linux-wireless-owner@kernel.org>
-Date: Sat, 17 Sep 2022 21:28:29 +0100
-From: Daniel Golle <daniel@makrotopia.org>
-To: linux-wireless@vger.kernel.org, Stanislaw Gruszka <stf_xl@wp.pl>,
- Helmut Schaa <helmut.schaa@googlemail.com>
-Cc: Kalle Valo <kvalo@kernel.org>,
- "David S. Miller" <davem@davemloft.net>,
- Eric Dumazet <edumazet@google.com>,
- Jakub Kicinski <kuba@kernel.org>,
- Paolo Abeni <pabeni@redhat.com>,
- Johannes Berg <johannes.berg@intel.com>
-Subject: [PATCH v3 09/16] rt2x00: don't run Rt5592 IQ calibration on MT7620
-Message-ID:
- <31a1c34ddbd296b82f38c18c9ae7339059215fdc.1663445157.git.daniel@makrotopia.org>
-References: <cover.1663445157.git.daniel@makrotopia.org>
-MIME-Version: 1.0
-Content-Disposition: inline
-In-Reply-To: <cover.1663445157.git.daniel@makrotopia.org>
-Precedence: bulk
-List-ID: <linux-wireless.vger.kernel.org>
-X-Mailing-List: linux-wireless@vger.kernel.org
-
-The function rt2800_iq_calibrate is intended for Rt5592 only.
-Don't call it for MT7620 which has it's own calibration functions.
-
-Reported-by: Serge Vasilugin <vasilugin@yandex.ru>
-Signed-off-by: Daniel Golle <daniel@makrotopia.org>
----
-v2: test for RT5592 instead of !RT6352
-
- drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
-+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
-@@ -4398,7 +4398,8 @@ static void rt2800_config_channel(struct
- reg = (rf->channel <= 14 ? 0x1c : 0x24) + 2*rt2x00dev->lna_gain;
- rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, reg);
-
-- rt2800_iq_calibrate(rt2x00dev, rf->channel);
-+ if (rt2x00_rt(rt2x00dev, RT5592))
-+ rt2800_iq_calibrate(rt2x00dev, rf->channel);
- }
-
- if (rt2x00_rt(rt2x00dev, RT6352)) {
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
-@@ -9041,6 +9041,907 @@ restore_value:
+@@ -9066,6 +9066,907 @@ restore_value:
rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, savemacsysctrl);
}
static void rt2800_bbp_core_soft_reset(struct rt2x00_dev *rt2x00dev,
bool set_bw, bool is_ht40)
{
-@@ -9653,6 +10554,7 @@ static void rt2800_init_rfcsr_6352(struc
+@@ -9678,6 +10579,7 @@ static void rt2800_init_rfcsr_6352(struc
rt2800_rxdcoc_calibration(rt2x00dev);
rt2800_bw_filter_calibration(rt2x00dev, true);
rt2800_bw_filter_calibration(rt2x00dev, false);
static u8 rt2800_rfcsr_read(struct rt2x00_dev *rt2x00dev,
const unsigned int word)
{
-@@ -6947,26 +6967,6 @@ static void rt2800_init_bbp_5592(struct
+@@ -6972,26 +6992,6 @@ static void rt2800_init_bbp_5592(struct
rt2800_bbp_write(rt2x00dev, 103, 0xc0);
}
+++ /dev/null
-From patchwork Sat Sep 17 20:29:26 2022
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-X-Patchwork-Submitter: Daniel Golle <daniel@makrotopia.org>
-X-Patchwork-Id: 12979254
-X-Patchwork-Delegate: kvalo@adurom.com
-Return-Path: <linux-wireless-owner@kernel.org>
-Date: Sat, 17 Sep 2022 21:29:26 +0100
-From: Daniel Golle <daniel@makrotopia.org>
-To: linux-wireless@vger.kernel.org, Stanislaw Gruszka <stf_xl@wp.pl>,
- Helmut Schaa <helmut.schaa@googlemail.com>
-Cc: Kalle Valo <kvalo@kernel.org>,
- "David S. Miller" <davem@davemloft.net>,
- Eric Dumazet <edumazet@google.com>,
- Jakub Kicinski <kuba@kernel.org>,
- Paolo Abeni <pabeni@redhat.com>,
- Johannes Berg <johannes.berg@intel.com>
-Subject: [PATCH v3 13/16] rt2x00: set correct TX_SW_CFG1 MAC register for
- MT7620
-Message-ID:
- <4be38975ce600a34249e12d09a3cb758c6e71071.1663445157.git.daniel@makrotopia.org>
-References: <cover.1663445157.git.daniel@makrotopia.org>
-MIME-Version: 1.0
-Content-Disposition: inline
-In-Reply-To: <cover.1663445157.git.daniel@makrotopia.org>
-Precedence: bulk
-List-ID: <linux-wireless.vger.kernel.org>
-X-Mailing-List: linux-wireless@vger.kernel.org
-
-Set correct TX_SW_CFG1 MAC register as it is done also in v3 of the
-vendor driver[1].
-
-[1]: https://gitlab.com/dm38/padavan-ng/-/blob/master/trunk/proprietary/rt_wifi/rtpci/3.0.X.X/mt76x2/chips/rt6352.c#L531
-Reported-by: Serge Vasilugin <vasilugin@yandex.ru>
-Signed-off-by: Daniel Golle <daniel@makrotopia.org>
-Acked-by: Stanislaw Gruszka <stf_xl@wp.pl>
----
- drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
-+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
-@@ -5966,7 +5966,7 @@ static int rt2800_init_registers(struct
- rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000404);
- } else if (rt2x00_rt(rt2x00dev, RT6352)) {
- rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000401);
-- rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x000C0000);
-+ rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x000C0001);
- rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000);
- rt2800_register_write(rt2x00dev, TX_ALC_VGA3, 0x00000000);
- rt2800_register_write(rt2x00dev, TX0_BB_GAIN_ATTEN, 0x0);
+++ /dev/null
-From patchwork Sat Sep 17 20:29:40 2022
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-X-Patchwork-Submitter: Daniel Golle <daniel@makrotopia.org>
-X-Patchwork-Id: 12979255
-X-Patchwork-Delegate: kvalo@adurom.com
-Return-Path: <linux-wireless-owner@kernel.org>
-Date: Sat, 17 Sep 2022 21:29:40 +0100
-From: Daniel Golle <daniel@makrotopia.org>
-To: linux-wireless@vger.kernel.org, Stanislaw Gruszka <stf_xl@wp.pl>,
- Helmut Schaa <helmut.schaa@googlemail.com>
-Cc: Kalle Valo <kvalo@kernel.org>,
- "David S. Miller" <davem@davemloft.net>,
- Eric Dumazet <edumazet@google.com>,
- Jakub Kicinski <kuba@kernel.org>,
- Paolo Abeni <pabeni@redhat.com>,
- Johannes Berg <johannes.berg@intel.com>
-Subject: [PATCH v3 14/16] rt2x00: set VGC gain for both chains of MT7620
-Message-ID:
- <29e161397e5c9d9399da0fe87d44458aa2b90a78.1663445157.git.daniel@makrotopia.org>
-References: <cover.1663445157.git.daniel@makrotopia.org>
-MIME-Version: 1.0
-Content-Disposition: inline
-In-Reply-To: <cover.1663445157.git.daniel@makrotopia.org>
-Precedence: bulk
-List-ID: <linux-wireless.vger.kernel.org>
-X-Mailing-List: linux-wireless@vger.kernel.org
-
-Set bbp66 for all chains of the MT7620.
-
-Reported-by: Serge Vasilugin <vasilugin@yandex.ru>
-Signed-off-by: Daniel Golle <daniel@makrotopia.org>
-Acked-by: Stanislaw Gruszka <stf_xl@wp.pl>
----
- drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
-+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
-@@ -5743,7 +5743,8 @@ static inline void rt2800_set_vgc(struct
- if (qual->vgc_level != vgc_level) {
- if (rt2x00_rt(rt2x00dev, RT3572) ||
- rt2x00_rt(rt2x00dev, RT3593) ||
-- rt2x00_rt(rt2x00dev, RT3883)) {
-+ rt2x00_rt(rt2x00dev, RT3883) ||
-+ rt2x00_rt(rt2x00dev, RT6352)) {
- rt2800_bbp_write_with_rx_chain(rt2x00dev, 66,
- vgc_level);
- } else if (rt2x00_rt(rt2x00dev, RT5592)) {
+++ /dev/null
-From patchwork Sat Sep 17 20:29:55 2022
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-X-Patchwork-Submitter: Daniel Golle <daniel@makrotopia.org>
-X-Patchwork-Id: 12979256
-X-Patchwork-Delegate: kvalo@adurom.com
-Return-Path: <linux-wireless-owner@kernel.org>
-Date: Sat, 17 Sep 2022 21:29:55 +0100
-From: Daniel Golle <daniel@makrotopia.org>
-To: linux-wireless@vger.kernel.org, Stanislaw Gruszka <stf_xl@wp.pl>,
- Helmut Schaa <helmut.schaa@googlemail.com>
-Cc: Kalle Valo <kvalo@kernel.org>,
- "David S. Miller" <davem@davemloft.net>,
- Eric Dumazet <edumazet@google.com>,
- Jakub Kicinski <kuba@kernel.org>,
- Paolo Abeni <pabeni@redhat.com>,
- Johannes Berg <johannes.berg@intel.com>
-Subject: [PATCH v3 15/16] rt2x00: set SoC wmac clock register
-Message-ID:
- <3e275d259f476f597dab91a9c395015ef3fe3284.1663445157.git.daniel@makrotopia.org>
-References: <cover.1663445157.git.daniel@makrotopia.org>
-MIME-Version: 1.0
-Content-Disposition: inline
-In-Reply-To: <cover.1663445157.git.daniel@makrotopia.org>
-Precedence: bulk
-List-ID: <linux-wireless.vger.kernel.org>
-X-Mailing-List: linux-wireless@vger.kernel.org
-
-Instead of using the default value 33 (pci), set US_CYC_CNT init based
-on Programming guide:
-If available, set chipset bus clock with fallback to cpu clock/3.
-
-Reported-by: Serge Vasilugin <vasilugin@yandex.ru>
-Signed-off-by: Daniel Golle <daniel@makrotopia.org>
-Acked-by: Stanislaw Gruszka <stf_xl@wp.pl>
----
- .../net/wireless/ralink/rt2x00/rt2800lib.c | 21 +++++++++++++++++++
- 1 file changed, 21 insertions(+)
-
---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
-+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
-@@ -6229,6 +6229,27 @@ static int rt2800_init_registers(struct
- reg = rt2800_register_read(rt2x00dev, US_CYC_CNT);
- rt2x00_set_field32(®, US_CYC_CNT_CLOCK_CYCLE, 125);
- rt2800_register_write(rt2x00dev, US_CYC_CNT, reg);
-+ } else if (rt2x00_is_soc(rt2x00dev)) {
-+ struct clk *clk = clk_get_sys("bus", NULL);
-+ int rate;
-+
-+ if (IS_ERR(clk)) {
-+ clk = clk_get_sys("cpu", NULL);
-+
-+ if (IS_ERR(clk)) {
-+ rate = 125;
-+ } else {
-+ rate = clk_get_rate(clk) / 3000000;
-+ clk_put(clk);
-+ }
-+ } else {
-+ rate = clk_get_rate(clk) / 1000000;
-+ clk_put(clk);
-+ }
-+
-+ reg = rt2800_register_read(rt2x00dev, US_CYC_CNT);
-+ rt2x00_set_field32(®, US_CYC_CNT_CLOCK_CYCLE, rate);
-+ rt2800_register_write(rt2x00dev, US_CYC_CNT, reg);
- }
-
- reg = rt2800_register_read(rt2x00dev, HT_FBK_CFG0);
+++ /dev/null
-From patchwork Sat Sep 17 20:30:09 2022
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-X-Patchwork-Submitter: Daniel Golle <daniel@makrotopia.org>
-X-Patchwork-Id: 12979257
-X-Patchwork-Delegate: kvalo@adurom.com
-Return-Path: <linux-wireless-owner@kernel.org>
-X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
- aws-us-west-2-korg-lkml-1.web.codeaurora.org
-Received: from vger.kernel.org (vger.kernel.org [23.128.96.18])
- by smtp.lore.kernel.org (Postfix) with ESMTP id E9118ECAAA1
- for <linux-wireless@archiver.kernel.org>;
- Sat, 17 Sep 2022 20:30:22 +0000 (UTC)
-Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
- id S229639AbiIQUaV (ORCPT
- <rfc822;linux-wireless@archiver.kernel.org>);
- Sat, 17 Sep 2022 16:30:21 -0400
-Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53912 "EHLO
- lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
- with ESMTP id S229628AbiIQUaT (ORCPT
- <rfc822;linux-wireless@vger.kernel.org>);
- Sat, 17 Sep 2022 16:30:19 -0400
-Received: from fudo.makrotopia.org (fudo.makrotopia.org
- [IPv6:2a07:2ec0:3002::71])
- by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1AEA822B27
- for <linux-wireless@vger.kernel.org>;
- Sat, 17 Sep 2022 13:30:16 -0700 (PDT)
-Received: from local
- by fudo.makrotopia.org with esmtpsa
- (TLS1.3:TLS_AES_256_GCM_SHA384:256)
- (Exim 4.96)
- (envelope-from <daniel@makrotopia.org>)
- id 1oZeS7-0003ra-0k;
- Sat, 17 Sep 2022 22:30:15 +0200
-Date: Sat, 17 Sep 2022 21:30:09 +0100
-From: Daniel Golle <daniel@makrotopia.org>
-To: linux-wireless@vger.kernel.org, Stanislaw Gruszka <stf_xl@wp.pl>,
- Helmut Schaa <helmut.schaa@googlemail.com>
-Cc: Kalle Valo <kvalo@kernel.org>,
- "David S. Miller" <davem@davemloft.net>,
- Eric Dumazet <edumazet@google.com>,
- Jakub Kicinski <kuba@kernel.org>,
- Paolo Abeni <pabeni@redhat.com>,
- Johannes Berg <johannes.berg@intel.com>
-Subject: [PATCH v3 16/16] rt2x00: correctly set BBP register 86 for MT7620
-Message-ID:
- <257267247ee4fa7ebc6a5d0c4948b3f8119c0d77.1663445157.git.daniel@makrotopia.org>
-References: <cover.1663445157.git.daniel@makrotopia.org>
-MIME-Version: 1.0
-Content-Disposition: inline
-In-Reply-To: <cover.1663445157.git.daniel@makrotopia.org>
-Precedence: bulk
-List-ID: <linux-wireless.vger.kernel.org>
-X-Mailing-List: linux-wireless@vger.kernel.org
-
-Instead of 0 set the correct value for BBP register 86 for MT7620.
-
-Reported-by: Serge Vasilugin <vasilugin@yandex.ru>
-Signed-off-by: Daniel Golle <daniel@makrotopia.org>
-Acked-by: Stanislaw Gruszka <stf_xl@wp.pl>
----
- drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
-+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
-@@ -4225,7 +4225,10 @@ static void rt2800_config_channel(struct
- rt2800_bbp_write(rt2x00dev, 62, 0x37 - rt2x00dev->lna_gain);
- rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain);
- rt2800_bbp_write(rt2x00dev, 64, 0x37 - rt2x00dev->lna_gain);
-- rt2800_bbp_write(rt2x00dev, 86, 0);
-+ if (rt2x00_rt(rt2x00dev, RT6352))
-+ rt2800_bbp_write(rt2x00dev, 86, 0x38);
-+ else
-+ rt2800_bbp_write(rt2x00dev, 86, 0);
- }
-
- if (rf->channel <= 14) {
fail_ifa:
#endif
wiphy_unregister(local->hw.wiphy);
-@@ -1371,10 +1371,10 @@ void ieee80211_unregister_hw(struct ieee
+@@ -1373,10 +1373,10 @@ void ieee80211_unregister_hw(struct ieee
tasklet_kill(&local->tx_pending_tasklet);
tasklet_kill(&local->tasklet);
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
-@@ -3003,15 +3003,19 @@ static void mac80211_hwsim_he_capab(stru
+@@ -3008,15 +3008,19 @@ static void mac80211_hwsim_he_capab(stru
{
u16 n_iftype_data;
return;
}
-@@ -3301,6 +3305,12 @@ static int mac80211_hwsim_new_radio(stru
+@@ -3306,6 +3310,12 @@ static int mac80211_hwsim_new_radio(stru
sband->vht_cap.vht_mcs.tx_mcs_map =
sband->vht_cap.vht_mcs.rx_mcs_map;
break;
case NL80211_BAND_S1GHZ:
memcpy(&sband->s1g_cap, &hwsim_s1g_cap,
sizeof(sband->s1g_cap));
-@@ -3311,6 +3321,13 @@ static int mac80211_hwsim_new_radio(stru
+@@ -3316,6 +3326,13 @@ static int mac80211_hwsim_new_radio(stru
continue;
}
sband->ht_cap.ht_supported = true;
sband->ht_cap.cap = IEEE80211_HT_CAP_SUP_WIDTH_20_40 |
IEEE80211_HT_CAP_GRN_FLD |
-@@ -3324,10 +3341,6 @@ static int mac80211_hwsim_new_radio(stru
+@@ -3329,10 +3346,6 @@ static int mac80211_hwsim_new_radio(stru
sband->ht_cap.mcs.rx_mask[0] = 0xff;
sband->ht_cap.mcs.rx_mask[1] = 0xff;
sband->ht_cap.mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED;
struct ieee80211_vif *vif,
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
-@@ -4344,6 +4344,18 @@ out:
+@@ -4341,6 +4341,18 @@ out:
return err;
}
const struct cfg80211_ops mac80211_config_ops = {
.add_virtual_intf = ieee80211_add_iface,
.del_virtual_intf = ieee80211_del_iface,
-@@ -4448,4 +4460,5 @@ const struct cfg80211_ops mac80211_confi
+@@ -4445,4 +4457,5 @@ const struct cfg80211_ops mac80211_confi
.reset_tid_config = ieee80211_reset_tid_config,
.set_sar_specs = ieee80211_set_sar_specs,
.color_change = ieee80211_color_change,
NUM_NL80211_EXT_FEATURES,
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
-@@ -4345,15 +4345,15 @@ out:
+@@ -4342,15 +4342,15 @@ out:
}
static int
}
const struct cfg80211_ops mac80211_config_ops = {
-@@ -4460,5 +4460,5 @@ const struct cfg80211_ops mac80211_confi
+@@ -4457,5 +4457,5 @@ const struct cfg80211_ops mac80211_confi
.reset_tid_config = ieee80211_reset_tid_config,
.set_sar_specs = ieee80211_set_sar_specs,
.color_change = ieee80211_color_change,
return err;
}
*changed |= err;
-@@ -3463,8 +3528,11 @@ static int ieee80211_set_csa_beacon(stru
+@@ -3460,8 +3525,11 @@ static int ieee80211_set_csa_beacon(stru
static void ieee80211_color_change_abort(struct ieee80211_sub_if_data *sdata)
{
sdata->vif.color_change_active = false;
cfg80211_color_change_aborted_notify(sdata->dev);
}
-@@ -4202,8 +4270,11 @@ ieee80211_set_after_color_change_beacon(
+@@ -4199,8 +4267,11 @@ ieee80211_set_after_color_change_beacon(
ret = ieee80211_assign_beacon(sdata, sdata->u.ap.next_beacon,
NULL, NULL);
if (ret < 0)
return ret;
-@@ -4246,7 +4317,11 @@ ieee80211_set_color_change_beacon(struct
+@@ -4243,7 +4314,11 @@ ieee80211_set_color_change_beacon(struct
err = ieee80211_assign_beacon(sdata, ¶ms->beacon_color_change,
NULL, &color_change);
if (err < 0) {
static void ieee80211_rfkill_poll(struct wiphy *wiphy)
{
struct ieee80211_local *local = wiphy_priv(wiphy);
-@@ -4516,6 +4529,7 @@ const struct cfg80211_ops mac80211_confi
+@@ -4513,6 +4526,7 @@ const struct cfg80211_ops mac80211_confi
.set_wiphy_params = ieee80211_set_wiphy_params,
.set_tx_power = ieee80211_set_tx_power,
.get_tx_power = ieee80211_get_tx_power,