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 --]
next prev 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.