From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [RFC 7/7] mt76: mt7915: add Wireless Ethernet Dispatch support
Date: Wed, 14 Jul 2021 07:30:35 +0800 [thread overview]
Message-ID: <202107140756.izJpEu6N-lkp@intel.com> (raw)
In-Reply-To: <20210713160745.59707-8-nbd@nbd.name>
[-- Attachment #1: Type: text/plain, Size: 17511 bytes --]
Hi Felix,
[FYI, it's a private test report for your RFC patch.]
[auto build test ERROR on wireless-drivers-next/master]
[also build test ERROR on mac80211-next/master linus/master v5.14-rc1 next-20210713]
[cannot apply to wireless-drivers/master mac80211/master]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Felix-Fietkau/Ethernet-WLAN-hardware-flow-offloading-support-on-MT7622/20210714-001409
base: https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git master
config: powerpc-randconfig-r003-20210713 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 8d69635ed9ecf36fd0ca85906bfde17949671cbe)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install powerpc cross compiling tool for clang build
# apt-get install binutils-powerpc-linux-gnu
# https://github.com/0day-ci/linux/commit/16ac1606c5b18e61fb25775d621cd218f17bb913
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Felix-Fietkau/Ethernet-WLAN-hardware-flow-offloading-support-on-MT7622/20210714-001409
git checkout 16ac1606c5b18e61fb25775d621cd218f17bb913
# save the attached .config to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross O=build_dir ARCH=powerpc SHELL=/bin/bash drivers/net/wireless/mediatek/mt76/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
In file included from drivers/net/wireless/mediatek/mt76/dma.c:6:
In file included from include/linux/dma-mapping.h:7:
In file included from include/linux/device.h:15:
In file included from include/linux/dev_printk.h:16:
In file included from include/linux/ratelimit.h:6:
In file included from include/linux/sched.h:14:
In file included from include/linux/pid.h:5:
In file included from include/linux/rculist.h:10:
In file included from include/linux/list.h:9:
In file included from include/linux/kernel.h:12:
In file included from include/linux/bitops.h:32:
In file included from arch/powerpc/include/asm/bitops.h:62:
arch/powerpc/include/asm/barrier.h:49:9: warning: '__lwsync' macro redefined [-Wmacro-redefined]
#define __lwsync() __asm__ __volatile__ (stringify_in_c(LWSYNC) : : :"memory")
^
<built-in>:309:9: note: previous definition is here
#define __lwsync __builtin_ppc_lwsync
^
drivers/net/wireless/mediatek/mt76/dma.c:111:2: warning: unused variable '_offset' [-Wunused-variable]
Q_WRITE(dev, q, desc_base, q->desc_dma);
^
drivers/net/wireless/mediatek/mt76/dma.c:24:6: note: expanded from macro 'Q_WRITE'
u32 _offset = offsetof(struct mt76_queue_regs, _field); \
^
drivers/net/wireless/mediatek/mt76/dma.c:112:2: warning: unused variable '_offset' [-Wunused-variable]
Q_WRITE(dev, q, ring_size, q->ndesc);
^
drivers/net/wireless/mediatek/mt76/dma.c:24:6: note: expanded from macro 'Q_WRITE'
u32 _offset = offsetof(struct mt76_queue_regs, _field); \
^
drivers/net/wireless/mediatek/mt76/dma.c:113:12: warning: unused variable '_offset' [-Wunused-variable]
q->head = Q_READ(dev, q, dma_idx);
^
drivers/net/wireless/mediatek/mt76/dma.c:11:6: note: expanded from macro 'Q_READ'
u32 _offset = offsetof(struct mt76_queue_regs, _field); \
^
drivers/net/wireless/mediatek/mt76/dma.c:129:2: warning: unused variable '_offset' [-Wunused-variable]
Q_WRITE(dev, q, cpu_idx, 0);
^
drivers/net/wireless/mediatek/mt76/dma.c:24:6: note: expanded from macro 'Q_WRITE'
u32 _offset = offsetof(struct mt76_queue_regs, _field); \
^
drivers/net/wireless/mediatek/mt76/dma.c:130:2: warning: unused variable '_offset' [-Wunused-variable]
Q_WRITE(dev, q, dma_idx, 0);
^
drivers/net/wireless/mediatek/mt76/dma.c:24:6: note: expanded from macro 'Q_WRITE'
u32 _offset = offsetof(struct mt76_queue_regs, _field); \
^
>> drivers/net/wireless/mediatek/mt76/dma.c:154:23: error: no member named 'tx_ring' in 'struct mtk_wed_device'
q->wed_regs = wed->tx_ring[ring].reg_base;
~~~ ^
>> drivers/net/wireless/mediatek/mt76/dma.c:163:54: error: too few arguments provided to function-like macro invocation
ret = mtk_wed_device_txfree_ring_setup(wed, q->regs);
^
include/linux/soc/mediatek/mtk_wed.h:120:9: note: macro 'mtk_wed_device_txfree_ring_setup' defined here
#define mtk_wed_device_txfree_ring_setup(_dev, _ring, _regs) -ENODEV
^
>> drivers/net/wireless/mediatek/mt76/dma.c:163:9: error: use of undeclared identifier 'mtk_wed_device_txfree_ring_setup'
ret = mtk_wed_device_txfree_ring_setup(wed, q->regs);
^
>> drivers/net/wireless/mediatek/mt76/dma.c:165:23: error: no member named 'txfree_ring' in 'struct mtk_wed_device'
q->wed_regs = wed->txfree_ring.reg_base;
~~~ ^
drivers/net/wireless/mediatek/mt76/dma.c:298:2: warning: unused variable '_offset' [-Wunused-variable]
Q_WRITE(dev, q, cpu_idx, q->head);
^
drivers/net/wireless/mediatek/mt76/dma.c:24:6: note: expanded from macro 'Q_WRITE'
u32 _offset = offsetof(struct mt76_queue_regs, _field); \
^
drivers/net/wireless/mediatek/mt76/dma.c:314:10: warning: unused variable '_offset' [-Wunused-variable]
last = Q_READ(dev, q, dma_idx);
^
drivers/net/wireless/mediatek/mt76/dma.c:11:6: note: expanded from macro 'Q_READ'
u32 _offset = offsetof(struct mt76_queue_regs, _field); \
^
drivers/net/wireless/mediatek/mt76/dma.c:326:11: warning: unused variable '_offset' [-Wunused-variable]
last = Q_READ(dev, q, dma_idx);
^
drivers/net/wireless/mediatek/mt76/dma.c:11:6: note: expanded from macro 'Q_READ'
u32 _offset = offsetof(struct mt76_queue_regs, _field); \
^
drivers/net/wireless/mediatek/mt76/dma.c:634:13: warning: unused variable '_offset' [-Wunused-variable]
dma_idx = Q_READ(dev, q, dma_idx);
^
drivers/net/wireless/mediatek/mt76/dma.c:11:6: note: expanded from macro 'Q_READ'
u32 _offset = offsetof(struct mt76_queue_regs, _field); \
^
drivers/net/wireless/mediatek/mt76/dma.c:643:15: warning: unused variable '_offset' [-Wunused-variable]
dma_idx = Q_READ(dev, q, dma_idx);
^
drivers/net/wireless/mediatek/mt76/dma.c:11:6: note: expanded from macro 'Q_READ'
u32 _offset = offsetof(struct mt76_queue_regs, _field); \
^
11 warnings and 4 errors generated.
--
In file included from drivers/net/wireless/mediatek/mt76/tx.c:6:
In file included from drivers/net/wireless/mediatek/mt76/mt76.h:9:
In file included from include/linux/kernel.h:12:
In file included from include/linux/bitops.h:32:
In file included from arch/powerpc/include/asm/bitops.h:62:
arch/powerpc/include/asm/barrier.h:49:9: warning: '__lwsync' macro redefined [-Wmacro-redefined]
#define __lwsync() __asm__ __volatile__ (stringify_in_c(LWSYNC) : : :"memory")
^
<built-in>:309:9: note: previous definition is here
#define __lwsync __builtin_ppc_lwsync
^
>> drivers/net/wireless/mediatek/mt76/tx.c:700:20: error: no member named 'wlan' in 'struct mtk_wed_device'
token >= wed->wlan.token_start)
~~~ ^
drivers/net/wireless/mediatek/mt76/tx.c:725:21: error: no member named 'wlan' in 'struct mtk_wed_device'
token >= wed->wlan.token_start &&
~~~ ^
1 warning and 2 errors generated.
--
In file included from drivers/net/wireless/mediatek/mt76/mt7915/pci.c:7:
In file included from include/linux/kernel.h:12:
In file included from include/linux/bitops.h:32:
In file included from arch/powerpc/include/asm/bitops.h:62:
arch/powerpc/include/asm/barrier.h:49:9: warning: '__lwsync' macro redefined [-Wmacro-redefined]
#define __lwsync() __asm__ __volatile__ (stringify_in_c(LWSYNC) : : :"memory")
^
<built-in>:309:9: note: previous definition is here
#define __lwsync __builtin_ppc_lwsync
^
drivers/net/wireless/mediatek/mt76/mt7915/pci.c:100:25: warning: unused variable 'wed' [-Wunused-variable]
struct mtk_wed_device *wed = &dev->mt76.mmio.wed;
^
drivers/net/wireless/mediatek/mt76/mt7915/pci.c:165:25: warning: unused variable 'wed' [-Wunused-variable]
struct mtk_wed_device *wed = &dev->mt76.mmio.wed;
^
>> drivers/net/wireless/mediatek/mt76/mt7915/pci.c:238:30: error: no member named 'wlan' in 'struct mtk_wed_device'
dev->mt76.token_size = wed->wlan.token_start;
~~~ ^
drivers/net/wireless/mediatek/mt76/mt7915/pci.c:322:7: error: no member named 'wlan' in 'struct mtk_wed_device'
wed->wlan.pci_dev = pdev;
~~~ ^
drivers/net/wireless/mediatek/mt76/mt7915/pci.c:323:7: error: no member named 'wlan' in 'struct mtk_wed_device'
wed->wlan.wpdma_phys = pci_resource_start(pdev, 0) +
~~~ ^
drivers/net/wireless/mediatek/mt76/mt7915/pci.c:325:7: error: no member named 'wlan' in 'struct mtk_wed_device'
wed->wlan.nbuf = 4096;
~~~ ^
drivers/net/wireless/mediatek/mt76/mt7915/pci.c:326:7: error: no member named 'wlan' in 'struct mtk_wed_device'
wed->wlan.token_start = MT7915_TOKEN_SIZE - wed->wlan.nbuf - 1;
~~~ ^
drivers/net/wireless/mediatek/mt76/mt7915/pci.c:326:51: error: no member named 'wlan' in 'struct mtk_wed_device'
wed->wlan.token_start = MT7915_TOKEN_SIZE - wed->wlan.nbuf - 1;
~~~ ^
drivers/net/wireless/mediatek/mt76/mt7915/pci.c:327:7: error: no member named 'wlan' in 'struct mtk_wed_device'
wed->wlan.init_buf = mt7915_wed_init_buf;
~~~ ^
drivers/net/wireless/mediatek/mt76/mt7915/pci.c:328:7: error: no member named 'wlan' in 'struct mtk_wed_device'
wed->wlan.offload_enable = mt7915_wed_offload_enable;
~~~ ^
drivers/net/wireless/mediatek/mt76/mt7915/pci.c:329:7: error: no member named 'wlan' in 'struct mtk_wed_device'
wed->wlan.offload_disable = mt7915_wed_offload_disable;
~~~ ^
>> drivers/net/wireless/mediatek/mt76/mt7915/pci.c:332:14: error: no member named 'irq' in 'struct mtk_wed_device'
irq = wed->irq;
~~~ ^
3 warnings and 10 errors generated.
--
In file included from drivers/net/wireless/mediatek/mt76/mt7915/main.c:4:
In file included from include/linux/etherdevice.h:20:
In file included from include/linux/if_ether.h:19:
In file included from include/linux/skbuff.h:13:
In file included from include/linux/kernel.h:12:
In file included from include/linux/bitops.h:32:
In file included from arch/powerpc/include/asm/bitops.h:62:
arch/powerpc/include/asm/barrier.h:49:9: warning: '__lwsync' macro redefined [-Wmacro-redefined]
#define __lwsync() __asm__ __volatile__ (stringify_in_c(LWSYNC) : : :"memory")
^
<built-in>:309:9: note: previous definition is here
#define __lwsync __builtin_ppc_lwsync
^
>> drivers/net/wireless/mediatek/mt76/mt7915/main.c:1056:33: error: no member named 'wdma_idx' in 'struct mtk_wed_device'
path->mtk_wdma.wdma_idx = wed->wdma_idx;
~~~ ^
1 warning and 1 error generated.
vim +154 drivers/net/wireless/mediatek/mt76/dma.c
22
23 #define Q_WRITE(_dev, _q, _field, _val) do { \
> 24 u32 _offset = offsetof(struct mt76_queue_regs, _field); \
25 if (IS_ENABLED(CONFIG_NET_MEDIATEK_SOC_WED) && \
26 (_q)->flags & MT_QFLAG_WED) \
27 mtk_wed_device_reg_write(&(_dev)->mmio.wed, \
28 ((_q)->wed_regs + _offset), \
29 _val); \
30 else \
31 writel(_val, &(_q)->regs->_field); \
32 } while (0)
33
34 static int mt76_dma_rx_fill(struct mt76_dev *dev, struct mt76_queue *q);
35
36 static struct mt76_txwi_cache *
37 mt76_alloc_txwi(struct mt76_dev *dev)
38 {
39 struct mt76_txwi_cache *t;
40 dma_addr_t addr;
41 u8 *txwi;
42 int size;
43
44 size = L1_CACHE_ALIGN(dev->drv->txwi_size + sizeof(*t));
45 txwi = devm_kzalloc(dev->dev, size, GFP_ATOMIC);
46 if (!txwi)
47 return NULL;
48
49 addr = dma_map_single(dev->dev, txwi, dev->drv->txwi_size,
50 DMA_TO_DEVICE);
51 t = (struct mt76_txwi_cache *)(txwi + dev->drv->txwi_size);
52 t->dma_addr = addr;
53
54 return t;
55 }
56
57 static struct mt76_txwi_cache *
58 __mt76_get_txwi(struct mt76_dev *dev)
59 {
60 struct mt76_txwi_cache *t = NULL;
61
62 spin_lock(&dev->lock);
63 if (!list_empty(&dev->txwi_cache)) {
64 t = list_first_entry(&dev->txwi_cache, struct mt76_txwi_cache,
65 list);
66 list_del(&t->list);
67 }
68 spin_unlock(&dev->lock);
69
70 return t;
71 }
72
73 static struct mt76_txwi_cache *
74 mt76_get_txwi(struct mt76_dev *dev)
75 {
76 struct mt76_txwi_cache *t = __mt76_get_txwi(dev);
77
78 if (t)
79 return t;
80
81 return mt76_alloc_txwi(dev);
82 }
83
84 void
85 mt76_put_txwi(struct mt76_dev *dev, struct mt76_txwi_cache *t)
86 {
87 if (!t)
88 return;
89
90 spin_lock(&dev->lock);
91 list_add(&t->list, &dev->txwi_cache);
92 spin_unlock(&dev->lock);
93 }
94 EXPORT_SYMBOL_GPL(mt76_put_txwi);
95
96 static void
97 mt76_free_pending_txwi(struct mt76_dev *dev)
98 {
99 struct mt76_txwi_cache *t;
100
101 local_bh_disable();
102 while ((t = __mt76_get_txwi(dev)) != NULL)
103 dma_unmap_single(dev->dev, t->dma_addr, dev->drv->txwi_size,
104 DMA_TO_DEVICE);
105 local_bh_enable();
106 }
107
108 static void
109 mt76_dma_sync_idx(struct mt76_dev *dev, struct mt76_queue *q)
110 {
111 Q_WRITE(dev, q, desc_base, q->desc_dma);
112 Q_WRITE(dev, q, ring_size, q->ndesc);
113 q->head = Q_READ(dev, q, dma_idx);
114 q->tail = q->head;
115 }
116
117 static void
118 mt76_dma_queue_reset(struct mt76_dev *dev, struct mt76_queue *q)
119 {
120 int i;
121
122 if (!q)
123 return;
124
125 /* clear descriptors */
126 for (i = 0; i < q->ndesc; i++)
127 q->desc[i].ctrl = cpu_to_le32(MT_DMA_CTL_DMA_DONE);
128
129 Q_WRITE(dev, q, cpu_idx, 0);
> 130 Q_WRITE(dev, q, dma_idx, 0);
131 mt76_dma_sync_idx(dev, q);
132 }
133
134 static int
135 mt76_dma_wed_setup(struct mt76_dev *dev, struct mt76_queue *q)
136 {
137 struct mtk_wed_device *wed = &dev->mmio.wed;
138 int ret, type, ring;
139 u8 flags = q->flags;
140
141 if (!mtk_wed_device_active(wed))
142 q->flags &= ~MT_QFLAG_WED;
143
144 if (!(q->flags & MT_QFLAG_WED))
145 return 0;
146
147 type = FIELD_GET(MT_QFLAG_WED_TYPE, q->flags);
148 ring = FIELD_GET(MT_QFLAG_WED_RING, q->flags);
149
150 switch (type) {
151 case MT76_WED_Q_TX:
152 ret = mtk_wed_device_tx_ring_setup(wed, ring, q->regs);
153 if (!ret)
> 154 q->wed_regs = wed->tx_ring[ring].reg_base;
155 break;
156 case MT76_WED_Q_TXFREE:
157 /* WED txfree queue needs ring to be initialized before setup */
158 q->flags = 0;
159 mt76_dma_queue_reset(dev, q);
160 mt76_dma_rx_fill(dev, q);
161 q->flags = flags;
162
> 163 ret = mtk_wed_device_txfree_ring_setup(wed, q->regs);
164 if (!ret)
> 165 q->wed_regs = wed->txfree_ring.reg_base;
166 break;
167 default:
168 ret = -EINVAL;
169 }
170
171 return ret;
172 }
173
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 43382 bytes --]
prev parent reply other threads:[~2021-07-13 23:30 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-13 16:07 [RFC 0/7] Ethernet->WLAN hardware flow offloading support on MT7622 Felix Fietkau
2021-07-13 16:07 ` [RFC 1/7] mac80211: add support for .ndo_fill_forward_path Felix Fietkau
2021-07-13 16:46 ` Johannes Berg
2021-07-13 21:18 ` kernel test robot
2021-07-13 21:18 ` kernel test robot
2021-07-13 16:07 ` [RFC 2/7] net: ethernet: mtk_eth_soc: add support for Wireless Ethernet Dispatch (WED) Felix Fietkau
2021-07-13 18:31 ` Andrew Lunn
2021-07-14 8:03 ` Felix Fietkau
2021-07-13 16:07 ` [RFC 3/7] net: ethernet: mtk_eth_soc: implement flow offloading to WED devices Felix Fietkau
2021-07-13 18:40 ` Pablo Neira Ayuso
2021-07-14 8:21 ` Felix Fietkau
2021-07-13 18:56 ` Pablo Neira Ayuso
2021-07-14 8:26 ` Felix Fietkau
2021-07-15 21:36 ` Pablo Neira Ayuso
2021-07-16 6:09 ` Felix Fietkau
2021-07-13 16:07 ` [RFC 4/7] mt76: dma: add wrapper macro for accessing queue registers Felix Fietkau
2021-07-13 16:07 ` [RFC 5/7] mt76: make number of tokens configurable dynamically Felix Fietkau
2021-07-13 16:07 ` [RFC 6/7] mt76: mt7915: remove irq parameter from mt7915_mmio_init Felix Fietkau
2021-07-13 16:07 ` [RFC 7/7] mt76: mt7915: add Wireless Ethernet Dispatch support Felix Fietkau
2021-07-13 19:41 ` kernel test robot
2021-07-13 23:30 ` kernel test robot [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202107140756.izJpEu6N-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild-all@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.