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: [PATCH net-next v5 3/3] tsnep: Add TSN endpoint Ethernet MAC driver
Date: Fri, 19 Nov 2021 01:31:08 +0800	[thread overview]
Message-ID: <202111190101.lnVC52ge-lkp@intel.com> (raw)
In-Reply-To: <20211115205005.6132-4-gerhard@engleder-embedded.com>

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

Hi Gerhard,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on net-next/master]

url:    https://github.com/0day-ci/linux/commits/Gerhard-Engleder/TSN-endpoint-Ethernet-MAC-driver/20211116-052158
base:   https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git a5bdc36354cbf1a1a91396f4da548ff484686305
config: m68k-randconfig-r004-20211118 (attached as .config)
compiler: m68k-linux-gcc (GCC) 11.2.0
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
        # https://github.com/0day-ci/linux/commit/3252efb6502fdfc25aa357f7dca6290ba9b140e9
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Gerhard-Engleder/TSN-endpoint-Ethernet-MAC-driver/20211116-052158
        git checkout 3252efb6502fdfc25aa357f7dca6290ba9b140e9
        # save the attached .config to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=m68k SHELL=/bin/bash drivers/net/ethernet/engleder/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All error/warnings (new ones prefixed by >>):

   In file included from include/linux/swab.h:5,
                    from include/uapi/linux/byteorder/big_endian.h:13,
                    from include/linux/byteorder/big_endian.h:5,
                    from arch/m68k/include/uapi/asm/byteorder.h:5,
                    from include/asm-generic/bitops/le.h:7,
                    from arch/m68k/include/asm/bitops.h:529,
                    from include/linux/bitops.h:33,
                    from include/linux/log2.h:12,
                    from include/asm-generic/div64.h:55,
                    from arch/m68k/include/asm/div64.h:6,
                    from include/linux/math.h:5,
                    from include/linux/math64.h:6,
                    from include/linux/time64.h:5,
                    from include/linux/restart_block.h:10,
                    from include/linux/thread_info.h:14,
                    from include/asm-generic/preempt.h:5,
                    from ./arch/m68k/include/generated/asm/preempt.h:1,
                    from include/linux/preempt.h:78,
                    from arch/m68k/include/asm/irqflags.h:6,
                    from include/linux/irqflags.h:16,
                    from arch/m68k/include/asm/atomic.h:6,
                    from include/linux/atomic.h:7,
                    from include/linux/rcupdate.h:25,
                    from include/linux/rculist.h:11,
                    from include/linux/pid.h:5,
                    from include/linux/sched.h:14,
                    from include/linux/ratelimit.h:6,
                    from include/linux/dev_printk.h:16,
                    from include/linux/device.h:15,
                    from include/linux/platform_device.h:13,
                    from drivers/net/ethernet/engleder/tsnep.h:9,
                    from drivers/net/ethernet/engleder/tsnep_main.c:18:
   drivers/net/ethernet/engleder/tsnep_main.c: In function 'tsnep_tx_activate':
>> drivers/net/ethernet/engleder/tsnep_main.c:292:36: error: 'struct tsnep_tx_entry' has no member named 'len'
     292 |                 __cpu_to_le32(entry->len & TSNEP_DESC_LENGTH_MASK);
         |                                    ^~
   include/uapi/linux/swab.h:118:39: note: in definition of macro '__swab32'
     118 |         (__builtin_constant_p((__u32)(x)) ?     \
         |                                       ^
   drivers/net/ethernet/engleder/tsnep_main.c:292:17: note: in expansion of macro '__cpu_to_le32'
     292 |                 __cpu_to_le32(entry->len & TSNEP_DESC_LENGTH_MASK);
         |                 ^~~~~~~~~~~~~
>> drivers/net/ethernet/engleder/tsnep_main.c:292:36: error: 'struct tsnep_tx_entry' has no member named 'len'
     292 |                 __cpu_to_le32(entry->len & TSNEP_DESC_LENGTH_MASK);
         |                                    ^~
   include/uapi/linux/swab.h:19:19: note: in definition of macro '___constant_swab32'
      19 |         (((__u32)(x) & (__u32)0x000000ffUL) << 24) |            \
         |                   ^
   include/uapi/linux/byteorder/big_endian.h:33:43: note: in expansion of macro '__swab32'
      33 | #define __cpu_to_le32(x) ((__force __le32)__swab32((x)))
         |                                           ^~~~~~~~
   drivers/net/ethernet/engleder/tsnep_main.c:292:17: note: in expansion of macro '__cpu_to_le32'
     292 |                 __cpu_to_le32(entry->len & TSNEP_DESC_LENGTH_MASK);
         |                 ^~~~~~~~~~~~~
>> drivers/net/ethernet/engleder/tsnep_main.c:292:36: error: 'struct tsnep_tx_entry' has no member named 'len'
     292 |                 __cpu_to_le32(entry->len & TSNEP_DESC_LENGTH_MASK);
         |                                    ^~
   include/uapi/linux/swab.h:20:19: note: in definition of macro '___constant_swab32'
      20 |         (((__u32)(x) & (__u32)0x0000ff00UL) <<  8) |            \
         |                   ^
   include/uapi/linux/byteorder/big_endian.h:33:43: note: in expansion of macro '__swab32'
      33 | #define __cpu_to_le32(x) ((__force __le32)__swab32((x)))
         |                                           ^~~~~~~~
   drivers/net/ethernet/engleder/tsnep_main.c:292:17: note: in expansion of macro '__cpu_to_le32'
     292 |                 __cpu_to_le32(entry->len & TSNEP_DESC_LENGTH_MASK);
         |                 ^~~~~~~~~~~~~
>> drivers/net/ethernet/engleder/tsnep_main.c:292:36: error: 'struct tsnep_tx_entry' has no member named 'len'
     292 |                 __cpu_to_le32(entry->len & TSNEP_DESC_LENGTH_MASK);
         |                                    ^~
   include/uapi/linux/swab.h:21:19: note: in definition of macro '___constant_swab32'
      21 |         (((__u32)(x) & (__u32)0x00ff0000UL) >>  8) |            \
         |                   ^
   include/uapi/linux/byteorder/big_endian.h:33:43: note: in expansion of macro '__swab32'
      33 | #define __cpu_to_le32(x) ((__force __le32)__swab32((x)))
         |                                           ^~~~~~~~
   drivers/net/ethernet/engleder/tsnep_main.c:292:17: note: in expansion of macro '__cpu_to_le32'
     292 |                 __cpu_to_le32(entry->len & TSNEP_DESC_LENGTH_MASK);
         |                 ^~~~~~~~~~~~~
>> drivers/net/ethernet/engleder/tsnep_main.c:292:36: error: 'struct tsnep_tx_entry' has no member named 'len'
     292 |                 __cpu_to_le32(entry->len & TSNEP_DESC_LENGTH_MASK);
         |                                    ^~
   include/uapi/linux/swab.h:22:19: note: in definition of macro '___constant_swab32'
      22 |         (((__u32)(x) & (__u32)0xff000000UL) >> 24)))
         |                   ^
   include/uapi/linux/byteorder/big_endian.h:33:43: note: in expansion of macro '__swab32'
      33 | #define __cpu_to_le32(x) ((__force __le32)__swab32((x)))
         |                                           ^~~~~~~~
   drivers/net/ethernet/engleder/tsnep_main.c:292:17: note: in expansion of macro '__cpu_to_le32'
     292 |                 __cpu_to_le32(entry->len & TSNEP_DESC_LENGTH_MASK);
         |                 ^~~~~~~~~~~~~
>> drivers/net/ethernet/engleder/tsnep_main.c:292:36: error: 'struct tsnep_tx_entry' has no member named 'len'
     292 |                 __cpu_to_le32(entry->len & TSNEP_DESC_LENGTH_MASK);
         |                                    ^~
   include/uapi/linux/swab.h:120:19: note: in definition of macro '__swab32'
     120 |         __fswab32(x))
         |                   ^
   drivers/net/ethernet/engleder/tsnep_main.c:292:17: note: in expansion of macro '__cpu_to_le32'
     292 |                 __cpu_to_le32(entry->len & TSNEP_DESC_LENGTH_MASK);
         |                 ^~~~~~~~~~~~~
   drivers/net/ethernet/engleder/tsnep_main.c: In function 'tsnep_tx_unmap':
>> drivers/net/ethernet/engleder/tsnep_main.c:343:32: warning: variable 'entry' set but not used [-Wunused-but-set-variable]
     343 |         struct tsnep_tx_entry *entry;
         |                                ^~~~~
   drivers/net/ethernet/engleder/tsnep_main.c: In function 'tsnep_rx_ring_cleanup':
>> drivers/net/ethernet/engleder/tsnep_main.c:543:26: error: 'struct tsnep_rx_entry' has no member named 'dma'
     543 |                 if (entry->dma)
         |                          ^~
   In file included from drivers/net/ethernet/engleder/tsnep.h:10,
                    from drivers/net/ethernet/engleder/tsnep_main.c:18:
   drivers/net/ethernet/engleder/tsnep_main.c:544:55: error: 'struct tsnep_rx_entry' has no member named 'dma'
     544 |                         dma_unmap_single(dmadev, entry->dma, entry->len,
         |                                                       ^~
   include/linux/dma-mapping.h:407:64: note: in definition of macro 'dma_unmap_single'
     407 | #define dma_unmap_single(d, a, s, r) dma_unmap_single_attrs(d, a, s, r, 0)
         |                                                                ^
>> drivers/net/ethernet/engleder/tsnep_main.c:544:67: error: 'struct tsnep_rx_entry' has no member named 'len'
     544 |                         dma_unmap_single(dmadev, entry->dma, entry->len,
         |                                                                   ^~
   include/linux/dma-mapping.h:407:67: note: in definition of macro 'dma_unmap_single'
     407 | #define dma_unmap_single(d, a, s, r) dma_unmap_single_attrs(d, a, s, r, 0)
         |                                                                   ^
   drivers/net/ethernet/engleder/tsnep_main.c: In function 'tsnep_rx_activate':
   drivers/net/ethernet/engleder/tsnep_main.c:638:34: error: 'struct tsnep_rx_entry' has no member named 'len'
     638 |         entry->properties = entry->len & TSNEP_DESC_LENGTH_MASK;
         |                                  ^~
   drivers/net/ethernet/engleder/tsnep_main.c: In function 'tsnep_rx_poll':
>> drivers/net/ethernet/engleder/tsnep_main.c:666:9: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
     666 |         int length;
         |         ^~~
>> drivers/net/ethernet/engleder/tsnep_main.c:679:17: error: 'dma' undeclared (first use in this function)
     679 |                 dma = entry->dma;
         |                 ^~~
   drivers/net/ethernet/engleder/tsnep_main.c:679:17: note: each undeclared identifier is reported only once for each function it appears in
   drivers/net/ethernet/engleder/tsnep_main.c:679:28: error: 'struct tsnep_rx_entry' has no member named 'dma'
     679 |                 dma = entry->dma;
         |                            ^~
>> drivers/net/ethernet/engleder/tsnep_main.c:680:17: error: 'len' undeclared (first use in this function)
     680 |                 len = entry->len;
         |                 ^~~
   drivers/net/ethernet/engleder/tsnep_main.c:680:28: error: 'struct tsnep_rx_entry' has no member named 'len'
     680 |                 len = entry->len;
         |                            ^~


vim +292 drivers/net/ethernet/engleder/tsnep_main.c

   243	
   244	static void tsnep_tx_activate(struct tsnep_tx *tx, int index, bool last)
   245	{
   246		struct tsnep_tx_entry *entry = &tx->entry[index];
   247	
   248		entry->properties = 0;
   249		if (entry->skb) {
   250			entry->properties =
   251				skb_pagelen(entry->skb) & TSNEP_DESC_LENGTH_MASK;
   252			entry->properties |= TSNEP_DESC_INTERRUPT_FLAG;
   253			if (skb_shinfo(entry->skb)->tx_flags & SKBTX_IN_PROGRESS)
   254				entry->properties |= TSNEP_DESC_EXTENDED_WRITEBACK_FLAG;
   255	
   256			/* toggle user flag to prevent false acknowledge
   257			 *
   258			 * Only the first fragment is acknowledged. For all other
   259			 * fragments no acknowledge is done and the last written owner
   260			 * counter stays in the writeback descriptor. Therefore, it is
   261			 * possible that the last written owner counter is identical to
   262			 * the new incremented owner counter and a false acknowledge is
   263			 * detected before the real acknowledge has been done by
   264			 * hardware.
   265			 *
   266			 * The user flag is used to prevent this situation. The user
   267			 * flag is copied to the writeback descriptor by the hardware
   268			 * and is used as additional acknowledge data. By toggeling the
   269			 * user flag only for the first fragment (which is
   270			 * acknowledged), it is guaranteed that the last acknowledge
   271			 * done for this descriptor has used a different user flag and
   272			 * cannot be detected as false acknowledge.
   273			 */
   274			entry->owner_user_flag = !entry->owner_user_flag;
   275		}
   276		if (last)
   277			entry->properties |= TSNEP_TX_DESC_LAST_FRAGMENT_FLAG;
   278		if (index == tx->increment_owner_counter) {
   279			tx->owner_counter++;
   280			if (tx->owner_counter == 4)
   281				tx->owner_counter = 1;
   282			tx->increment_owner_counter--;
   283			if (tx->increment_owner_counter < 0)
   284				tx->increment_owner_counter = TSNEP_RING_SIZE - 1;
   285		}
   286		entry->properties |=
   287			(tx->owner_counter << TSNEP_DESC_OWNER_COUNTER_SHIFT) &
   288			TSNEP_DESC_OWNER_COUNTER_MASK;
   289		if (entry->owner_user_flag)
   290			entry->properties |= TSNEP_TX_DESC_OWNER_USER_FLAG;
   291		entry->desc->more_properties =
 > 292			__cpu_to_le32(entry->len & TSNEP_DESC_LENGTH_MASK);
   293	
   294		dma_wmb();
   295	
   296		entry->desc->properties = __cpu_to_le32(entry->properties);
   297	}
   298	
   299	static int tsnep_tx_desc_available(struct tsnep_tx *tx)
   300	{
   301		if (tx->read <= tx->write)
   302			return TSNEP_RING_SIZE - tx->write + tx->read - 1;
   303		else
   304			return tx->read - tx->write - 1;
   305	}
   306	
   307	static int tsnep_tx_map(struct sk_buff *skb, struct tsnep_tx *tx, int count)
   308	{
   309		struct device *dmadev = tx->adapter->dmadev;
   310		struct tsnep_tx_entry *entry;
   311		unsigned int len;
   312		dma_addr_t dma;
   313		int i;
   314	
   315		for (i = 0; i < count; i++) {
   316			entry = &tx->entry[(tx->write + i) % TSNEP_RING_SIZE];
   317	
   318			if (i == 0) {
   319				len = skb_headlen(skb);
   320				dma = dma_map_single(dmadev, skb->data, len,
   321						     DMA_TO_DEVICE);
   322			} else {
   323				len = skb_frag_size(&skb_shinfo(skb)->frags[i - 1]);
   324				dma = skb_frag_dma_map(dmadev,
   325						       &skb_shinfo(skb)->frags[i - 1],
   326						       0, len, DMA_TO_DEVICE);
   327			}
   328			if (dma_mapping_error(dmadev, dma))
   329				return -ENOMEM;
   330	
   331			dma_unmap_len_set(entry, len, len);
   332			dma_unmap_addr_set(entry, dma, dma);
   333	
   334			entry->desc->tx = __cpu_to_le64(dma);
   335		}
   336	
   337		return 0;
   338	}
   339	
   340	static void tsnep_tx_unmap(struct tsnep_tx *tx, int count)
   341	{
   342		struct device *dmadev = tx->adapter->dmadev;
 > 343		struct tsnep_tx_entry *entry;
   344		int i;
   345	
   346		for (i = 0; i < count; i++) {
   347			entry = &tx->entry[(tx->read + i) % TSNEP_RING_SIZE];
   348	
   349			if (dma_unmap_len(entry, len)) {
   350				if (i == 0)
   351					dma_unmap_single(dmadev,
   352							 dma_unmap_addr(entry, dma),
   353							 dma_unmap_len(entry, len),
   354							 DMA_TO_DEVICE);
   355				else
   356					dma_unmap_page(dmadev,
   357						       dma_unmap_addr(entry, dma),
   358						       dma_unmap_len(entry, len),
   359						       DMA_TO_DEVICE);
   360				dma_unmap_len_set(entry, len, 0);
   361			}
   362		}
   363	}
   364	

---
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: 40489 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Gerhard Engleder <gerhard@engleder-embedded.com>,
	davem@davemloft.net, kuba@kernel.org, andrew@lunn.ch
Cc: kbuild-all@lists.01.org, netdev@vger.kernel.org,
	Gerhard Engleder <gerhard@engleder-embedded.com>
Subject: Re: [PATCH net-next v5 3/3] tsnep: Add TSN endpoint Ethernet MAC driver
Date: Fri, 19 Nov 2021 01:31:08 +0800	[thread overview]
Message-ID: <202111190101.lnVC52ge-lkp@intel.com> (raw)
In-Reply-To: <20211115205005.6132-4-gerhard@engleder-embedded.com>

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

Hi Gerhard,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on net-next/master]

url:    https://github.com/0day-ci/linux/commits/Gerhard-Engleder/TSN-endpoint-Ethernet-MAC-driver/20211116-052158
base:   https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git a5bdc36354cbf1a1a91396f4da548ff484686305
config: m68k-randconfig-r004-20211118 (attached as .config)
compiler: m68k-linux-gcc (GCC) 11.2.0
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
        # https://github.com/0day-ci/linux/commit/3252efb6502fdfc25aa357f7dca6290ba9b140e9
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Gerhard-Engleder/TSN-endpoint-Ethernet-MAC-driver/20211116-052158
        git checkout 3252efb6502fdfc25aa357f7dca6290ba9b140e9
        # save the attached .config to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=m68k SHELL=/bin/bash drivers/net/ethernet/engleder/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All error/warnings (new ones prefixed by >>):

   In file included from include/linux/swab.h:5,
                    from include/uapi/linux/byteorder/big_endian.h:13,
                    from include/linux/byteorder/big_endian.h:5,
                    from arch/m68k/include/uapi/asm/byteorder.h:5,
                    from include/asm-generic/bitops/le.h:7,
                    from arch/m68k/include/asm/bitops.h:529,
                    from include/linux/bitops.h:33,
                    from include/linux/log2.h:12,
                    from include/asm-generic/div64.h:55,
                    from arch/m68k/include/asm/div64.h:6,
                    from include/linux/math.h:5,
                    from include/linux/math64.h:6,
                    from include/linux/time64.h:5,
                    from include/linux/restart_block.h:10,
                    from include/linux/thread_info.h:14,
                    from include/asm-generic/preempt.h:5,
                    from ./arch/m68k/include/generated/asm/preempt.h:1,
                    from include/linux/preempt.h:78,
                    from arch/m68k/include/asm/irqflags.h:6,
                    from include/linux/irqflags.h:16,
                    from arch/m68k/include/asm/atomic.h:6,
                    from include/linux/atomic.h:7,
                    from include/linux/rcupdate.h:25,
                    from include/linux/rculist.h:11,
                    from include/linux/pid.h:5,
                    from include/linux/sched.h:14,
                    from include/linux/ratelimit.h:6,
                    from include/linux/dev_printk.h:16,
                    from include/linux/device.h:15,
                    from include/linux/platform_device.h:13,
                    from drivers/net/ethernet/engleder/tsnep.h:9,
                    from drivers/net/ethernet/engleder/tsnep_main.c:18:
   drivers/net/ethernet/engleder/tsnep_main.c: In function 'tsnep_tx_activate':
>> drivers/net/ethernet/engleder/tsnep_main.c:292:36: error: 'struct tsnep_tx_entry' has no member named 'len'
     292 |                 __cpu_to_le32(entry->len & TSNEP_DESC_LENGTH_MASK);
         |                                    ^~
   include/uapi/linux/swab.h:118:39: note: in definition of macro '__swab32'
     118 |         (__builtin_constant_p((__u32)(x)) ?     \
         |                                       ^
   drivers/net/ethernet/engleder/tsnep_main.c:292:17: note: in expansion of macro '__cpu_to_le32'
     292 |                 __cpu_to_le32(entry->len & TSNEP_DESC_LENGTH_MASK);
         |                 ^~~~~~~~~~~~~
>> drivers/net/ethernet/engleder/tsnep_main.c:292:36: error: 'struct tsnep_tx_entry' has no member named 'len'
     292 |                 __cpu_to_le32(entry->len & TSNEP_DESC_LENGTH_MASK);
         |                                    ^~
   include/uapi/linux/swab.h:19:19: note: in definition of macro '___constant_swab32'
      19 |         (((__u32)(x) & (__u32)0x000000ffUL) << 24) |            \
         |                   ^
   include/uapi/linux/byteorder/big_endian.h:33:43: note: in expansion of macro '__swab32'
      33 | #define __cpu_to_le32(x) ((__force __le32)__swab32((x)))
         |                                           ^~~~~~~~
   drivers/net/ethernet/engleder/tsnep_main.c:292:17: note: in expansion of macro '__cpu_to_le32'
     292 |                 __cpu_to_le32(entry->len & TSNEP_DESC_LENGTH_MASK);
         |                 ^~~~~~~~~~~~~
>> drivers/net/ethernet/engleder/tsnep_main.c:292:36: error: 'struct tsnep_tx_entry' has no member named 'len'
     292 |                 __cpu_to_le32(entry->len & TSNEP_DESC_LENGTH_MASK);
         |                                    ^~
   include/uapi/linux/swab.h:20:19: note: in definition of macro '___constant_swab32'
      20 |         (((__u32)(x) & (__u32)0x0000ff00UL) <<  8) |            \
         |                   ^
   include/uapi/linux/byteorder/big_endian.h:33:43: note: in expansion of macro '__swab32'
      33 | #define __cpu_to_le32(x) ((__force __le32)__swab32((x)))
         |                                           ^~~~~~~~
   drivers/net/ethernet/engleder/tsnep_main.c:292:17: note: in expansion of macro '__cpu_to_le32'
     292 |                 __cpu_to_le32(entry->len & TSNEP_DESC_LENGTH_MASK);
         |                 ^~~~~~~~~~~~~
>> drivers/net/ethernet/engleder/tsnep_main.c:292:36: error: 'struct tsnep_tx_entry' has no member named 'len'
     292 |                 __cpu_to_le32(entry->len & TSNEP_DESC_LENGTH_MASK);
         |                                    ^~
   include/uapi/linux/swab.h:21:19: note: in definition of macro '___constant_swab32'
      21 |         (((__u32)(x) & (__u32)0x00ff0000UL) >>  8) |            \
         |                   ^
   include/uapi/linux/byteorder/big_endian.h:33:43: note: in expansion of macro '__swab32'
      33 | #define __cpu_to_le32(x) ((__force __le32)__swab32((x)))
         |                                           ^~~~~~~~
   drivers/net/ethernet/engleder/tsnep_main.c:292:17: note: in expansion of macro '__cpu_to_le32'
     292 |                 __cpu_to_le32(entry->len & TSNEP_DESC_LENGTH_MASK);
         |                 ^~~~~~~~~~~~~
>> drivers/net/ethernet/engleder/tsnep_main.c:292:36: error: 'struct tsnep_tx_entry' has no member named 'len'
     292 |                 __cpu_to_le32(entry->len & TSNEP_DESC_LENGTH_MASK);
         |                                    ^~
   include/uapi/linux/swab.h:22:19: note: in definition of macro '___constant_swab32'
      22 |         (((__u32)(x) & (__u32)0xff000000UL) >> 24)))
         |                   ^
   include/uapi/linux/byteorder/big_endian.h:33:43: note: in expansion of macro '__swab32'
      33 | #define __cpu_to_le32(x) ((__force __le32)__swab32((x)))
         |                                           ^~~~~~~~
   drivers/net/ethernet/engleder/tsnep_main.c:292:17: note: in expansion of macro '__cpu_to_le32'
     292 |                 __cpu_to_le32(entry->len & TSNEP_DESC_LENGTH_MASK);
         |                 ^~~~~~~~~~~~~
