* [PATCH 02/11] mt76x02: add hrtimer for pre TBTT for USB
From: Stanislaw Gruszka @ 2019-03-04 9:48 UTC (permalink / raw)
Cc: Felix Fietkau, linux-wireless, Lorenzo Bianconi
In-Reply-To: <1551692896-7062-1-git-send-email-sgruszka@redhat.com>
Add timer and work for pre TBTT for USB devices. For now code
doesn't do anyting useful, just add hrtimer which synchronize
with hardware MT_TBTT_TIMER.
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
---
drivers/net/wireless/mediatek/mt76/mt76x02.h | 3 +
.../net/wireless/mediatek/mt76/mt76x02_regs.h | 5 +-
.../wireless/mediatek/mt76/mt76x02_usb_core.c | 70 +++++++++++++++++++
3 files changed, 77 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02.h b/drivers/net/wireless/mediatek/mt76/mt76x02.h
index 7485abdcc842..26cb4c6300b2 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02.h
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02.h
@@ -87,6 +87,9 @@ struct mt76x02_dev {
struct delayed_work mac_work;
struct delayed_work wdt_work;
+ struct hrtimer pre_tbtt_timer;
+ struct work_struct pre_tbtt_work;
+
u32 aggr_stats[32];
struct sk_buff *beacons[8];
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_regs.h b/drivers/net/wireless/mediatek/mt76/mt76x02_regs.h
index 7401cb94fb72..2ce05b543dff 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_regs.h
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_regs.h
@@ -356,7 +356,10 @@
#define MT_BEACON_TIME_CFG_TSF_COMP GENMASK(31, 24)
#define MT_TBTT_SYNC_CFG 0x1118
-#define MT_TBTT_TIMER_CFG 0x1124
+#define MT_TSF_TIMER_DW0 0x111c
+#define MT_TSF_TIMER_DW1 0x1120
+#define MT_TBTT_TIMER 0x1124
+#define MT_TBTT_TIMER_VAL GENMASK(16, 0)
#define MT_INT_TIMER_CFG 0x1128
#define MT_INT_TIMER_CFG_PRE_TBTT GENMASK(15, 0)
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_usb_core.c b/drivers/net/wireless/mediatek/mt76/mt76x02_usb_core.c
index d4393fc8097d..1f36292ef1e7 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_usb_core.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_usb_core.c
@@ -105,8 +105,78 @@ int mt76x02u_tx_prepare_skb(struct mt76_dev *mdev, void *data,
}
EXPORT_SYMBOL_GPL(mt76x02u_tx_prepare_skb);
+/* Trigger pre-TBTT event 8 ms before TBTT */
+#define PRE_TBTT_USEC 8000
+static void mt76x02u_start_pre_tbtt_timer(struct mt76x02_dev *dev)
+{
+ u64 time;
+ u32 tbtt;
+
+ /* Get remaining TBTT in usec */
+ tbtt = mt76_get_field(dev, MT_TBTT_TIMER, MT_TBTT_TIMER_VAL);
+ tbtt *= 32;
+
+ if (tbtt <= PRE_TBTT_USEC) {
+ queue_work(system_highpri_wq, &dev->pre_tbtt_work);
+ return;
+ }
+
+ time = (tbtt - PRE_TBTT_USEC) * 1000ull;
+ hrtimer_start(&dev->pre_tbtt_timer, time, HRTIMER_MODE_REL);
+}
+
+static void mt76x02u_restart_pre_tbtt_timer(struct mt76x02_dev *dev)
+{
+ u32 tbtt, dw0, dw1;
+ u64 tsf, time;
+
+ /* Get remaining TBTT in usec */
+ tbtt = mt76_get_field(dev, MT_TBTT_TIMER, MT_TBTT_TIMER_VAL);
+ tbtt *= 32;
+
+ dw0 = mt76_rr(dev, MT_TSF_TIMER_DW0);
+ dw1 = mt76_rr(dev, MT_TSF_TIMER_DW1);
+ tsf = (u64)dw0 << 32 | dw1;
+ dev_dbg(dev->mt76.dev, "TSF: %llu us TBTT %u us\n", tsf, tbtt);
+
+ /* Convert beacon interval in TU (1024 usec) to nsec */
+ time = ((1000000000ull * dev->beacon_int) >> 10);
+
+ /* Adjust time to trigger hrtimer 8ms before TBTT */
+ if (tbtt < PRE_TBTT_USEC)
+ time -= (PRE_TBTT_USEC - tbtt) * 1000ull;
+ else
+ time += (tbtt - PRE_TBTT_USEC) * 1000ull;
+
+ hrtimer_start(&dev->pre_tbtt_timer, time, HRTIMER_MODE_REL);
+}
+
+static void mt76x02u_pre_tbtt_work(struct work_struct *work)
+{
+ struct mt76x02_dev *dev =
+ container_of(work, struct mt76x02_dev, pre_tbtt_work);
+
+ if (!dev->beacon_mask)
+ return;
+ mt76x02u_restart_pre_tbtt_timer(dev);
+}
+
+static enum hrtimer_restart mt76x02u_pre_tbtt_interrupt(struct hrtimer *timer)
+{
+ struct mt76x02_dev *dev =
+ container_of(timer, struct mt76x02_dev, pre_tbtt_timer);
+
+ queue_work(system_highpri_wq, &dev->pre_tbtt_work);
+
+ return HRTIMER_NORESTART;
+}
+
void mt76x02u_init_beacon_config(struct mt76x02_dev *dev)
{
+ hrtimer_init(&dev->pre_tbtt_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
+ dev->pre_tbtt_timer.function = mt76x02u_pre_tbtt_interrupt;
+ INIT_WORK(&dev->pre_tbtt_work, mt76x02u_pre_tbtt_work);
+
mt76x02_init_beacon_config(dev);
}
EXPORT_SYMBOL_GPL(mt76x02u_init_beacon_config);
--
2.20.1
^ permalink raw reply related
* [PATCH 01/11] mt76x02: introduce mt76x02_beacon.c
From: Stanislaw Gruszka @ 2019-03-04 9:48 UTC (permalink / raw)
Cc: Felix Fietkau, linux-wireless, Lorenzo Bianconi
In-Reply-To: <1551692896-7062-1-git-send-email-sgruszka@redhat.com>
Move most of beaconing code into separate file and separate beacon
initialization for USB and MMIO as pre TBTT implementation for USB
will be different.
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
---
drivers/net/wireless/mediatek/mt76/Makefile | 2 +-
.../net/wireless/mediatek/mt76/mt76x0/init.c | 1 -
.../net/wireless/mediatek/mt76/mt76x0/pci.c | 2 +
.../net/wireless/mediatek/mt76/mt76x0/usb.c | 2 +
drivers/net/wireless/mediatek/mt76/mt76x02.h | 1 +
.../wireless/mediatek/mt76/mt76x02_beacon.c | 212 ++++++++++++++++++
.../net/wireless/mediatek/mt76/mt76x02_mac.c | 138 ------------
.../net/wireless/mediatek/mt76/mt76x02_mmio.c | 17 +-
.../net/wireless/mediatek/mt76/mt76x02_usb.h | 1 +
.../wireless/mediatek/mt76/mt76x02_usb_core.c | 6 +
.../net/wireless/mediatek/mt76/mt76x02_util.c | 62 -----
.../wireless/mediatek/mt76/mt76x2/pci_init.c | 2 +-
.../wireless/mediatek/mt76/mt76x2/usb_init.c | 2 +-
13 files changed, 242 insertions(+), 206 deletions(-)
create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x02_beacon.c
diff --git a/drivers/net/wireless/mediatek/mt76/Makefile b/drivers/net/wireless/mediatek/mt76/Makefile
index 3fd1b64b4aa7..cad4fed1a6ac 100644
--- a/drivers/net/wireless/mediatek/mt76/Makefile
+++ b/drivers/net/wireless/mediatek/mt76/Makefile
@@ -16,7 +16,7 @@ CFLAGS_mt76x02_trace.o := -I$(src)
mt76x02-lib-y := mt76x02_util.o mt76x02_mac.o mt76x02_mcu.o \
mt76x02_eeprom.o mt76x02_phy.o mt76x02_mmio.o \
mt76x02_txrx.o mt76x02_trace.o mt76x02_debugfs.o \
- mt76x02_dfs.o
+ mt76x02_dfs.o mt76x02_beacon.o
mt76x02-usb-y := mt76x02_usb_mcu.o mt76x02_usb_core.o
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x0/init.c b/drivers/net/wireless/mediatek/mt76/mt76x0/init.c
index bcb72e019fd2..e5f4ce3b595b 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x0/init.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x0/init.c
@@ -259,7 +259,6 @@ int mt76x0_init_hardware(struct mt76x02_dev *dev)
return ret;
mt76x0_phy_init(dev);
- mt76x02_init_beacon_config(dev);
return 0;
}
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x0/pci.c b/drivers/net/wireless/mediatek/mt76/mt76x0/pci.c
index f302162036d0..fafe57653ac0 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x0/pci.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x0/pci.c
@@ -128,6 +128,8 @@ static int mt76x0e_register_device(struct mt76x02_dev *dev)
if (err < 0)
return err;
+ mt76x02e_init_beacon_config(dev);
+
if (mt76_chip(&dev->mt76) == 0x7610) {
u16 val;
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x0/usb.c b/drivers/net/wireless/mediatek/mt76/mt76x0/usb.c
index 91718647da02..9d3ad8586530 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x0/usb.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x0/usb.c
@@ -175,6 +175,8 @@ static int mt76x0u_init_hardware(struct mt76x02_dev *dev)
if (err < 0)
return err;
+ mt76x02u_init_beacon_config(dev);
+
mt76_rmw(dev, MT_US_CYC_CFG, MT_US_CYC_CNT, 0x1e);
mt76_wr(dev, MT_TXOP_CTRL_CFG,
FIELD_PREP(MT_TXOP_TRUN_EN, 0x3f) |
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02.h b/drivers/net/wireless/mediatek/mt76/mt76x02.h
index e42262fd7380..7485abdcc842 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02.h
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02.h
@@ -183,6 +183,7 @@ void mt76x02_bss_info_changed(struct ieee80211_hw *hw,
extern const u16 mt76x02_beacon_offsets[16];
void mt76x02_init_beacon_config(struct mt76x02_dev *dev);
+void mt76x02e_init_beacon_config(struct mt76x02_dev *dev);
void mt76x02_mac_start(struct mt76x02_dev *dev);
void mt76x02_init_debugfs(struct mt76x02_dev *dev);
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_beacon.c b/drivers/net/wireless/mediatek/mt76/mt76x02_beacon.c
new file mode 100644
index 000000000000..e9f71def9f21
--- /dev/null
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_beacon.c
@@ -0,0 +1,212 @@
+/*
+ * Copyright (C) 2016 Felix Fietkau <nbd@nbd.name>
+ * Copyright (C) 2018 Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
+ * Copyright (C) 2018 Stanislaw Gruszka <stf_xl@wp.pl>
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include "mt76x02.h"
+
+const u16 mt76x02_beacon_offsets[16] = {
+ /* 1024 byte per beacon */
+ 0xc000,
+ 0xc400,
+ 0xc800,
+ 0xcc00,
+ 0xd000,
+ 0xd400,
+ 0xd800,
+ 0xdc00,
+ /* BSS idx 8-15 not used for beacons */
+ 0xc000,
+ 0xc000,
+ 0xc000,
+ 0xc000,
+ 0xc000,
+ 0xc000,
+ 0xc000,
+ 0xc000,
+};
+
+static void mt76x02_set_beacon_offsets(struct mt76x02_dev *dev)
+{
+ u16 val, base = MT_BEACON_BASE;
+ u32 regs[4] = {};
+ int i;
+
+ for (i = 0; i < 16; i++) {
+ val = mt76x02_beacon_offsets[i] - base;
+ regs[i / 4] |= (val / 64) << (8 * (i % 4));
+ }
+
+ for (i = 0; i < 4; i++)
+ mt76_wr(dev, MT_BCN_OFFSET(i), regs[i]);
+}
+
+static int
+mt76x02_write_beacon(struct mt76x02_dev *dev, int offset, struct sk_buff *skb)
+{
+ int beacon_len = mt76x02_beacon_offsets[1] - mt76x02_beacon_offsets[0];
+ struct mt76x02_txwi txwi;
+
+ if (WARN_ON_ONCE(beacon_len < skb->len + sizeof(struct mt76x02_txwi)))
+ return -ENOSPC;
+
+ mt76x02_mac_write_txwi(dev, &txwi, skb, NULL, NULL, skb->len);
+
+ mt76_wr_copy(dev, offset, &txwi, sizeof(txwi));
+ offset += sizeof(txwi);
+
+ mt76_wr_copy(dev, offset, skb->data, skb->len);
+ return 0;
+}
+
+static int
+__mt76x02_mac_set_beacon(struct mt76x02_dev *dev, u8 bcn_idx,
+ struct sk_buff *skb)
+{
+ int beacon_len = mt76x02_beacon_offsets[1] - mt76x02_beacon_offsets[0];
+ int beacon_addr = mt76x02_beacon_offsets[bcn_idx];
+ int ret = 0;
+ int i;
+
+ /* Prevent corrupt transmissions during update */
+ mt76_set(dev, MT_BCN_BYPASS_MASK, BIT(bcn_idx));
+
+ if (skb) {
+ ret = mt76x02_write_beacon(dev, beacon_addr, skb);
+ if (!ret)
+ dev->beacon_data_mask |= BIT(bcn_idx);
+ } else {
+ dev->beacon_data_mask &= ~BIT(bcn_idx);
+ for (i = 0; i < beacon_len; i += 4)
+ mt76_wr(dev, beacon_addr + i, 0);
+ }
+
+ mt76_wr(dev, MT_BCN_BYPASS_MASK, 0xff00 | ~dev->beacon_data_mask);
+
+ return ret;
+}
+
+int mt76x02_mac_set_beacon(struct mt76x02_dev *dev, u8 vif_idx,
+ struct sk_buff *skb)
+{
+ bool force_update = false;
+ int bcn_idx = 0;
+ int i;
+
+ for (i = 0; i < ARRAY_SIZE(dev->beacons); i++) {
+ if (vif_idx == i) {
+ force_update = !!dev->beacons[i] ^ !!skb;
+
+ if (dev->beacons[i])
+ dev_kfree_skb(dev->beacons[i]);
+
+ dev->beacons[i] = skb;
+ __mt76x02_mac_set_beacon(dev, bcn_idx, skb);
+ } else if (force_update && dev->beacons[i]) {
+ __mt76x02_mac_set_beacon(dev, bcn_idx,
+ dev->beacons[i]);
+ }
+
+ bcn_idx += !!dev->beacons[i];
+ }
+
+ for (i = bcn_idx; i < ARRAY_SIZE(dev->beacons); i++) {
+ if (!(dev->beacon_data_mask & BIT(i)))
+ break;
+
+ __mt76x02_mac_set_beacon(dev, i, NULL);
+ }
+
+ mt76_rmw_field(dev, MT_MAC_BSSID_DW1, MT_MAC_BSSID_DW1_MBEACON_N,
+ bcn_idx - 1);
+ return 0;
+}
+
+static void
+__mt76x02_mac_set_beacon_enable(struct mt76x02_dev *dev, u8 vif_idx,
+ bool val, struct sk_buff *skb)
+{
+ u8 old_mask = dev->beacon_mask;
+ bool en;
+ u32 reg;
+
+ if (val) {
+ dev->beacon_mask |= BIT(vif_idx);
+ if (skb)
+ mt76x02_mac_set_beacon(dev, vif_idx, skb);
+ } else {
+ dev->beacon_mask &= ~BIT(vif_idx);
+ mt76x02_mac_set_beacon(dev, vif_idx, NULL);
+ }
+
+ if (!!old_mask == !!dev->beacon_mask)
+ return;
+
+ en = dev->beacon_mask;
+
+ reg = MT_BEACON_TIME_CFG_BEACON_TX |
+ MT_BEACON_TIME_CFG_TBTT_EN |
+ MT_BEACON_TIME_CFG_TIMER_EN;
+ mt76_rmw(dev, MT_BEACON_TIME_CFG, reg, reg * en);
+
+ if (mt76_is_usb(dev))
+ return;
+
+ mt76_rmw_field(dev, MT_INT_TIMER_EN, MT_INT_TIMER_EN_PRE_TBTT_EN, en);
+ if (en)
+ mt76x02_irq_enable(dev, MT_INT_PRE_TBTT | MT_INT_TBTT);
+ else
+ mt76x02_irq_disable(dev, MT_INT_PRE_TBTT | MT_INT_TBTT);
+}
+
+void mt76x02_mac_set_beacon_enable(struct mt76x02_dev *dev,
+ struct ieee80211_vif *vif, bool val)
+{
+ u8 vif_idx = ((struct mt76x02_vif *)vif->drv_priv)->idx;
+ struct sk_buff *skb = NULL;
+
+ if (mt76_is_mmio(dev))
+ tasklet_disable(&dev->pre_tbtt_tasklet);
+ else if (val)
+ skb = ieee80211_beacon_get(mt76_hw(dev), vif);
+
+ if (!dev->beacon_mask)
+ dev->tbtt_count = 0;
+
+ __mt76x02_mac_set_beacon_enable(dev, vif_idx, val, skb);
+
+ if (mt76_is_mmio(dev))
+ tasklet_enable(&dev->pre_tbtt_tasklet);
+}
+
+void mt76x02_init_beacon_config(struct mt76x02_dev *dev)
+{
+ int i;
+
+ mt76_clear(dev, MT_BEACON_TIME_CFG, (MT_BEACON_TIME_CFG_TIMER_EN |
+ MT_BEACON_TIME_CFG_TBTT_EN |
+ MT_BEACON_TIME_CFG_BEACON_TX));
+ mt76_set(dev, MT_BEACON_TIME_CFG, MT_BEACON_TIME_CFG_SYNC_MODE);
+ mt76_wr(dev, MT_BCN_BYPASS_MASK, 0xffff);
+
+ for (i = 0; i < 8; i++)
+ mt76x02_mac_set_beacon(dev, i, NULL);
+
+ mt76x02_set_beacon_offsets(dev);
+}
+EXPORT_SYMBOL_GPL(mt76x02_init_beacon_config);
+
+
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c b/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
index e2077ba3c761..f4448d43114c 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
@@ -1036,141 +1036,3 @@ void mt76x02_mac_set_bssid(struct mt76x02_dev *dev, u8 idx, const u8 *addr)
mt76_rmw_field(dev, MT_MAC_APC_BSSID_H(idx), MT_MAC_APC_BSSID_H_ADDR,
get_unaligned_le16(addr + 4));
}
-
-static int
-mt76x02_write_beacon(struct mt76x02_dev *dev, int offset, struct sk_buff *skb)
-{
- int beacon_len = mt76x02_beacon_offsets[1] - mt76x02_beacon_offsets[0];
- struct mt76x02_txwi txwi;
-
- if (WARN_ON_ONCE(beacon_len < skb->len + sizeof(struct mt76x02_txwi)))
- return -ENOSPC;
-
- mt76x02_mac_write_txwi(dev, &txwi, skb, NULL, NULL, skb->len);
-
- mt76_wr_copy(dev, offset, &txwi, sizeof(txwi));
- offset += sizeof(txwi);
-
- mt76_wr_copy(dev, offset, skb->data, skb->len);
- return 0;
-}
-
-static int
-__mt76x02_mac_set_beacon(struct mt76x02_dev *dev, u8 bcn_idx,
- struct sk_buff *skb)
-{
- int beacon_len = mt76x02_beacon_offsets[1] - mt76x02_beacon_offsets[0];
- int beacon_addr = mt76x02_beacon_offsets[bcn_idx];
- int ret = 0;
- int i;
-
- /* Prevent corrupt transmissions during update */
- mt76_set(dev, MT_BCN_BYPASS_MASK, BIT(bcn_idx));
-
- if (skb) {
- ret = mt76x02_write_beacon(dev, beacon_addr, skb);
- if (!ret)
- dev->beacon_data_mask |= BIT(bcn_idx);
- } else {
- dev->beacon_data_mask &= ~BIT(bcn_idx);
- for (i = 0; i < beacon_len; i += 4)
- mt76_wr(dev, beacon_addr + i, 0);
- }
-
- mt76_wr(dev, MT_BCN_BYPASS_MASK, 0xff00 | ~dev->beacon_data_mask);
-
- return ret;
-}
-
-int mt76x02_mac_set_beacon(struct mt76x02_dev *dev, u8 vif_idx,
- struct sk_buff *skb)
-{
- bool force_update = false;
- int bcn_idx = 0;
- int i;
-
- for (i = 0; i < ARRAY_SIZE(dev->beacons); i++) {
- if (vif_idx == i) {
- force_update = !!dev->beacons[i] ^ !!skb;
-
- if (dev->beacons[i])
- dev_kfree_skb(dev->beacons[i]);
-
- dev->beacons[i] = skb;
- __mt76x02_mac_set_beacon(dev, bcn_idx, skb);
- } else if (force_update && dev->beacons[i]) {
- __mt76x02_mac_set_beacon(dev, bcn_idx,
- dev->beacons[i]);
- }
-
- bcn_idx += !!dev->beacons[i];
- }
-
- for (i = bcn_idx; i < ARRAY_SIZE(dev->beacons); i++) {
- if (!(dev->beacon_data_mask & BIT(i)))
- break;
-
- __mt76x02_mac_set_beacon(dev, i, NULL);
- }
-
- mt76_rmw_field(dev, MT_MAC_BSSID_DW1, MT_MAC_BSSID_DW1_MBEACON_N,
- bcn_idx - 1);
- return 0;
-}
-
-static void
-__mt76x02_mac_set_beacon_enable(struct mt76x02_dev *dev, u8 vif_idx,
- bool val, struct sk_buff *skb)
-{
- u8 old_mask = dev->beacon_mask;
- bool en;
- u32 reg;
-
- if (val) {
- dev->beacon_mask |= BIT(vif_idx);
- if (skb)
- mt76x02_mac_set_beacon(dev, vif_idx, skb);
- } else {
- dev->beacon_mask &= ~BIT(vif_idx);
- mt76x02_mac_set_beacon(dev, vif_idx, NULL);
- }
-
- if (!!old_mask == !!dev->beacon_mask)
- return;
-
- en = dev->beacon_mask;
-
- reg = MT_BEACON_TIME_CFG_BEACON_TX |
- MT_BEACON_TIME_CFG_TBTT_EN |
- MT_BEACON_TIME_CFG_TIMER_EN;
- mt76_rmw(dev, MT_BEACON_TIME_CFG, reg, reg * en);
-
- if (mt76_is_usb(dev))
- return;
-
- mt76_rmw_field(dev, MT_INT_TIMER_EN, MT_INT_TIMER_EN_PRE_TBTT_EN, en);
- if (en)
- mt76x02_irq_enable(dev, MT_INT_PRE_TBTT | MT_INT_TBTT);
- else
- mt76x02_irq_disable(dev, MT_INT_PRE_TBTT | MT_INT_TBTT);
-}
-
-void mt76x02_mac_set_beacon_enable(struct mt76x02_dev *dev,
- struct ieee80211_vif *vif, bool val)
-{
- u8 vif_idx = ((struct mt76x02_vif *)vif->drv_priv)->idx;
- struct sk_buff *skb = NULL;
-
- if (mt76_is_mmio(dev))
- tasklet_disable(&dev->pre_tbtt_tasklet);
- else if (val)
- skb = ieee80211_beacon_get(mt76_hw(dev), vif);
-
- if (!dev->beacon_mask)
- dev->tbtt_count = 0;
-
- __mt76x02_mac_set_beacon_enable(dev, vif_idx, val, skb);
-
- if (mt76_is_mmio(dev))
- tasklet_enable(&dev->pre_tbtt_tasklet);
-}
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c b/drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c
index c2a2fa353297..73c950ace209 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c
@@ -152,6 +152,21 @@ static void mt76x02_pre_tbtt_tasklet(unsigned long arg)
spin_unlock_bh(&q->lock);
}
+void mt76x02e_init_beacon_config(struct mt76x02_dev *dev)
+{
+ tasklet_init(&dev->pre_tbtt_tasklet, mt76x02_pre_tbtt_tasklet,
+ (unsigned long)dev);
+
+ /* Fire a pre-TBTT interrupt 8 ms before TBTT */
+ mt76_rmw_field(dev, MT_INT_TIMER_CFG, MT_INT_TIMER_CFG_PRE_TBTT, 8 << 4);
+ mt76_rmw_field(dev, MT_INT_TIMER_CFG, MT_INT_TIMER_CFG_GP_TIMER,
+ MT_DFS_GP_INTERVAL);
+ mt76_wr(dev, MT_INT_TIMER_EN, 0);
+
+ mt76x02_init_beacon_config(dev);
+}
+EXPORT_SYMBOL_GPL(mt76x02e_init_beacon_config);
+
static int
mt76x02_init_tx_queue(struct mt76x02_dev *dev, struct mt76_sw_queue *q,
int idx, int n_desc)
@@ -230,8 +245,6 @@ int mt76x02_dma_init(struct mt76x02_dev *dev)
return -ENOMEM;
tasklet_init(&dev->tx_tasklet, mt76x02_tx_tasklet, (unsigned long) dev);
- tasklet_init(&dev->pre_tbtt_tasklet, mt76x02_pre_tbtt_tasklet,
- (unsigned long)dev);
kfifo_init(&dev->txstatus_fifo, status_fifo, fifo_size);
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_usb.h b/drivers/net/wireless/mediatek/mt76/mt76x02_usb.h
index 98e647c8c7c7..2073f30667c3 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_usb.h
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_usb.h
@@ -31,4 +31,5 @@ int mt76x02u_tx_prepare_skb(struct mt76_dev *mdev, void *data,
u32 *tx_info);
void mt76x02u_tx_complete_skb(struct mt76_dev *mdev, enum mt76_txq_id qid,
struct mt76_queue_entry *e);
+void mt76x02u_init_beacon_config(struct mt76x02_dev *dev);
#endif /* __MT76x02_USB_H */
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_usb_core.c b/drivers/net/wireless/mediatek/mt76/mt76x02_usb_core.c
index 8ab63255ba6f..d4393fc8097d 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_usb_core.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_usb_core.c
@@ -104,3 +104,9 @@ int mt76x02u_tx_prepare_skb(struct mt76_dev *mdev, void *data,
return mt76x02u_skb_dma_info(skb, WLAN_PORT, flags);
}
EXPORT_SYMBOL_GPL(mt76x02u_tx_prepare_skb);
+
+void mt76x02u_init_beacon_config(struct mt76x02_dev *dev)
+{
+ mt76x02_init_beacon_config(dev);
+}
+EXPORT_SYMBOL_GPL(mt76x02u_init_beacon_config);
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
index b14a55737829..39748c67b377 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
@@ -635,68 +635,6 @@ void mt76x02_sta_ps(struct mt76_dev *mdev, struct ieee80211_sta *sta,
}
EXPORT_SYMBOL_GPL(mt76x02_sta_ps);
-const u16 mt76x02_beacon_offsets[16] = {
- /* 1024 byte per beacon */
- 0xc000,
- 0xc400,
- 0xc800,
- 0xcc00,
- 0xd000,
- 0xd400,
- 0xd800,
- 0xdc00,
- /* BSS idx 8-15 not used for beacons */
- 0xc000,
- 0xc000,
- 0xc000,
- 0xc000,
- 0xc000,
- 0xc000,
- 0xc000,
- 0xc000,
-};
-
-static void mt76x02_set_beacon_offsets(struct mt76x02_dev *dev)
-{
- u16 val, base = MT_BEACON_BASE;
- u32 regs[4] = {};
- int i;
-
- for (i = 0; i < 16; i++) {
- val = mt76x02_beacon_offsets[i] - base;
- regs[i / 4] |= (val / 64) << (8 * (i % 4));
- }
-
- for (i = 0; i < 4; i++)
- mt76_wr(dev, MT_BCN_OFFSET(i), regs[i]);
-}
-
-void mt76x02_init_beacon_config(struct mt76x02_dev *dev)
-{
- int i;
-
- if (mt76_is_mmio(dev)) {
- /* Fire a pre-TBTT interrupt 8 ms before TBTT */
- mt76_rmw_field(dev, MT_INT_TIMER_CFG, MT_INT_TIMER_CFG_PRE_TBTT,
- 8 << 4);
- mt76_rmw_field(dev, MT_INT_TIMER_CFG, MT_INT_TIMER_CFG_GP_TIMER,
- MT_DFS_GP_INTERVAL);
- mt76_wr(dev, MT_INT_TIMER_EN, 0);
- }
-
- mt76_clear(dev, MT_BEACON_TIME_CFG, (MT_BEACON_TIME_CFG_TIMER_EN |
- MT_BEACON_TIME_CFG_TBTT_EN |
- MT_BEACON_TIME_CFG_BEACON_TX));
- mt76_set(dev, MT_BEACON_TIME_CFG, MT_BEACON_TIME_CFG_SYNC_MODE);
- mt76_wr(dev, MT_BCN_BYPASS_MASK, 0xffff);
-
- for (i = 0; i < 8; i++)
- mt76x02_mac_set_beacon(dev, i, NULL);
-
- mt76x02_set_beacon_offsets(dev);
-}
-EXPORT_SYMBOL_GPL(mt76x02_init_beacon_config);
-
void mt76x02_bss_info_changed(struct ieee80211_hw *hw,
struct ieee80211_vif *vif,
struct ieee80211_bss_conf *info,
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x2/pci_init.c b/drivers/net/wireless/mediatek/mt76/mt76x2/pci_init.c
index d3927a13e92e..9e88a8cec9e5 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x2/pci_init.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x2/pci_init.c
@@ -120,7 +120,7 @@ int mt76x2_mac_reset(struct mt76x02_dev *dev, bool hard)
mt76_clear(dev, MT_FCE_L2_STUFF, MT_FCE_L2_STUFF_WR_MPDU_LEN_EN);
mt76x02_mac_setaddr(dev, macaddr);
- mt76x02_init_beacon_config(dev);
+ mt76x02e_init_beacon_config(dev);
if (!hard)
return 0;
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x2/usb_init.c b/drivers/net/wireless/mediatek/mt76/mt76x2/usb_init.c
index 1da90e58d942..35bdf5ffae00 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x2/usb_init.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x2/usb_init.c
@@ -183,7 +183,7 @@ int mt76x2u_init_hardware(struct mt76x02_dev *dev)
mt76x02_mac_shared_key_setup(dev, i, k, NULL);
}
- mt76x02_init_beacon_config(dev);
+ mt76x02u_init_beacon_config(dev);
mt76_rmw(dev, MT_US_CYC_CFG, MT_US_CYC_CNT, 0x1e);
mt76_wr(dev, MT_TXOP_CTRL_CFG, 0x583f);
--
2.20.1
^ permalink raw reply related
* [PATCH 00/11] mt76x02: AP support for USB with PS
From: Stanislaw Gruszka @ 2019-03-04 9:48 UTC (permalink / raw)
Cc: Felix Fietkau, linux-wireless, Lorenzo Bianconi
On USB we do not have available PSD queue. Using standard AC queues is
unreliable for sending PS buffered frames, stations can go sleep again
before frames are sent. Only reliable way I could find to sent broadcast
PS buffered frames is put them into beacon data registers, then frames
are sent just after proper beacon. HW do the work when we encrypt the
frames in software.
I tested functionality used arping to iwlwifi station that do
aggressive PS, it works like this:
# arping -c 1 -I wlan0 192.168.9.110
ARPING 192.168.9.110 from 192.168.9.1 wlan0
Unicast reply from 192.168.9.110 [4C:34:88:5E:76:D5] 324.885ms
Sent 1 probes (1 broadcast(s))
Otherwise arping fails:
# arping -c 1 -I wlan0 192.168.9.110
ARPING 192.168.9.110 from 192.168.1.148 wlan0
Sent 1 probes (1 broadcast(s))
Received 0 response(s)
I'm not sure how to test mt76_release_buffered_frames functionality.
Also I have not tested on MMIO hardware, but for this only code
movement was done so things should not break.
RFC -> v1:
- do no remove set_tim
- add tbtt_start/stop for mt76x2u
- rebase on top of:
[PATCH 0/5] introduce mt76_sw_queue data structure
https://lore.kernel.org/linux-wireless/cover.1551533068.git.lorenzo@kernel.org/
Stanislaw Gruszka (11):
mt76x02: introduce mt76x02_beacon.c
mt76x02: add hrtimer for pre TBTT for USB
mt76x02: introduce beacon_ops
mt76x02u: implement beacon_ops
mt76x02: generalize some mmio beaconing functions
mt76x02u: add sta_ps
mt76x02: disable HW encryption for group frames
mt76x02u: implement pre TBTT work for USB
mt76x02u: add mt76_release_buffered_frames
mt76: unify set_tim
mt76x02: enable AP mode for USB
drivers/net/wireless/mediatek/mt76/Makefile | 2 +-
drivers/net/wireless/mediatek/mt76/mac80211.c | 7 +
drivers/net/wireless/mediatek/mt76/mt76.h | 2 +
.../net/wireless/mediatek/mt76/mt7603/main.c | 8 +-
.../net/wireless/mediatek/mt76/mt76x0/init.c | 1 -
.../net/wireless/mediatek/mt76/mt76x0/main.c | 8 +-
.../net/wireless/mediatek/mt76/mt76x0/pci.c | 11 +-
.../net/wireless/mediatek/mt76/mt76x0/usb.c | 10 +-
drivers/net/wireless/mediatek/mt76/mt76x02.h | 22 ++
.../wireless/mediatek/mt76/mt76x02_beacon.c | 308 ++++++++++++++++++
.../net/wireless/mediatek/mt76/mt76x02_mac.c | 138 --------
.../net/wireless/mediatek/mt76/mt76x02_mmio.c | 131 +++-----
.../net/wireless/mediatek/mt76/mt76x02_regs.h | 5 +-
.../net/wireless/mediatek/mt76/mt76x02_usb.h | 2 +
.../wireless/mediatek/mt76/mt76x02_usb_core.c | 153 +++++++++
.../net/wireless/mediatek/mt76/mt76x02_util.c | 77 +----
.../wireless/mediatek/mt76/mt76x2/pci_init.c | 2 +-
.../wireless/mediatek/mt76/mt76x2/pci_main.c | 8 +-
.../net/wireless/mediatek/mt76/mt76x2/usb.c | 1 +
.../wireless/mediatek/mt76/mt76x2/usb_init.c | 2 +-
.../wireless/mediatek/mt76/mt76x2/usb_main.c | 6 +
drivers/net/wireless/mediatek/mt76/usb.c | 7 +-
22 files changed, 582 insertions(+), 329 deletions(-)
create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x02_beacon.c
--
2.20.1
^ permalink raw reply
* [PATCH] rtw88: RTL8822C: update rtw8822c_fw.bin to v5.0
From: yhchuang @ 2019-03-04 8:34 UTC (permalink / raw)
To: linux-firmware; +Cc: linux-wireless, Larry.Finger
From: Yan-Hsuan Chuang <yhchuang@realtek.com>
Add IQK support.
Signed-off-by: Yan-Hsuan Chuang <yhchuang@realtek.com>
---
rtw88/rtw8822c_fw.bin | Bin 162064 -> 184640 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/rtw88/rtw8822c_fw.bin b/rtw88/rtw8822c_fw.bin
index 8513a639c384fda9191d95d7467fc5b6ede8f74a..4a99f97a993c69631ec9089bdf7153c3657aef47 100644
GIT binary patch
literal 184640
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⁣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
literal 162064
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
--
2.7.4
^ permalink raw reply
* [PATCH 01/11] mt76: mt76x02: reduce false positives in ED/CCA tx blocking
From: Felix Fietkau @ 2019-03-04 8:02 UTC (permalink / raw)
To: linux-wireless
Full tx blocking (as opposed to CCA blocking) should only happen if there
is a continuous non-802.11 signal above the energy detect threshold.
Unfortunately the ED/CCA counter can't detect that, as it also counts 802.11
signals as busy.
Similar to the vendor code, implement a learning mode that waits until the AGC
gain has already been adjusted to the lowest value (due to false CCA events),
and the number of false CCA events still remains high, and the blocking
threshold is exceeded for more than 5 seconds.
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
drivers/net/wireless/mediatek/mt76/mt76x02.h | 3 +++
.../net/wireless/mediatek/mt76/mt76x02_mac.c | 25 ++++++++++++++++---
.../net/wireless/mediatek/mt76/mt76x02_phy.c | 2 ++
3 files changed, 26 insertions(+), 4 deletions(-)
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02.h b/drivers/net/wireless/mediatek/mt76/mt76x02.h
index 3d93017c3227..0f0fab54e4f1 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02.h
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02.h
@@ -51,6 +51,7 @@ struct mt76x02_calibration {
u16 false_cca;
s8 avg_rssi_all;
s8 agc_gain_adjust;
+ s8 agc_lowest_gain;
s8 low_gain;
s8 temp_vco;
@@ -114,8 +115,10 @@ struct mt76x02_dev {
struct mt76x02_dfs_pattern_detector dfs_pd;
/* edcca monitor */
+ unsigned long ed_trigger_timeout;
bool ed_tx_blocked;
bool ed_monitor;
+ u8 ed_monitor_learning;
u8 ed_trigger;
u8 ed_silent;
ktime_t ed_time;
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c b/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
index e1e0c8da5a8c..9ed231abe916 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
@@ -960,6 +960,7 @@ void mt76x02_edcca_init(struct mt76x02_dev *dev, bool enable)
}
}
mt76x02_edcca_tx_enable(dev, true);
+ dev->ed_monitor_learning = true;
/* clear previous CCA timer value */
mt76_rr(dev, MT_ED_CCA_TIMER);
@@ -969,6 +970,10 @@ EXPORT_SYMBOL_GPL(mt76x02_edcca_init);
#define MT_EDCCA_TH 92
#define MT_EDCCA_BLOCK_TH 2
+#define MT_EDCCA_LEARN_TH 50
+#define MT_EDCCA_LEARN_CCA 180
+#define MT_EDCCA_LEARN_TIMEOUT (20 * HZ)
+
static void mt76x02_edcca_check(struct mt76x02_dev *dev)
{
ktime_t cur_time;
@@ -991,11 +996,23 @@ static void mt76x02_edcca_check(struct mt76x02_dev *dev)
dev->ed_trigger = 0;
}
- if (dev->ed_trigger > MT_EDCCA_BLOCK_TH &&
- !dev->ed_tx_blocked)
+ if (dev->cal.agc_lowest_gain &&
+ dev->cal.false_cca > MT_EDCCA_LEARN_CCA &&
+ dev->ed_trigger > MT_EDCCA_LEARN_TH) {
+ dev->ed_monitor_learning = false;
+ dev->ed_trigger_timeout = jiffies + 20 * HZ;
+ } else if (!dev->ed_monitor_learning &&
+ time_is_after_jiffies(dev->ed_trigger_timeout)) {
+ dev->ed_monitor_learning = true;
+ mt76x02_edcca_tx_enable(dev, true);
+ }
+
+ if (dev->ed_monitor_learning)
+ return;
+
+ if (dev->ed_trigger > MT_EDCCA_BLOCK_TH && !dev->ed_tx_blocked)
mt76x02_edcca_tx_enable(dev, false);
- else if (dev->ed_silent > MT_EDCCA_BLOCK_TH &&
- dev->ed_tx_blocked)
+ else if (dev->ed_silent > MT_EDCCA_BLOCK_TH && dev->ed_tx_blocked)
mt76x02_edcca_tx_enable(dev, true);
}
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_phy.c b/drivers/net/wireless/mediatek/mt76/mt76x02_phy.c
index a020c757ba5c..a54b63a96eae 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_phy.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_phy.c
@@ -194,6 +194,8 @@ bool mt76x02_phy_adjust_vga_gain(struct mt76x02_dev *dev)
ret = true;
}
+ dev->cal.agc_lowest_gain = dev->cal.agc_gain_adjust >= limit;
+
return ret;
}
EXPORT_SYMBOL_GPL(mt76x02_phy_adjust_vga_gain);
--
2.17.0
^ permalink raw reply related
* [PATCH 05/11] mt76: mt7603: clear ps filtering mode before releasing buffered frames
From: Felix Fietkau @ 2019-03-04 8:02 UTC (permalink / raw)
To: linux-wireless
In-Reply-To: <20190304080234.3221-1-nbd@nbd.name>
Fixes sending them, otherwise they loop back right into the buffer
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
drivers/net/wireless/mediatek/mt76/mt7603/main.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/wireless/mediatek/mt76/mt7603/main.c b/drivers/net/wireless/mediatek/mt76/mt7603/main.c
index b10775ed92e6..8da0b8707d24 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7603/main.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7603/main.c
@@ -399,6 +399,8 @@ mt7603_release_buffered_frames(struct ieee80211_hw *hw,
__skb_queue_head_init(&list);
+ mt7603_wtbl_set_ps(dev, msta, false);
+
spin_lock_bh(&dev->ps_lock);
skb_queue_walk_safe(&msta->psq, skb, tmp) {
if (!nframes)
--
2.17.0
^ permalink raw reply related
* [PATCH 11/11] mt76: mt7603: set moredata flag when queueing ps-filtered packets
From: Felix Fietkau @ 2019-03-04 8:02 UTC (permalink / raw)
To: linux-wireless
In-Reply-To: <20190304080234.3221-1-nbd@nbd.name>
Clients should poll for more packets afterwards
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
drivers/net/wireless/mediatek/mt76/mt7603/main.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/drivers/net/wireless/mediatek/mt76/mt7603/main.c b/drivers/net/wireless/mediatek/mt76/mt7603/main.c
index ea25eff5e81c..cc0fe0933b2d 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7603/main.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7603/main.c
@@ -5,6 +5,7 @@
#include <linux/pci.h>
#include <linux/module.h>
#include "mt7603.h"
+#include "mac.h"
#include "eeprom.h"
static int
@@ -385,6 +386,15 @@ mt7603_sta_ps(struct mt76_dev *mdev, struct ieee80211_sta *sta, bool ps)
mt7603_ps_tx_list(dev, &list);
}
+static void
+mt7603_ps_set_more_data(struct sk_buff *skb)
+{
+ struct ieee80211_hdr *hdr;
+
+ hdr = (struct ieee80211_hdr *) &skb->data[MT_TXD_SIZE];
+ hdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_MOREDATA);
+}
+
static void
mt7603_release_buffered_frames(struct ieee80211_hw *hw,
struct ieee80211_sta *sta,
@@ -411,6 +421,7 @@ mt7603_release_buffered_frames(struct ieee80211_hw *hw,
skb_set_queue_mapping(skb, MT_TXQ_PSD);
__skb_unlink(skb, &msta->psq);
+ mt7603_ps_set_more_data(skb);
__skb_queue_tail(&list, skb);
nframes--;
}
--
2.17.0
^ permalink raw reply related
* [PATCH 03/11] mt76: mt76x2: fix external LNA gain settings
From: Felix Fietkau @ 2019-03-04 8:02 UTC (permalink / raw)
To: linux-wireless
In-Reply-To: <20190304080234.3221-1-nbd@nbd.name>
Devices with external LNA need different values for AGC registers 8 and 9
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
drivers/net/wireless/mediatek/mt76/mt76x2/phy.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x2/phy.c b/drivers/net/wireless/mediatek/mt76/mt76x2/phy.c
index 1848e8ab2e21..c7e71f2ba2a7 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x2/phy.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x2/phy.c
@@ -260,10 +260,15 @@ mt76x2_phy_set_gain_val(struct mt76x02_dev *dev)
gain_val[0] = dev->cal.agc_gain_cur[0] - dev->cal.agc_gain_adjust;
gain_val[1] = dev->cal.agc_gain_cur[1] - dev->cal.agc_gain_adjust;
- if (dev->mt76.chandef.width >= NL80211_CHAN_WIDTH_40)
+ val = 0x1836 << 16;
+ if (!mt76x2_has_ext_lna(dev) &&
+ dev->mt76.chandef.width >= NL80211_CHAN_WIDTH_40)
val = 0x1e42 << 16;
- else
- val = 0x1836 << 16;
+
+ if (mt76x2_has_ext_lna(dev) &&
+ dev->mt76.chandef.chan->band == NL80211_BAND_2GHZ &&
+ dev->mt76.chandef.width < NL80211_CHAN_WIDTH_40)
+ val = 0x0f36 << 16;
val |= 0xf8;
--
2.17.0
^ permalink raw reply related
* [PATCH 04/11] mt76: mt76x2: fix 2.4 GHz channel gain settings
From: Felix Fietkau @ 2019-03-04 8:02 UTC (permalink / raw)
To: linux-wireless
In-Reply-To: <20190304080234.3221-1-nbd@nbd.name>
AGC register 35, 37 override for the low gain setting should only be done
on 5 GHz. Also, 2.4 GHz needs a different value for register 35
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
.../net/wireless/mediatek/mt76/mt76x2/phy.c | 19 ++++++++++++++-----
1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x2/phy.c b/drivers/net/wireless/mediatek/mt76/mt76x2/phy.c
index c7e71f2ba2a7..769a9b972044 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x2/phy.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x2/phy.c
@@ -285,6 +285,7 @@ void mt76x2_phy_update_channel_gain(struct mt76x02_dev *dev)
{
u8 *gain = dev->cal.agc_gain_init;
u8 low_gain_delta, gain_delta;
+ u32 agc_35, agc_37;
bool gain_change;
int low_gain;
u32 val;
@@ -323,6 +324,16 @@ void mt76x2_phy_update_channel_gain(struct mt76x02_dev *dev)
else
low_gain_delta = 14;
+ agc_37 = 0x2121262c;
+ if (dev->mt76.chandef.chan->band == NL80211_BAND_2GHZ)
+ agc_35 = 0x11111516;
+ else if (low_gain == 2)
+ agc_35 = agc_37 = 0x08080808;
+ else if (dev->mt76.chandef.width == NL80211_CHAN_WIDTH_80)
+ agc_35 = 0x10101014;
+ else
+ agc_35 = 0x11111116;
+
if (low_gain == 2) {
mt76_wr(dev, MT_BBP(RXO, 18), 0xf000a990);
mt76_wr(dev, MT_BBP(AGC, 35), 0x08080808);
@@ -331,15 +342,13 @@ void mt76x2_phy_update_channel_gain(struct mt76x02_dev *dev)
dev->cal.agc_gain_adjust = 0;
} else {
mt76_wr(dev, MT_BBP(RXO, 18), 0xf000a991);
- if (dev->mt76.chandef.width == NL80211_CHAN_WIDTH_80)
- mt76_wr(dev, MT_BBP(AGC, 35), 0x10101014);
- else
- mt76_wr(dev, MT_BBP(AGC, 35), 0x11111116);
- mt76_wr(dev, MT_BBP(AGC, 37), 0x2121262C);
gain_delta = 0;
dev->cal.agc_gain_adjust = low_gain_delta;
}
+ mt76_wr(dev, MT_BBP(AGC, 35), agc_35);
+ mt76_wr(dev, MT_BBP(AGC, 37), agc_37);
+
dev->cal.agc_gain_cur[0] = gain[0] - gain_delta;
dev->cal.agc_gain_cur[1] = gain[1] - gain_delta;
mt76x2_phy_set_gain_val(dev);
--
2.17.0
^ permalink raw reply related
* [PATCH 08/11] mt76: mt7603: clear the service period on releasing PS filtered packets
From: Felix Fietkau @ 2019-03-04 8:02 UTC (permalink / raw)
To: linux-wireless
In-Reply-To: <20190304080234.3221-1-nbd@nbd.name>
These packets have no txwi entry in the ring, so tracking via tx status does
not work. To prevent PS poll requests from being unanswered, end the service
period right away
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
drivers/net/wireless/mediatek/mt76/mt7603/main.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/net/wireless/mediatek/mt76/mt7603/main.c b/drivers/net/wireless/mediatek/mt76/mt7603/main.c
index 8da0b8707d24..ea25eff5e81c 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7603/main.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7603/main.c
@@ -416,6 +416,9 @@ mt7603_release_buffered_frames(struct ieee80211_hw *hw,
}
spin_unlock_bh(&dev->ps_lock);
+ if (!skb_queue_empty(&list))
+ ieee80211_sta_eosp(sta);
+
mt7603_ps_tx_list(dev, &list);
if (nframes)
--
2.17.0
^ permalink raw reply related
* [PATCH 07/11] mt76: mt7603: notify mac80211 about buffered frames in ps queue
From: Felix Fietkau @ 2019-03-04 8:02 UTC (permalink / raw)
To: linux-wireless
In-Reply-To: <20190304080234.3221-1-nbd@nbd.name>
Also fix the size check for filtered powersave frames
Fixes a corner case with waking up clients
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
drivers/net/wireless/mediatek/mt76/mt7603/dma.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/drivers/net/wireless/mediatek/mt76/mt7603/dma.c b/drivers/net/wireless/mediatek/mt76/mt7603/dma.c
index 72d189daad38..4606b539190f 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7603/dma.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7603/dma.c
@@ -24,12 +24,16 @@ static void
mt7603_rx_loopback_skb(struct mt7603_dev *dev, struct sk_buff *skb)
{
__le32 *txd = (__le32 *)skb->data;
+ struct ieee80211_hdr *hdr;
+ struct ieee80211_sta *sta;
struct mt7603_sta *msta;
struct mt76_wcid *wcid;
+ void *priv;
int idx;
u32 val;
+ u8 tid;
- if (skb->len < sizeof(MT_TXD_SIZE) + sizeof(struct ieee80211_hdr))
+ if (skb->len < MT_TXD_SIZE + sizeof(struct ieee80211_hdr))
goto free;
val = le32_to_cpu(txd[1]);
@@ -43,7 +47,7 @@ mt7603_rx_loopback_skb(struct mt7603_dev *dev, struct sk_buff *skb)
if (!wcid)
goto free;
- msta = container_of(wcid, struct mt7603_sta, wcid);
+ priv = msta = container_of(wcid, struct mt7603_sta, wcid);
val = le32_to_cpu(txd[0]);
skb_set_queue_mapping(skb, FIELD_GET(MT_TXD0_Q_IDX, val));
@@ -51,6 +55,11 @@ mt7603_rx_loopback_skb(struct mt7603_dev *dev, struct sk_buff *skb)
val |= FIELD_PREP(MT_TXD0_Q_IDX, MT_TX_HW_QUEUE_MGMT);
txd[0] = cpu_to_le32(val);
+ sta = container_of(priv, struct ieee80211_sta, drv_priv);
+ hdr = (struct ieee80211_hdr *) &skb->data[MT_TXD_SIZE];
+ tid = *ieee80211_get_qos_ctl(hdr) & IEEE80211_QOS_CTL_TID_MASK;
+ ieee80211_sta_set_buffered(sta, tid, true);
+
spin_lock_bh(&dev->ps_lock);
__skb_queue_tail(&msta->psq, skb);
if (skb_queue_len(&msta->psq) >= 64) {
--
2.17.0
^ permalink raw reply related
* [PATCH 06/11] mt76: mt7603: fix up hardware queue index for PS filtered packets
From: Felix Fietkau @ 2019-03-04 8:02 UTC (permalink / raw)
To: linux-wireless
In-Reply-To: <20190304080234.3221-1-nbd@nbd.name>
Make the queue index match the hardware queue on which they get sent out
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
drivers/net/wireless/mediatek/mt76/mt7603/dma.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/net/wireless/mediatek/mt76/mt7603/dma.c b/drivers/net/wireless/mediatek/mt76/mt7603/dma.c
index 5067c49142f7..72d189daad38 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7603/dma.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7603/dma.c
@@ -47,6 +47,10 @@ mt7603_rx_loopback_skb(struct mt7603_dev *dev, struct sk_buff *skb)
val = le32_to_cpu(txd[0]);
skb_set_queue_mapping(skb, FIELD_GET(MT_TXD0_Q_IDX, val));
+ val &= ~(MT_TXD0_P_IDX | MT_TXD0_Q_IDX);
+ val |= FIELD_PREP(MT_TXD0_Q_IDX, MT_TX_HW_QUEUE_MGMT);
+ txd[0] = cpu_to_le32(val);
+
spin_lock_bh(&dev->ps_lock);
__skb_queue_tail(&msta->psq, skb);
if (skb_queue_len(&msta->psq) >= 64) {
--
2.17.0
^ permalink raw reply related
* [PATCH 10/11] mt76: mt76x02: disable ED/CCA by default
From: Felix Fietkau @ 2019-03-04 8:02 UTC (permalink / raw)
To: linux-wireless
In-Reply-To: <20190304080234.3221-1-nbd@nbd.name>
This feature has been reported to cause stability issues on several systems.
Disable it until it has been fixed and verified. It can still be enabled
through debugfs
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
drivers/net/wireless/mediatek/mt76/mt76x02.h | 1 +
.../wireless/mediatek/mt76/mt76x02_debugfs.c | 27 +++++++++++++++++++
.../net/wireless/mediatek/mt76/mt76x02_dfs.c | 3 ++-
3 files changed, 30 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02.h b/drivers/net/wireless/mediatek/mt76/mt76x02.h
index 0f0fab54e4f1..5ed75d66ef8e 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02.h
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02.h
@@ -118,6 +118,7 @@ struct mt76x02_dev {
unsigned long ed_trigger_timeout;
bool ed_tx_blocked;
bool ed_monitor;
+ u8 ed_monitor_enabled;
u8 ed_monitor_learning;
u8 ed_trigger;
u8 ed_silent;
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_debugfs.c b/drivers/net/wireless/mediatek/mt76/mt76x02_debugfs.c
index 7580c5c986ff..b1d6fd4861e3 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_debugfs.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_debugfs.c
@@ -116,6 +116,32 @@ static int read_agc(struct seq_file *file, void *data)
return 0;
}
+static int
+mt76_edcca_set(void *data, u64 val)
+{
+ struct mt76x02_dev *dev = data;
+ enum nl80211_dfs_regions region = dev->dfs_pd.region;
+
+ dev->ed_monitor_enabled = !!val;
+ dev->ed_monitor = dev->ed_monitor_enabled &&
+ region == NL80211_DFS_ETSI;
+ mt76x02_edcca_init(dev, true);
+
+ return 0;
+}
+
+static int
+mt76_edcca_get(void *data, u64 *val)
+{
+ struct mt76x02_dev *dev = data;
+
+ *val = dev->ed_monitor_enabled;
+ return 0;
+}
+
+DEFINE_DEBUGFS_ATTRIBUTE(fops_edcca, mt76_edcca_get, mt76_edcca_set,
+ "%lld\n");
+
void mt76x02_init_debugfs(struct mt76x02_dev *dev)
{
struct dentry *dir;
@@ -127,6 +153,7 @@ void mt76x02_init_debugfs(struct mt76x02_dev *dev)
debugfs_create_u8("temperature", 0400, dir, &dev->cal.temp);
debugfs_create_bool("tpc", 0600, dir, &dev->enable_tpc);
+ debugfs_create_file("edcca", 0400, dir, dev, &fops_edcca);
debugfs_create_file("ampdu_stat", 0400, dir, dev, &fops_ampdu_stat);
debugfs_create_file("dfs_stats", 0400, dir, dev, &fops_dfs_stat);
debugfs_create_devm_seqfile(dev->mt76.dev, "txpower", dir,
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_dfs.c b/drivers/net/wireless/mediatek/mt76/mt76x02_dfs.c
index e4649103efd4..17d12d212d1b 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_dfs.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_dfs.c
@@ -885,7 +885,8 @@ mt76x02_dfs_set_domain(struct mt76x02_dev *dev,
if (dfs_pd->region != region) {
tasklet_disable(&dfs_pd->dfs_tasklet);
- dev->ed_monitor = region == NL80211_DFS_ETSI;
+ dev->ed_monitor = dev->ed_monitor_enabled &&
+ region == NL80211_DFS_ETSI;
mt76x02_edcca_init(dev, true);
dfs_pd->region = region;
--
2.17.0
^ permalink raw reply related
* [PATCH 09/11] mt76: when releasing PS frames, end the service period if no frame was found
From: Felix Fietkau @ 2019-03-04 8:02 UTC (permalink / raw)
To: linux-wireless
In-Reply-To: <20190304080234.3221-1-nbd@nbd.name>
Fixes a rare corner case if the txq dequeue attempt fails, but mac80211
still has PS buffered packets
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
drivers/net/wireless/mediatek/mt76/tx.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/net/wireless/mediatek/mt76/tx.c b/drivers/net/wireless/mediatek/mt76/tx.c
index fc7dffe066be..2585df512335 100644
--- a/drivers/net/wireless/mediatek/mt76/tx.c
+++ b/drivers/net/wireless/mediatek/mt76/tx.c
@@ -377,7 +377,10 @@ mt76_release_buffered_frames(struct ieee80211_hw *hw, struct ieee80211_sta *sta,
if (last_skb) {
mt76_queue_ps_skb(dev, sta, last_skb, true);
dev->queue_ops->kick(dev, hwq);
+ } else {
+ ieee80211_sta_eosp(sta);
}
+
spin_unlock_bh(&hwq->lock);
}
EXPORT_SYMBOL_GPL(mt76_release_buffered_frames);
--
2.17.0
^ permalink raw reply related
* [PATCH 02/11] mt76: mt7603: fix tx status HT rate validation
From: Felix Fietkau @ 2019-03-04 8:02 UTC (permalink / raw)
To: linux-wireless
In-Reply-To: <20190304080234.3221-1-nbd@nbd.name>
Use the correct variable in the check. Fixes an uninitialized variable warning
Reported-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Fixes: c8846e1015022 ("mt76: add driver for MT7603E and MT7628/7688")
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
drivers/net/wireless/mediatek/mt76/mt7603/mac.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/wireless/mediatek/mt76/mt7603/mac.c b/drivers/net/wireless/mediatek/mt76/mt7603/mac.c
index 0a0115861b51..5e31d7da96fc 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7603/mac.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7603/mac.c
@@ -1072,7 +1072,7 @@ mt7603_fill_txs(struct mt7603_dev *dev, struct mt7603_sta *sta,
case MT_PHY_TYPE_HT:
final_rate_flags |= IEEE80211_TX_RC_MCS;
final_rate &= GENMASK(5, 0);
- if (i > 15)
+ if (final_rate > 15)
return false;
break;
default:
--
2.17.0
^ permalink raw reply related
* Re: MT76x2U crashes XHCI driver on AMD Ryzen system
From: Rosen Penev @ 2019-03-04 7:20 UTC (permalink / raw)
To: Stanislaw Gruszka
Cc: Joerg Roedel, Lorenzo Bianconi, linux-wireless, Samuel Sieb,
Alexander Duyck, iommu, linux-kernel
In-Reply-To: <20190304071037.GA2787@redhat.com>
On Sun, Mar 3, 2019 at 11:10 PM Stanislaw Gruszka <sgruszka@redhat.com> wrote:
>
> On Thu, Feb 28, 2019 at 02:40:29PM +0100, Joerg Roedel wrote:
> > On Thu, Feb 28, 2019 at 01:19:48PM +0100, Stanislaw Gruszka wrote:
> > > Nevermind, the patch is wrong, s->dma_address is initalized in sg_num_pages().
> >
> > Yes, it is. In sg_num_pages() the offset into the IOMMU mapping is
> > stored in s->dma_address, taking also the segment boundary mask into
> > account. map_sg() later only adds the base-address to that.
>
> I have some more info about the issues in
> https://bugzilla.kernel.org/show_bug.cgi?id=202673
>
> We have some bugs in mt76. Apparently we should not use
> page_frag_alloc() with size bigger than PAGE_SIZE as page_frag_alloc()
> can fallback to single page allocation. And also we should not make
> sizes unaligned as pointed in commit:
> 3bed3cc4156e ("net: Do not allocate page fragments that are not skb aligned"
As a small and totally unrelated note, page_frag_alloc is only used in
mt76 and the nvme driver ;)
>
> However after fixing that mt76usb still did not work. To make things
> work we had to change rx frag size from 2048 to PAGE_SIZE and change
> virt_to_head_page() to virt_to_page() when setting SG's.
>
> I think I understand why first change was needed. If we do 2 separate
> dma maps of 2 different buffers in single page i.e (PAGE + off=0
> and PAGE + off=2048) it causes problem. So either map_sg() return
> error which mt76usb does not handle correctly or there is issue
> in AMD IOMMU because two dma maps use the same page.
>
> But I don't understand why the second change was needed. Without
> it we have issue with incorrect page->_refcount . It is somehow
> related with AMD IOMMU, because on different platforms we do not
> have such problems.
>
> Joerg, could you look at this ? Thanks.
>
> Stanislaw
^ permalink raw reply
* Re: MT76x2U crashes XHCI driver on AMD Ryzen system
From: Stanislaw Gruszka @ 2019-03-04 7:10 UTC (permalink / raw)
To: Joerg Roedel
Cc: Lorenzo Bianconi, Rosen Penev, linux-wireless, Samuel Sieb,
Alexander Duyck, iommu, linux-kernel
In-Reply-To: <20190228134029.GC1594@8bytes.org>
On Thu, Feb 28, 2019 at 02:40:29PM +0100, Joerg Roedel wrote:
> On Thu, Feb 28, 2019 at 01:19:48PM +0100, Stanislaw Gruszka wrote:
> > Nevermind, the patch is wrong, s->dma_address is initalized in sg_num_pages().
>
> Yes, it is. In sg_num_pages() the offset into the IOMMU mapping is
> stored in s->dma_address, taking also the segment boundary mask into
> account. map_sg() later only adds the base-address to that.
I have some more info about the issues in
https://bugzilla.kernel.org/show_bug.cgi?id=202673
We have some bugs in mt76. Apparently we should not use
page_frag_alloc() with size bigger than PAGE_SIZE as page_frag_alloc()
can fallback to single page allocation. And also we should not make
sizes unaligned as pointed in commit:
3bed3cc4156e ("net: Do not allocate page fragments that are not skb aligned"
However after fixing that mt76usb still did not work. To make things
work we had to change rx frag size from 2048 to PAGE_SIZE and change
virt_to_head_page() to virt_to_page() when setting SG's.
I think I understand why first change was needed. If we do 2 separate
dma maps of 2 different buffers in single page i.e (PAGE + off=0
and PAGE + off=2048) it causes problem. So either map_sg() return
error which mt76usb does not handle correctly or there is issue
in AMD IOMMU because two dma maps use the same page.
But I don't understand why the second change was needed. Without
it we have issue with incorrect page->_refcount . It is somehow
related with AMD IOMMU, because on different platforms we do not
have such problems.
Joerg, could you look at this ? Thanks.
Stanislaw
^ permalink raw reply
* net-next is CLOSED
From: David Miller @ 2019-03-04 6:21 UTC (permalink / raw)
To: netdev; +Cc: bpf, linux-wireless, netfilter-devel
Please only bug fixes as we progress through the merge window.
I'll announce when net-next is open again.
Follow me on social media:
https://twitter.com/davem_dokebi
Thank you.
^ permalink raw reply
* [PATCH] carl9170: remove include references to config.cmake
From: Jason Self @ 2019-03-04 4:17 UTC (permalink / raw)
To: linux-wireless; +Cc: chunkeey, Jason Self
The build scripts fail because config.cmake is no longer generated,
having been removed by Christian Lamparter in commit
786134321b6ef391f04409de1200482e7693284d. But: The include was not
updated, and the file was still expected to be present. This removes
the references to it in the CMakeLists.txt files.
---
CMakeLists.txt | 2 --
carlfw/CMakeLists.txt | 1 -
minifw/CMakeLists.txt | 1 -
tools/CMakeLists.txt | 2 --
4 files changed, 6 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fb18f15..ebbdee3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,8 +5,6 @@ project(carl9170)
#if you don't want the full compiler output, remove the following line
#set(CMAKE_VERBOSE_MAKEFILE ON)
-include("config.cmake")
-
add_subdirectory(carlfw)
if (CONFIG_CARL9170FW_BUILD_MINIBOOT)
diff --git a/carlfw/CMakeLists.txt b/carlfw/CMakeLists.txt
index 8647a75..ae540fd 100644
--- a/carlfw/CMakeLists.txt
+++ b/carlfw/CMakeLists.txt
@@ -3,7 +3,6 @@ cmake_minimum_required(VERSION 2.8)
project(carl9170.fw)
include("../extra/sh-elf-linux.cmake")
-include("../config.cmake")
set(CARL9170_FW_ELF carl9170.elf)
set(CARLFW_CFLAGS_WARNING "-W -Wall -Wextra -Wunreachable-code -Winline -Wlogical-op -Wno-packed-bitfield-compat -Winit-self -Wshadow -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wformat=2 -Wcast-align -Wmissing-format-attribute -Wmissing-prototypes -Wtype-limits -Wmissing-declarations -Wmissing-noreturn -Wredundant-decls -Wnested-externs -Wdisabled-optimization -Wpointer-arith -Wvolatile-register-var -Waddress -Wbad-function-cast -Wunsafe-loop-optimizations")
diff --git a/minifw/CMakeLists.txt b/minifw/CMakeLists.txt
index adf5e08..9e5ad26 100644
--- a/minifw/CMakeLists.txt
+++ b/minifw/CMakeLists.txt
@@ -3,7 +3,6 @@ cmake_minimum_required(VERSION 2.8)
project(miniboot.fw)
include("../extra/sh-elf-linux.cmake")
-include("../config.cmake")
set(miniboot_src miniboot.S)
set_source_files_properties(miniboot.S PROPERTIES LANGUAGE C)
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
index 13262d6..8f6ac4a 100644
--- a/tools/CMakeLists.txt
+++ b/tools/CMakeLists.txt
@@ -8,8 +8,6 @@ endif (CONFIG_CARL9170FW_MAKE_RELEASE)
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/extra)
-include("../config.cmake")
-
include_directories (../include/linux ../include/shared ../include lib include)
add_subdirectory(lib)
add_subdirectory(src)
--
2.20.1
^ permalink raw reply related
* RE: Realtek r8822be kernel module does not negotiate 802.11ac connection
From: Tony Chuang @ 2019-03-04 2:34 UTC (permalink / raw)
To: Arend Van Spriel, David R. Bergstein, Larry Finger
Cc: Pkshih, linux-wireless@vger.kernel.org, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org
In-Reply-To: <1693ddc0fd0.278a.9b12b7fc0a3841636cfb5e919b41b954@broadcom.com>
> -----Original Message-----
> From: Arend Van Spriel [mailto:arend.vanspriel@broadcom.com]
>
> > Larry,
> >
> > Sorry about all these extra replies. Shortly after I sent my last
> > message my access point started recognizing the connection as 802.11ac
> > with PHY Rate / Modulation Rate of 866.6 Mbps. What is somewhat
> > misleading is the information reported by iwconfig (see bit rate below).
>
> My bet would be that it is nitrate at which beacon or probe response is
> received. Regardless I would suggest using iw in this day and age.
>
> Regards,
> Arend
>
> > $ iwconfig wlo1
> > wlo1 IEEE 802.11 ESSID:"XXXXXXXXXX-5G"
> > Mode:Managed Frequency:5.22 GHz Access Point:
> > xx:xx:xx:xx:xx:xx
> > Bit Rate=6.5 Mb/s Tx-Power=23 dBm
> > Retry short limit:7 RTS thr:off Fragment thr:off
> > Power Management:on
> > Link Quality=70/70 Signal level=-40 dBm
> > Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
> > Tx excessive retries:0 Invalid misc:11 Missed beacon:0
> >
> > Sincerely,
> >
> > David R. Bergstein
>
It's because the initial version does not collect tx_rate report from the firmware.
So it just print out the initial value. Will be added in the next series. Thanks!
Yan-Hsuan
^ permalink raw reply
* Re: FW: [PATCH] ath10k: fix return value check in wake_tx_q op
From: Yibo Zhao @ 2019-03-04 1:56 UTC (permalink / raw)
To: Kalle Valo; +Cc: erik.stromdahl, linux-wireless, ath10k, linux-wireless-owner
In-Reply-To: <a1c113622b9aec9b32393c0a3e159e32@codeaurora.org>
在 2019-02-25 12:40,Yibo Zhao 写道:
> 在 2019-02-07 22:25,Kalle Valo 写道:
>> Yibo Zhao <yiboz@codeaurora.org> writes:
>>
>>> We have met performance issue on our two-core system after applying
>>> your patch. In WDS mode, we found that the peak throughput in TCP-DL
>>> and UDP-DL dropped more than 10% compared with previous one. And in
>>> some cases, though throughput stays the same, one CPU usage rises
>>> about 20% which leads to 10% in total CPU usage. With your change, I
>>> think driver will try its best to push as many packets as it can.
>>> During this time, the driver's queue lock will be held for too much
>>> time in one CPU and as a result, the other CPU will be blocked if it
>>> wants to acquired the same lock. Working in this way seems not
>>> efficiency.
>>>
>>> So I think it is better to revert the change till we come up with a
>>> new solution.
>>
>> I don't think reverting is a clear option at this stage because that
>> again creates problems for SDIO. IIRC without this patch SDIO was
>> sending one packet a time (or something like that, can't remember all
>> the details right now).
>>
>
> Below is the aqm result after 1 min test with Erik's patch.
>
> target 19999us interval 99999us ecn yes
> tid ac backlog-bytes backlog-packets new-flows drops marks overlimit
> collisions tx-bytes tx-packets flags
> 0 2 0 0 5342229 0 0 0 0 3867657029 5342229 0x0(RUN)
> 1 3 0 0 0 0 0 0 0 0 0 0x0(RUN)
> 2 3 0 0 0 0 0 0 0 0 0 0x0(RUN)
> 3 2 0 0 0 0 0 0 0 0 0 0x0(RUN)
> 4 1 0 0 0 0 0 0 0 0 0 0x0(RUN)
> 5 1 0 0 0 0 0 0 0 0 0 0x0(RUN)
> 6 0 0 0 2 0 0 0 0 144 2 0x0(RUN)
> 7 0 0 0 2 0 0 0 0 282 2 0x0(RUN)
> 8 2 0 0 0 0 0 0 0 0 0 0x0(RUN)
> 9 3 0 0 0 0 0 0 0 0 0 0x0(RUN)
> 10 3 0 0 0 0 0 0 0 0 0 0x0(RUN)
> 11 2 0 0 0 0 0 0 0 0 0 0x0(RUN)
> 12 1 0 0 0 0 0 0 0 0 0 0x0(RUN)
> 13 1 0 0 0 0 0 0 0 0 0 0x0(RUN)
> 14 0 0 0 0 0 0 0 0 0 0 0x0(RUN)
> 15 0 0 0 0 0 0 0 0 0 0 0x0(RUN)
>
> we see no difference between tx-packets and new-flows.
> Whereas if we revert the patch, we get:
>
> target 19999us interval 99999us ecn yes
> tid ac backlog-bytes backlog-packets new-flows drops marks overlimit
> collisions tx-bytes tx-packets flags
> 0 2 0 0 2233059 3 0 9236 12 1159661783 6380867 0x0(RUN)
> 1 3 0 0 0 0 0 0 0 0 0 0x0(RUN)
> 2 3 0 0 0 0 0 0 0 0 0 0x0(RUN)
> 3 2 0 0 0 0 0 0 0 0 0 0x0(RUN)
> 4 1 0 0 0 0 0 0 0 0 0 0x0(RUN)
> 5 1 0 0 0 0 0 0 0 0 0 0x0(RUN)
> 6 0 0 0 1 0 0 0 0 144 2 0x0(RUN)
> 7 0 0 0 1 0 0 0 0 282 2 0x0(RUN)
> 8 2 0 0 0 0 0 0 0 0 0 0x0(RUN)
> 9 3 0 0 0 0 0 0 0 0 0 0x0(RUN)
> 10 3 0 0 0 0 0 0 0 0 0 0x0(RUN)
> 11 2 0 0 0 0 0 0 0 0 0 0x0(RUN)
> 12 1 0 0 0 0 0 0 0 0 0 0x0(RUN)
> 13 1 0 0 0 0 0 0 0 0 0 0x0(RUN)
> 14 0 0 0 0 0 0 0 0 0 0 0x0(RUN)
> 15 0 0 0 0 0 0 0 0 0 0 0x0(RUN)
>
> new-flows are roughly one-third of the total tx-packets.
>
> IMHO, with Erik's change, Erik's change has changed the way fq's
> schedule behavior and it looks like there is no other packets in the
> fq after a packet has been dequeued. And as a result, this flow's
> deficit will be refill and then removed from fq list at once in the
> same CPU. And during this time, the other CPU could be blocked. When
> new packet comes, same thing happens. So we get equal new flows and
> tx-packets.
>
> Things would be different without Erik's change. After a packet has
> been dequeued, this flow's deficit will not be refill immediately in
> CPU0. It is possible that the deficit to be refilled in CPU1 while at
> the same time CPU0 can fetch data from ethernet. So we can see more
> tx-packets delivered to FW from aqm.
>
>
>> Why does this happen only WDS mode? Did you test other modes, like AP
>> or
>> client mode?
> AP mode has same issue. UDP throughput drops more than 10%. As for
> TCP, CPU usage rising a lot although throughput stays similiar.
> So, I'd say Erik's change does not work for us.
Hi Kalle,
May I have your comments?
--
Yibo
^ permalink raw reply
* [PATCH net-next] mt76: fix return value check in mt76_wmac_probe()
From: Wei Yongjun @ 2019-03-04 1:10 UTC (permalink / raw)
To: Felix Fietkau, Lorenzo Bianconi, Kalle Valo, Matthias Brugger
Cc: Wei Yongjun, linux-wireless, linux-arm-kernel, linux-mediatek,
kernel-janitors
In case of error, the function devm_ioremap_resource() returns ERR_PTR()
and never returns NULL. The NULL test in the return value check should
be replaced with IS_ERR().
Fixes: c8846e101502 ("mt76: add driver for MT7603E and MT7628/7688")
Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
---
drivers/net/wireless/mediatek/mt76/mt7603/soc.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/wireless/mediatek/mt76/mt7603/soc.c b/drivers/net/wireless/mediatek/mt76/mt7603/soc.c
index e13fea80d970..b920be1f5718 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7603/soc.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7603/soc.c
@@ -23,9 +23,9 @@ mt76_wmac_probe(struct platform_device *pdev)
}
mem_base = devm_ioremap_resource(&pdev->dev, res);
- if (!mem_base) {
+ if (IS_ERR(mem_base)) {
dev_err(&pdev->dev, "Failed to get memory resource\n");
- return -EINVAL;
+ return PTR_ERR(mem_base);
}
mdev = mt76_alloc_device(&pdev->dev, sizeof(*dev), &mt7603_ops,
^ permalink raw reply related
* Re: [BUG] mt76x0u: Probing issues on Raspberry Pi 3 B+
From: Stefan Wahren @ 2019-03-03 21:16 UTC (permalink / raw)
To: Stanislaw Gruszka, Lorenzo Bianconi
Cc: Felix Fietkau, Alan Stern, Doug Anderson, Minas Harutyunyan,
USB list, linux-wireless
In-Reply-To: <20190220163229.GB14165@redhat.com>
Hi,
> Stanislaw Gruszka <sgruszka@redhat.com> hat am 20. Februar 2019 um 17:32 geschrieben:
>
>
> On Wed, Feb 20, 2019 at 05:22:18PM +0100, Lorenzo Bianconi wrote:
> > > On Wed, Feb 20, 2019 at 02:22:08PM +0100, Lorenzo Bianconi wrote:
> > > > > On Tue, Feb 19, 2019 at 01:19:26PM +0100, Felix Fietkau wrote:
> > > > > > >> >> The way I see it, we have two choices.
> > > > > > >> >> 1. Fix dwc2 to do its alignment quirk for the urb->sg != NULL case
> > > > > > >> >> 2. Rely on urb->transfer_buffer and keep urb->sg NULL
> > > > > > >> >
> > > > > > >> > I agree, if this is only needed for dwc2. Though I would investigate
> > > > > > >> > if this is not a bug on other platforms as well.
> > > > > > >> >From what I can see, using Lorenzo's patches seems to be the better
> > > > > > >> solution, since they avoid these corner cases in dwc2 (and maybe other
> > > > > > >> drivers as well). I will apply them and then we'll see if we need to do
> > > > > > >> any further improvements later on.
> > > > > > >
> > > > > > > They work on rpi dwc2, but they do not address root of the problem.
> > > > > > > There is clearly something wrong how mt76usb handle SG, what is not
> > > > > > > fixed. And adding disable_usb_sg module parameter for hcd's supporting
> > > > > > > SG should be red flag.
> > > > > > I think we're simply dealing with multiple issues here, only some of
> > > > > > which are fixed by Lorenzo's patches.
> > > > > > I'm pretty sure it's still wrong for mt76 to try to align its buffers,
> > > > > > since the Linux USB API supports non-aligned transfer buffers and it
> > > > > > should be up to the controller driver to deal with that.
> > > > >
> > > > > Agree.
> > > > >
> > > > > > dwc2 tries to do that, but that has limitations which I already pointed
> > > > > > out and which are properly dealt with by Lorenzo's patches.
> > > > >
> > > > > I planed to just accept current solution, but I started to work on patch
> > > > > that remove len, sglen arguments from mt76u_buf_alloc() and use
> > > > > q->buf_size and SKB_WITH_OVERHEAD(q->buf_size) directly and realized how
> > > > > related code is now tangled.
> > > > >
> > > > > Would be ok to send this patch with proper changelog as fix for RPI
> > > > > against wireless-drivers and cc:stable (assuming it works and really
> > > > > fix things on RPI) and revert Lorenzo's patches in -next ?
> > > >
> > > > Hi Stanislaw,
> > > >
> > > > what is the advantage of doing so?
> > > To have small fix proper for -stable to fix the problem in 4.20 and 4.19,
> > > and have simpler code.
> >
> > merging the series I sent we will have a pretty simple approach, just a
> > single routine that allocates the rx buffers in the control path according to
> > the operating mode.
>
FWIW i tested current linux-next and it also works with arm64/defconfig on Raspberry Pi 3B.
Thanks
>
> Stanislaw
^ permalink raw reply
* Re: brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000): clkctl 0x50
From: Rafał Miłecki @ 2019-03-03 21:03 UTC (permalink / raw)
To: Krzysiek Rosinski; +Cc: linux-wireless@vger.kernel.org
In-Reply-To: <CAAUgxQ+PU4Z5Nhj8K5r3ijKm87-GvTg9QffSjOenHWDRDauZSg@mail.gmail.com>
On Sun, 3 Mar 2019 at 20:06, Krzysiek Rosinski <krzysiek@jrdltd.co.uk> wrote:
> On Sun, Mar 3, 2019 at 10:22 AM Krzysiek Rosinski <krzysiek@jrdltd.co.uk> wrote:
> > I'm working on a custom board with cyw4343 connected to osd3358-sm (TI
> > am3358), when I load the brcmfmac driver I get 'HT Avail timeout'
> > error. The same combination of driver+firmware works fine on Raspberry
> > Pi Zero W.
> >
> > I've tried to gather as much information I can from both; the custom
> > board and pi. This is available here:
> >
> > https://www.dropbox.com/s/vqejyrixbxx1z8d/logs.tar.gz?dl=0
> >
> > I have a custom board with cyw4343 chip fitted and also flyleded
> > Murata 1DX to the PocketBeagle, both give the same error code.
> >
> > My setup is as follows:
> >
> > osd335x-sm (TI am3348), cyw4343, 37.4 MHz xtal.
> > Linux beaglebone 4.14.93-bone17.1 #1 PREEMPT Mon Feb 25 16:27:58 UTC
> > 2019 armv7l GNU/Linux
> > brcmfmac: cypress v4.14.52-backports
> > brcm43430-sdio.bin: Version: 7.45.98.38
> >
> > Is there something obvious which I'm doing wrong? Can you give me a
> > hint on how to move with this further, please?
You have to find new enough bcmdevs.h.
Try Googling BFL3_FEMCTRL_SUB and you should find many BFL3_* defines easily.
^ permalink raw reply
* Re: brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000): clkctl 0x50
From: Krzysiek Rosinski @ 2019-03-03 19:04 UTC (permalink / raw)
To: linux-wireless
In-Reply-To: <CAAUgxQLVXy4X-h+dLK0WrU5_cvbx0+mxvyFRFuNkYkybP4f_1g@mail.gmail.com>
On Sun, Mar 3, 2019 at 10:22 AM Krzysiek Rosinski <krzysiek@jrdltd.co.uk> wrote:
>
> Hi,
>
> I'm working on a custom board with cyw4343 connected to osd3358-sm (TI
> am3358), when I load the brcmfmac driver I get 'HT Avail timeout'
> error. The same combination of driver+firmware works fine on Raspberry
> Pi Zero W.
>
> I've tried to gather as much information I can from both; the custom
> board and pi. This is available here:
>
> https://www.dropbox.com/s/vqejyrixbxx1z8d/logs.tar.gz?dl=0
>
> I have a custom board with cyw4343 chip fitted and also flyleded
> Murata 1DX to the PocketBeagle, both give the same error code.
>
> My setup is as follows:
>
> osd335x-sm (TI am3348), cyw4343, 37.4 MHz xtal.
> Linux beaglebone 4.14.93-bone17.1 #1 PREEMPT Mon Feb 25 16:27:58 UTC
> 2019 armv7l GNU/Linux
> brcmfmac: cypress v4.14.52-backports
> brcm43430-sdio.bin: Version: 7.45.98.38
>
> Is there something obvious which I'm doing wrong? Can you give me a
> hint on how to move with this further, please?
>
> Kind regards,
> Krzysztof
Hi,
Actually, I've managed to fix this with information from the "AP6335
with mainline kernel" thread:
"boardflags3 (...) to 0x101188"
this fixed my problem too. Is there documentation which says what
boardflags3 means, please?
Once I've fixed this problem this show up:
[ 378.143229] omap_hsmmc 47810000.mmc: MMC start dma failure
[ 378.148856] brcmfmac: brcmf_sdiod_sglist_rw: CMD53 sg block write failed -22
[ 378.159997] brcmfmac: brcmf_sdio_txfail: sdio error, abort command
and terminate frame
I've managed to fix this by applying patch from here:
https://e2e.ti.com/support/processors/f/791/t/541016?AM335X-Error-message-in-SDIO-driver
Kind regards,
Krzysztof
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox