Linux-Wireless Archive on lore.kernel.org
 help / Atom feed
* [PATCH v2] mt76: mmio: introduce mt76x02_check_tx_hang watchdog
       [not found] <cover.1546004654.git.lorenzo.bianconi@redhat.com>
@ 2018-12-28 14:44 ` Lorenzo Bianconi
  2018-12-28 18:50   ` kbuild test robot
  2018-12-29 18:50   ` Felix Fietkau
  0 siblings, 2 replies; 6+ messages in thread
From: Lorenzo Bianconi @ 2018-12-28 14:44 UTC (permalink / raw)
  To: nbd; +Cc: linux-wireless, sgruszka

Port mt76x02_check_tx_hang watchdog from vendor driver in order to
perform a device reset when tx mac/dma logic hangs. Tx mac/dma stuck
has been observed when the device is heavy loaded or in a noisy
environment. Moreover introduce wdt delayed work in order to run
tx_hang watchdog. For the moment run mt76x02_check_tx_hang watchdog
just on mt76x2 devices since the issue has not been observed on mt76x0
driver yet

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
---
Changes since v1:
- drop patch 1/2 and introduce wdt work
- move watchdog routines in mt76x02_mmio.c
---
 drivers/net/wireless/mediatek/mt76/mt76.h     |   1 +
 drivers/net/wireless/mediatek/mt76/mt76x02.h  |   8 ++
 .../wireless/mediatek/mt76/mt76x02_debugfs.c  |   2 +
 .../net/wireless/mediatek/mt76/mt76x02_mac.c  |   1 -
 .../net/wireless/mediatek/mt76/mt76x02_mmio.c | 124 ++++++++++++++++++
 .../net/wireless/mediatek/mt76/mt76x02_util.c |   2 +
 .../wireless/mediatek/mt76/mt76x2/pci_init.c  |   1 +
 .../wireless/mediatek/mt76/mt76x2/pci_main.c  |   2 +
 8 files changed, 140 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mt76.h b/drivers/net/wireless/mediatek/mt76/mt76.h
index 5cd508a68609..8ef430d8afc4 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76.h
+++ b/drivers/net/wireless/mediatek/mt76/mt76.h
@@ -421,6 +421,7 @@ struct mt76_dev {
 	struct mt76_queue q_tx[__MT_TXQ_MAX];
 	struct mt76_queue q_rx[__MT_RXQ_MAX];
 	const struct mt76_queue_ops *queue_ops;
+	int tx_dma_idx[4];
 
 	wait_queue_head_t tx_wait;
 	struct sk_buff_head status_list;
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02.h b/drivers/net/wireless/mediatek/mt76/mt76x02.h
index f383fdd914c5..f594e8c82500 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02.h
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02.h
@@ -28,6 +28,9 @@
 
 #define MT_CALIBRATE_INTERVAL	HZ
 
+#define MT_WATCHDOG_TIME	(HZ / 10)
+#define MT_TX_HANG_TH		10
+
 #define MT_MAX_CHAINS		2
 struct mt76x02_rx_freq_cal {
 	s8 high_gain[MT_MAX_CHAINS];
@@ -79,6 +82,7 @@ struct mt76x02_dev {
 	struct tasklet_struct pre_tbtt_tasklet;
 	struct delayed_work cal_work;
 	struct delayed_work mac_work;
+	struct delayed_work wdt_work;
 
 	u32 aggr_stats[32];
 
@@ -89,6 +93,9 @@ struct mt76x02_dev {
 	u8 tbtt_count;
 	u16 beacon_int;
 
+	u32 tx_hang_reset;
+	u8 tx_hang_check;
+
 	struct mt76x02_calibration cal;
 
 	s8 target_power;
@@ -142,6 +149,7 @@ s8 mt76x02_tx_get_max_txpwr_adj(struct mt76x02_dev *dev,
 				const struct ieee80211_tx_rate *rate);
 s8 mt76x02_tx_get_txpwr_adj(struct mt76x02_dev *dev, s8 txpwr,
 			    s8 max_txpwr_adj);
+void mt76x02_wdt_work(struct work_struct *work);
 void mt76x02_tx_set_txpwr_auto(struct mt76x02_dev *dev, s8 txpwr);
 void mt76x02_set_tx_ackto(struct mt76x02_dev *dev);
 void mt76x02_set_coverage_class(struct ieee80211_hw *hw,
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_debugfs.c b/drivers/net/wireless/mediatek/mt76/mt76x02_debugfs.c
index a9d52ba1e270..7580c5c986ff 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_debugfs.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_debugfs.c
@@ -133,5 +133,7 @@ void mt76x02_init_debugfs(struct mt76x02_dev *dev)
 				    read_txpower);
 
 	debugfs_create_devm_seqfile(dev->mt76.dev, "agc", dir, read_agc);
+
+	debugfs_create_u32("tx_hang_reset", 0400, dir, &dev->tx_hang_reset);
 }
 EXPORT_SYMBOL_GPL(mt76x02_init_debugfs);
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c b/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
index cc584ea4a8d7..6adea0278284 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
@@ -943,7 +943,6 @@ void mt76x02_mac_work(struct work_struct *work)
 		dev->aggr_stats[idx++] += val >> 16;
 	}
 
-	/* XXX: check beacon stuck for ap mode */
 	if (!dev->beacon_mask)
 		mt76x02_check_mac_err(dev);
 
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c b/drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c
index 6974acc75e2b..6236c6121c01 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c
@@ -385,3 +385,127 @@ void mt76x02_mac_start(struct mt76x02_dev *dev)
 			   MT_INT_TX_STAT);
 }
 EXPORT_SYMBOL_GPL(mt76x02_mac_start);
+
+static bool mt76x02_tx_hang(struct mt76x02_dev *dev)
+{
+	u32 dma_idx, prev_dma_idx;
+	struct mt76_queue *q;
+	int i;
+
+	for (i = 0; i < 4; i++) {
+		q = &dev->mt76.q_tx[i];
+
+		if (!q->queued)
+			continue;
+
+		prev_dma_idx = dev->mt76.tx_dma_idx[i];
+		dma_idx = ioread32(&q->regs->dma_idx);
+		dev->mt76.tx_dma_idx[i] = dma_idx;
+
+		if (prev_dma_idx == dma_idx)
+			break;
+	}
+
+	return i < 4;
+}
+
+static void mt76x02_watchdog_reset(struct mt76x02_dev *dev)
+{
+	u32 mask = dev->mt76.mmio.irqmask;
+	int i;
+
+	ieee80211_stop_queues(dev->mt76.hw);
+	set_bit(MT76_RESET, &dev->mt76.state);
+
+	tasklet_disable(&dev->pre_tbtt_tasklet);
+	tasklet_disable(&dev->tx_tasklet);
+
+	for (i = 0; i < ARRAY_SIZE(dev->mt76.napi); i++)
+		napi_disable(&dev->mt76.napi[i]);
+
+	mutex_lock(&dev->mt76.mutex);
+
+	if (dev->beacon_mask)
+		mt76_clear(dev, MT_BEACON_TIME_CFG,
+			   MT_BEACON_TIME_CFG_BEACON_TX |
+			   MT_BEACON_TIME_CFG_TBTT_EN);
+
+	mt76x02_irq_disable(dev, mask);
+
+	/* perform device reset */
+	mt76_clear(dev, MT_TXOP_CTRL_CFG, MT_TXOP_ED_CCA_EN);
+	mt76_wr(dev, MT_MAC_SYS_CTRL, 0);
+	mt76_clear(dev, MT_WPDMA_GLO_CFG,
+		   MT_WPDMA_GLO_CFG_TX_DMA_EN | MT_WPDMA_GLO_CFG_RX_DMA_EN);
+	usleep_range(5000, 10000);
+	mt76_wr(dev, MT_INT_SOURCE_CSR, 0xffffffff);
+
+	/* let fw reset DMA */
+	mt76_set(dev, 0x734, 0x3);
+
+	for (i = 0; i < ARRAY_SIZE(dev->mt76.q_tx); i++)
+		mt76_queue_tx_cleanup(dev, i, true);
+
+	for (i = 0; i < ARRAY_SIZE(dev->mt76.q_rx); i++)
+		mt76_queue_rx_reset(dev, i);
+
+	mt76_wr(dev, MT_MAC_SYS_CTRL,
+		MT_MAC_SYS_CTRL_ENABLE_TX | MT_MAC_SYS_CTRL_ENABLE_RX);
+	mt76_set(dev, MT_WPDMA_GLO_CFG,
+		 MT_WPDMA_GLO_CFG_TX_DMA_EN | MT_WPDMA_GLO_CFG_RX_DMA_EN);
+	if (dev->ed_monitor)
+		mt76_set(dev, MT_TXOP_CTRL_CFG, MT_TXOP_ED_CCA_EN);
+
+	if (dev->beacon_mask)
+		mt76_set(dev, MT_BEACON_TIME_CFG,
+			 MT_BEACON_TIME_CFG_BEACON_TX |
+			 MT_BEACON_TIME_CFG_TBTT_EN);
+
+	mt76x02_irq_enable(dev, mask);
+
+	mutex_unlock(&dev->mt76.mutex);
+
+	clear_bit(MT76_RESET, &dev->mt76.state);
+
+	tasklet_enable(&dev->tx_tasklet);
+	tasklet_schedule(&dev->tx_tasklet);
+
+	tasklet_enable(&dev->pre_tbtt_tasklet);
+
+	for (i = 0; i < ARRAY_SIZE(dev->mt76.napi); i++) {
+		napi_enable(&dev->mt76.napi[i]);
+		napi_schedule(&dev->mt76.napi[i]);
+	}
+
+	ieee80211_wake_queues(dev->mt76.hw);
+
+	mt76_txq_schedule_all(&dev->mt76);
+}
+
+static void mt76x02_check_tx_hang(struct mt76x02_dev *dev)
+{
+	if (mt76x02_tx_hang(dev)) {
+		if (++dev->tx_hang_check < MT_TX_HANG_TH)
+			return;
+
+		mt76x02_watchdog_reset(dev);
+
+		dev->tx_hang_reset++;
+		dev->tx_hang_check = 0;
+		memset(dev->mt76.tx_dma_idx, 0xff,
+		       sizeof(dev->mt76.tx_dma_idx));
+	} else {
+		dev->tx_hang_check = 0;
+	}
+}
+
+void mt76x02_wdt_work(struct work_struct *work)
+{
+	struct mt76x02_dev *dev = container_of(work, struct mt76x02_dev,
+					       wdt_work.work);
+
+	mt76x02_check_tx_hang(dev);
+
+	ieee80211_queue_delayed_work(mt76_hw(dev), &dev->wdt_work,
+				     MT_WATCHDOG_TIME);
+}
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
index aac64d0969b8..3c878f18e05d 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
@@ -93,6 +93,8 @@ void mt76x02_init_device(struct mt76x02_dev *dev)
 					 MT_DMA_HDR_LEN;
 		wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION);
 	} else {
+		INIT_DELAYED_WORK(&dev->wdt_work, mt76x02_wdt_work);
+
 		mt76x02_dfs_init_detector(dev);
 
 		wiphy->reg_notifier = mt76x02_regd_notifier;
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x2/pci_init.c b/drivers/net/wireless/mediatek/mt76/mt76x2/pci_init.c
index 9f313824eead..34418e575542 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x2/pci_init.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x2/pci_init.c
@@ -301,6 +301,7 @@ void mt76x2_stop_hardware(struct mt76x02_dev *dev)
 {
 	cancel_delayed_work_sync(&dev->cal_work);
 	cancel_delayed_work_sync(&dev->mac_work);
+	cancel_delayed_work_sync(&dev->wdt_work);
 	mt76x02_mcu_set_radio_state(dev, false);
 	mt76x2_mac_stop(dev, false);
 }
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x2/pci_main.c b/drivers/net/wireless/mediatek/mt76/mt76x2/pci_main.c
index b54a32397486..6a87b88eb036 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x2/pci_main.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x2/pci_main.c
@@ -34,6 +34,8 @@ mt76x2_start(struct ieee80211_hw *hw)
 
 	ieee80211_queue_delayed_work(mt76_hw(dev), &dev->mac_work,
 				     MT_CALIBRATE_INTERVAL);
+	ieee80211_queue_delayed_work(mt76_hw(dev), &dev->wdt_work,
+				     MT_WATCHDOG_TIME);
 
 	set_bit(MT76_STATE_RUNNING, &dev->mt76.state);
 
-- 
2.20.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] mt76: mmio: introduce mt76x02_check_tx_hang watchdog
  2018-12-28 14:44 ` [PATCH v2] mt76: mmio: introduce mt76x02_check_tx_hang watchdog Lorenzo Bianconi