>> drivers/net/ethernet/engleder/tsnep_main.c:292:36: error: 'struct tsnep_tx_entry' has no member named 'len'
     292 |                 __cpu_to_le32(entry->len & TSNEP_DESC_LENGTH_MASK);
         |                                    ^~
   include/uapi/linux/swab.h:120:19: note: in definition of macro '__swab32'
     120 |         __fswab32(x))
         |                   ^
   drivers/net/ethernet/engleder/tsnep_main.c:292:17: note: in expansion of macro '__cpu_to_le32'
     292 |                 __cpu_to_le32(entry->len & TSNEP_DESC_LENGTH_MASK);
         |                 ^~~~~~~~~~~~~
   drivers/net/ethernet/engleder/tsnep_main.c: In function 'tsnep_tx_unmap':
>> drivers/net/ethernet/engleder/tsnep_main.c:343:32: warning: variable 'entry' set but not used [-Wunused-but-set-variable]
     343 |         struct tsnep_tx_entry *entry;
         |                                ^~~~~
   drivers/net/ethernet/engleder/tsnep_main.c: In function 'tsnep_rx_ring_cleanup':
>> drivers/net/ethernet/engleder/tsnep_main.c:543:26: error: 'struct tsnep_rx_entry' has no member named 'dma'
     543 |                 if (entry->dma)
         |                          ^~
   In file included from drivers/net/ethernet/engleder/tsnep.h:10,
                    from drivers/net/ethernet/engleder/tsnep_main.c:18:
   drivers/net/ethernet/engleder/tsnep_main.c:544:55: error: 'struct tsnep_rx_entry' has no member named 'dma'
     544 |                         dma_unmap_single(dmadev, entry->dma, entry->len,
         |                                                       ^~
   include/linux/dma-mapping.h:407:64: note: in definition of macro 'dma_unmap_single'
     407 | #define dma_unmap_single(d, a, s, r) dma_unmap_single_attrs(d, a, s, r, 0)
         |                                                                ^
>> drivers/net/ethernet/engleder/tsnep_main.c:544:67: error: 'struct tsnep_rx_entry' has no member named 'len'
     544 |                         dma_unmap_single(dmadev, entry->dma, entry->len,
         |                                                                   ^~
   include/linux/dma-mapping.h:407:67: note: in definition of macro 'dma_unmap_single'
     407 | #define dma_unmap_single(d, a, s, r) dma_unmap_single_attrs(d, a, s, r, 0)
         |                                                                   ^
   drivers/net/ethernet/engleder/tsnep_main.c: In function 'tsnep_rx_activate':
   drivers/net/ethernet/engleder/tsnep_main.c:638:34: error: 'struct tsnep_rx_entry' has no member named 'len'
     638 |         entry->properties = entry->len & TSNEP_DESC_LENGTH_MASK;
         |                                  ^~
   drivers/net/ethernet/engleder/tsnep_main.c: In function 'tsnep_rx_poll':
>> drivers/net/ethernet/engleder/tsnep_main.c:666:9: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
     666 |         int length;
         |         ^~~
>> drivers/net/ethernet/engleder/tsnep_main.c:679:17: error: 'dma' undeclared (first use in this function)
     679 |                 dma = entry->dma;
         |                 ^~~
   drivers/net/ethernet/engleder/tsnep_main.c:679:17: note: each undeclared identifier is reported only once for each function it appears in
   drivers/net/ethernet/engleder/tsnep_main.c:679:28: error: 'struct tsnep_rx_entry' has no member named 'dma'
     679 |                 dma = entry->dma;
         |                            ^~
>> drivers/net/ethernet/engleder/tsnep_main.c:680:17: error: 'len' undeclared (first use in this function)
     680 |                 len = entry->len;
         |                 ^~~
   drivers/net/ethernet/engleder/tsnep_main.c:680:28: error: 'struct tsnep_rx_entry' has no member named 'len'
     680 |                 len = entry->len;
         |                            ^~


vim +292 drivers/net/ethernet/engleder/tsnep_main.c

   243	
   244	static void tsnep_tx_activate(struct tsnep_tx *tx, int index, bool last)
   245	{
   246		struct tsnep_tx_entry *entry = &tx->entry[index];
   247	
   248		entry->properties = 0;
   249		if (entry->skb) {
   250			entry->properties =
   251				skb_pagelen(entry->skb) & TSNEP_DESC_LENGTH_MASK;
   252			entry->properties |= TSNEP_DESC_INTERRUPT_FLAG;
   253			if (skb_shinfo(entry->skb)->tx_flags & SKBTX_IN_PROGRESS)
   254				entry->properties |= TSNEP_DESC_EXTENDED_WRITEBACK_FLAG;
   255	
   256			/* toggle user flag to prevent false acknowledge
   257			 *
   258			 * Only the first fragment is acknowledged. For all other
   259			 * fragments no acknowledge is done and the last written owner
   260			 * counter stays in the writeback descriptor. Therefore, it is
   261			 * possible that the last written owner counter is identical to
   262			 * the new incremented owner counter and a false acknowledge is
   263			 * detected before the real acknowledge has been done by
   264			 * hardware.
   265			 *
   266			 * The user flag is used to prevent this situation. The user
   267			 * flag is copied to the writeback descriptor by the hardware
   268			 * and is used as additional acknowledge data. By toggeling the
   269			 * user flag only for the first fragment (which is
   270			 * acknowledged), it is guaranteed that the last acknowledge
   271			 * done for this descriptor has used a different user flag and
   272			 * cannot be detected as false acknowledge.
   273			 */
   274			entry->owner_user_flag = !entry->owner_user_flag;
   275		}
   276		if (last)
   277			entry->properties |= TSNEP_TX_DESC_LAST_FRAGMENT_FLAG;
   278		if (index == tx->increment_owner_counter) {
   279			tx->owner_counter++;
   280			if (tx->owner_counter == 4)
   281				tx->owner_counter = 1;
   282			tx->increment_owner_counter--;
   283			if (tx->increment_owner_counter < 0)
   284				tx->increment_owner_counter = TSNEP_RING_SIZE - 1;
   285		}
   286		entry->properties |=
   287			(tx->owner_counter << TSNEP_DESC_OWNER_COUNTER_SHIFT) &
   288			TSNEP_DESC_OWNER_COUNTER_MASK;
   289		if (entry->owner_user_flag)
   290			entry->properties |= TSNEP_TX_DESC_OWNER_USER_FLAG;
   291		entry->desc->more_properties =
 > 292			__cpu_to_le32(entry->len & TSNEP_DESC_LENGTH_MASK);
   293	
   294		dma_wmb();
   295	
   296		entry->desc->properties = __cpu_to_le32(entry->properties);
   297	}
   298	
   299	static int tsnep_tx_desc_available(struct tsnep_tx *tx)
   300	{
   301		if (tx->read <= tx->write)
   302			return TSNEP_RING_SIZE - tx->write + tx->read - 1;
   303		else
   304			return tx->read - tx->write - 1;
   305	}
   306	
   307	static int tsnep_tx_map(struct sk_buff *skb, struct tsnep_tx *tx, int count)
   308	{
   309		struct device *dmadev = tx->adapter->dmadev;
   310		struct tsnep_tx_entry *entry;
   311		unsigned int len;
   312		dma_addr_t dma;
   313		int i;
   314	
   315		for (i = 0; i < count; i++) {
   316			entry = &tx->entry[(tx->write + i) % TSNEP_RING_SIZE];
   317	
   318			if (i == 0) {
   319				len = skb_headlen(skb);
   320				dma = dma_map_single(dmadev, skb->data, len,
   321						     DMA_TO_DEVICE);
   322			} else {
   323				len = skb_frag_size(&skb_shinfo(skb)->frags[i - 1]);
   324				dma = skb_frag_dma_map(dmadev,
   325						       &skb_shinfo(skb)->frags[i - 1],
   326						       0, len, DMA_TO_DEVICE);
   327			}
   328			if (dma_mapping_error(dmadev, dma))
   329				return -ENOMEM;
   330	
   331			dma_unmap_len_set(entry, len, len);
   332			dma_unmap_addr_set(entry, dma, dma);
   333	
   334			entry->desc->tx = __cpu_to_le64(dma);
   335		}
   336	
   337		return 0;
   338	}
   339	
   340	static void tsnep_tx_unmap(struct tsnep_tx *tx, int count)
   341	{
   342		struct device *dmadev = tx->adapter->dmadev;
 > 343		struct tsnep_tx_entry *entry;
   344		int i;
   345	
   346		for (i = 0; i < count; i++) {
   347			entry = &tx->entry[(tx->read + i) % TSNEP_RING_SIZE];
   348	
   349			if (dma_unmap_len(entry, len)) {
   350				if (i == 0)
   351					dma_unmap_single(dmadev,
   352							 dma_unmap_addr(entry, dma),
   353							 dma_unmap_len(entry, len),
   354							 DMA_TO_DEVICE);
   355				else
   356					dma_unmap_page(dmadev,
   357						       dma_unmap_addr(entry, dma),
   358						       dma_unmap_len(entry, len),
   359						       DMA_TO_DEVICE);
   360				dma_unmap_len_set(entry, len, 0);
   361			}
   362		}
   363	}
   364	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

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

  parent reply	other threads:[~2021-11-18 17:31 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-15 20:50 [PATCH net-next v5 0/3] TSN endpoint Ethernet MAC driver Gerhard Engleder
2021-11-15 20:50 ` [PATCH net-next v5 1/3] dt-bindings: Add vendor prefix for Engleder Gerhard Engleder
2021-11-15 22:24   ` Andrew Lunn
2021-11-15 20:50 ` [PATCH net-next v5 2/3] dt-bindings: net: Add tsnep Ethernet controller Gerhard Engleder
2021-11-15 22:25   ` Andrew Lunn
2021-11-15 20:50 ` [PATCH net-next v5 3/3] tsnep: Add TSN endpoint Ethernet MAC driver Gerhard Engleder
2021-11-15 22:21   ` Heiner Kallweit
2021-11-16 21:47     ` Gerhard Engleder
2021-11-15 23:04   ` Andrew Lunn
2021-11-16 22:16     ` Gerhard Engleder
2021-11-16 23:41       ` Andrew Lunn
2021-11-18 17:31   ` kernel test robot [this message]
2021-11-18 17:31     ` kernel test robot

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=202111190101.lnVC52ge-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.