All of lore.kernel.org
 help / color / mirror / Atom feed
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 --]

      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.