@ 2018-12-28 18:50   ` kbuild test robot
  2019-01-07 12:44     ` Kalle Valo
  2018-12-29 18:50   ` Felix Fietkau
  1 sibling, 1 reply; 6+ messages in thread
From: kbuild test robot @ 2018-12-28 18:50 UTC (permalink / raw)
  To: Lorenzo Bianconi; +Cc: kbuild-all, nbd, linux-wireless, sgruszka

[-- Attachment #1: Type: text/plain, Size: 5093 bytes --]

Hi Lorenzo,

I love your patch! Yet something to improve:

[auto build test ERROR on wireless-drivers-next/master]
[also build test ERROR on next-20181224]
[cannot apply to v4.20]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Lorenzo-Bianconi/mt76-mmio-introduce-mt76x02_check_tx_hang-watchdog/20181228-224737
base:   https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git master
config: i386-randconfig-sb0-12290140 (attached as .config)
compiler: gcc-4.9 (Debian 4.9.4-2) 4.9.4
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All errors (new ones prefixed by >>):

   In file included from drivers/net/wireless/mediatek/mt76/mt76x02.h:23:0,
                    from drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c:21:
   drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c: In function 'mt76x02_watchdog_reset':
>> drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c:435:36: error: 'MT_TXOP_ED_CCA_EN' undeclared (first use in this function)
     mt76_clear(dev, MT_TXOP_CTRL_CFG, MT_TXOP_ED_CCA_EN);
                                       ^
   drivers/net/wireless/mediatek/mt76/mt76.h:507:65: note: in definition of macro 'mt76_rmw'
    #define mt76_rmw(dev, ...) (dev)->mt76.bus->rmw(&((dev)->mt76), __VA_ARGS__)
                                                                    ^
   drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c:435:2: note: in expansion of macro 'mt76_clear'
     mt76_clear(dev, MT_TXOP_CTRL_CFG, MT_TXOP_ED_CCA_EN);
     ^
   drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c:435:36: note: each undeclared identifier is reported only once for each function it appears in
     mt76_clear(dev, MT_TXOP_CTRL_CFG, MT_TXOP_ED_CCA_EN);
                                       ^
   drivers/net/wireless/mediatek/mt76/mt76.h:507:65: note: in definition of macro 'mt76_rmw'
    #define mt76_rmw(dev, ...) (dev)->mt76.bus->rmw(&((dev)->mt76), __VA_ARGS__)
                                                                    ^
   drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c:435:2: note: in expansion of macro 'mt76_clear'
     mt76_clear(dev, MT_TXOP_CTRL_CFG, MT_TXOP_ED_CCA_EN);
     ^
   drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c:455:9: error: 'struct mt76x02_dev' has no member named 'ed_monitor'
     if (dev->ed_monitor)
            ^

vim +/MT_TXOP_ED_CCA_EN +435 drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c

   410	
   411	static void mt76x02_watchdog_reset(struct mt76x02_dev *dev)
   412	{
   413		u32 mask = dev->mt76.mmio.irqmask;
   414		int i;
   415	
   416		ieee80211_stop_queues(dev->mt76.hw);
   417		set_bit(MT76_RESET, &dev->mt76.state);
   418	
   419		tasklet_disable(&dev->pre_tbtt_tasklet);
   420		tasklet_disable(&dev->tx_tasklet);
   421	
   422		for (i = 0; i < ARRAY_SIZE(dev->mt76.napi); i++)
   423			napi_disable(&dev->mt76.napi[i]);
   424	
   425		mutex_lock(&dev->mt76.mutex);
   426	
   427		if (dev->beacon_mask)
   428			mt76_clear(dev, MT_BEACON_TIME_CFG,
   429				   MT_BEACON_TIME_CFG_BEACON_TX |
   430				   MT_BEACON_TIME_CFG_TBTT_EN);
   431	
   432		mt76x02_irq_disable(dev, mask);
   433	
   434		/* perform device reset */
 > 435		mt76_clear(dev, MT_TXOP_CTRL_CFG, MT_TXOP_ED_CCA_EN);
   436		mt76_wr(dev, MT_MAC_SYS_CTRL, 0);
   437		mt76_clear(dev, MT_WPDMA_GLO_CFG,
   438			   MT_WPDMA_GLO_CFG_TX_DMA_EN | MT_WPDMA_GLO_CFG_RX_DMA_EN);
   439		usleep_range(5000, 10000);
   440		mt76_wr(dev, MT_INT_SOURCE_CSR, 0xffffffff);
   441	
   442		/* let fw reset DMA */
   443		mt76_set(dev, 0x734, 0x3);
   444	
   445		for (i = 0; i < ARRAY_SIZE(dev->mt76.q_tx); i++)
   446			mt76_queue_tx_cleanup(dev, i, true);
   447	
   448		for (i = 0; i < ARRAY_SIZE(dev->mt76.q_rx); i++)
   449			mt76_queue_rx_reset(dev, i);
   450	
   451		mt76_wr(dev, MT_MAC_SYS_CTRL,
   452			MT_MAC_SYS_CTRL_ENABLE_TX | MT_MAC_SYS_CTRL_ENABLE_RX);
   453		mt76_set(dev, MT_WPDMA_GLO_CFG,
   454			 MT_WPDMA_GLO_CFG_TX_DMA_EN | MT_WPDMA_GLO_CFG_RX_DMA_EN);
   455		if (dev->ed_monitor)
   456			mt76_set(dev, MT_TXOP_CTRL_CFG, MT_TXOP_ED_CCA_EN);
   457	
   458		if (dev->beacon_mask)
   459			mt76_set(dev, MT_BEACON_TIME_CFG,
   460				 MT_BEACON_TIME_CFG_BEACON_TX |
   461				 MT_BEACON_TIME_CFG_TBTT_EN);
   462	
   463		mt76x02_irq_enable(dev, mask);
   464	
   465		mutex_unlock(&dev->mt76.mutex);
   466	
   467		clear_bit(MT76_RESET, &dev->mt76.state);
   468	
   469		tasklet_enable(&dev->tx_tasklet);
   470		tasklet_schedule(&dev->tx_tasklet);
   471	
   472		tasklet_enable(&dev->pre_tbtt_tasklet);
   473	
   474		for (i = 0; i < ARRAY_SIZE(dev->mt76.napi); i++) {
   475			napi_enable(&dev->mt76.napi[i]);
   476			napi_schedule(&dev->mt76.napi[i]);
   477		}
   478	
   479		ieee80211_wake_queues(dev->mt76.hw);
   480	
   481		mt76_txq_schedule_all(&dev->mt76);
   482	}
   483	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 34694 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] mt76: mmio: introduce mt76x02_check_tx_hang watchdog
  2018-12-28 14:44 ` [PATCH v2] mt76: mmio: introduce mt76x02_check_tx_hang watchdog Lorenzo Bianconi
  2018-12-28 18:50   ` kbuild test robot
@ 2018-12-29 18:50   ` Felix Fietkau
  1 sibling, 0 replies; 6+ messages in thread
From: Felix Fietkau @ 2018-12-29 18:50 UTC (permalink / raw)
  To: Lorenzo Bianconi; +Cc: linux-wireless, sgruszka

On 2018-12-28 15:44, Lorenzo Bianconi wrote:
> Port mt76x02_check_tx_hang watchdog from vendor driver in order to
> perform a device reset when tx mac/dma logic hangs. Tx mac/dma stuck
> has been observed when the device is heavy loaded or in a noisy
> environment. Moreover introduce wdt delayed work in order to run
> tx_hang watchdog. For the moment run mt76x02_check_tx_hang watchdog
> just on mt76x2 devices since the issue has not been observed on mt76x0
> driver yet
> 
> Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>

Applied, thanks.

- Felix

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] mt76: mmio: introduce mt76x02_check_tx_hang watchdog
  2018-12-28 18:50   ` kbuild test robot
@ 2019-01-07 12:44     ` Kalle Valo
  2019-01-07 13:26       ` Lorenzo Bianconi
  0 siblings, 1 reply; 6+ messages in thread
From: Kalle Valo @ 2019-01-07 12:44 UTC (permalink / raw)
  To: kbuild test robot
  Cc: Lorenzo Bianconi, kbuild-all, nbd, linux-wireless, sgruszka

kbuild test robot <lkp@intel.com> writes:

> Hi Lorenzo,
>
> I love your patch! Yet something to improve:
>
> [auto build test ERROR on wireless-drivers-next/master]
> [also build test ERROR on next-20181224]
> [cannot apply to v4.20]
> [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
>
> url:    https://github.com/0day-ci/linux/commits/Lorenzo-Bianconi/mt76-mmio-introduce-mt76x02_check_tx_hang-watchdog/20181228-224737
> base:   https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git master
> config: i386-randconfig-sb0-12290140 (attached as .config)
> compiler: gcc-4.9 (Debian 4.9.4-2) 4.9.4
> reproduce:
>         # save the attached .config to linux build tree
>         make ARCH=i386 
>
> All errors (new ones prefixed by >>):
>
>    In file included from drivers/net/wireless/mediatek/mt76/mt76x02.h:23:0,
>                     from drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c:21:
>    drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c: In function 'mt76x02_watchdog_reset':
>>> drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c:435:36: error: 'MT_TXOP_ED_CCA_EN' undeclared (first use in this function)

Didn't check the sources but looks like a valid error to me. Can you fix
this, please?

-- 
Kalle Valo

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] mt76: mmio: introduce mt76x02_check_tx_hang watchdog
  2019-01-07 12:44     ` Kalle Valo
@ 2019-01-07 13:26       ` Lorenzo Bianconi
  2019-01-07 13:31         ` Kalle Valo
  0 siblings, 1 reply; 6+ messages in thread
From: Lorenzo Bianconi @ 2019-01-07 13:26 UTC (permalink / raw)
  To: Kalle Valo; +Cc: kbuild test robot, kbuild-all, nbd, linux-wireless, sgruszka

> kbuild test robot <lkp@intel.com> writes:
> 
> > Hi Lorenzo,
> >
> > I love your patch! Yet something to improve:
> >
> > [auto build test ERROR on wireless-drivers-next/master]
> > [also build test ERROR on next-20181224]
> > [cannot apply to v4.20]
> > [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
> >
> > url:    https://github.com/0day-ci/linux/commits/Lorenzo-Bianconi/mt76-mmio-introduce-mt76x02_check_tx_hang-watchdog/20181228-224737
> > base:   https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git master
> > config: i386-randconfig-sb0-12290140 (attached as .config)
> > compiler: gcc-4.9 (Debian 4.9.4-2) 4.9.4
> > reproduce:
> >         # save the attached .config to linux build tree
> >         make ARCH=i386 
> >
> > All errors (new ones prefixed by >>):
> >
> >    In file included from drivers/net/wireless/mediatek/mt76/mt76x02.h:23:0,
> >                     from drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c:21:
> >    drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c: In function 'mt76x02_watchdog_reset':
> >>> drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c:435:36: error: 'MT_TXOP_ED_CCA_EN' undeclared (first use in this function)
> 
> Didn't check the sources but looks like a valid error to me. Can you fix
> this, please?

Hi Kalle,

This patch needs to be applied on top of 'add EDCCA support to mt76x{0,2}e drivers'
series (https://patchwork.kernel.org/cover/10727149/). I forgot to
point it out, sorry. However Felix has already applied them in the correct order,
so nothing to do here.

Regards,
Lorenzo

> 
> -- 
> Kalle Valo

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] mt76: mmio: introduce mt76x02_check_tx_hang watchdog
  2019-01-07 13:26       ` Lorenzo Bianconi
@ 2019-01-07 13:31         ` Kalle Valo
  0 siblings, 0 replies; 6+ messages in thread
From: Kalle Valo @ 2019-01-07 13:31 UTC (permalink / raw)
  To: Lorenzo Bianconi
  Cc: kbuild test robot, kbuild-all, nbd, linux-wireless, sgruszka

Lorenzo Bianconi <lorenzo.bianconi@redhat.com> writes:

>> kbuild test robot <lkp@intel.com> writes:
>> 
>> > Hi Lorenzo,
>> >
>> > I love your patch! Yet something to improve:
>> >
>> > [auto build test ERROR on wireless-drivers-next/master]
>> > [also build test ERROR on next-20181224]
>> > [cannot apply to v4.20]
>> > [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
>> >
>> > url:    https://github.com/0day-ci/linux/commits/Lorenzo-Bianconi/mt76-mmio-introduce-mt76x02_check_tx_hang-watchdog/20181228-224737
>> > base:   https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git master
>> > config: i386-randconfig-sb0-12290140 (attached as .config)
>> > compiler: gcc-4.9 (Debian 4.9.4-2) 4.9.4
>> > reproduce:
>> >         # save the attached .config to linux build tree
>> >         make ARCH=i386 
>> >
>> > All errors (new ones prefixed by >>):
>> >
>> >    In file included from drivers/net/wireless/mediatek/mt76/mt76x02.h:23:0,
>> >                     from drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c:21:
>> >    drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c: In function 'mt76x02_watchdog_reset':
>> >>> drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c:435:36: error: 'MT_TXOP_ED_CCA_EN' undeclared (first use in this function)
>> 
>> Didn't check the sources but looks like a valid error to me. Can you fix
>> this, please?
>
> Hi Kalle,
>
> This patch needs to be applied on top of 'add EDCCA support to mt76x{0,2}e drivers'
> series (https://patchwork.kernel.org/cover/10727149/). I forgot to
> point it out, sorry. However Felix has already applied them in the correct order,
> so nothing to do here.

Good to know, thanks.

-- 
Kalle Valo

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, back to index

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <cover.1546004654.git.lorenzo.bianconi@redhat.com>
2018-12-28 14:44 ` [PATCH v2] mt76: mmio: introduce mt76x02_check_tx_hang watchdog Lorenzo Bianconi
2018-12-28 18:50   ` kbuild test robot
2019-01-07 12:44     ` Kalle Valo
2019-01-07 13:26       ` Lorenzo Bianconi
2019-01-07 13:31         ` Kalle Valo
2018-12-29 18:50   ` Felix Fietkau

Linux-Wireless Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-wireless/0 linux-wireless/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-wireless linux-wireless/ https://lore.kernel.org/linux-wireless \
		linux-wireless@vger.kernel.org linux-wireless@archiver.kernel.org
	public-inbox-index linux-wireless


Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-wireless


AGPL code for this site: git clone https://public-inbox.org/ public-inbox