* [alobakin:idpf-libie-new 44/54] drivers/net/ethernet/intel/i40e/i40e_xsk.c:464:27: error: too many arguments to function 'xsk_buff_add_frag'
@ 2024-02-01 8:27 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2024-02-01 8:27 UTC (permalink / raw)
To: Alexander Lobakin; +Cc: oe-kbuild-all
tree: https://github.com/alobakin/linux idpf-libie-new
head: b38090ce4d01e31c9d0e23222b9176297e10ccdf
commit: f060ea47534d68eac6b872953bd614962d76da90 [44/54] xsk: make xsk_buff_add_frag really add a frag via __xdp_buff_add_frag()
config: arm64-randconfig-001-20240201 (https://download.01.org/0day-ci/archive/20240201/202402011625.LiOSHHeJ-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240201/202402011625.LiOSHHeJ-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202402011625.LiOSHHeJ-lkp@intel.com/
All errors (new ones prefixed by >>):
drivers/net/ethernet/intel/i40e/i40e_xsk.c: In function 'i40e_clean_rx_irq_zc':
>> drivers/net/ethernet/intel/i40e/i40e_xsk.c:464:27: error: too many arguments to function 'xsk_buff_add_frag'
464 | else if (!xsk_buff_add_frag(first, bi)) {
| ^~~~~~~~~~~~~~~~~
In file included from drivers/net/ethernet/intel/i40e/i40e_xsk.c:5:
include/net/xdp_sock_drv.h:369:20: note: declared here
369 | static inline void xsk_buff_add_frag(struct xdp_buff *xdp)
| ^~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/intel/i40e/i40e_xsk.c:464:26: error: invalid use of void expression
464 | else if (!xsk_buff_add_frag(first, bi)) {
| ^
vim +/xsk_buff_add_frag +464 drivers/net/ethernet/intel/i40e/i40e_xsk.c
398
399 /**
400 * i40e_clean_rx_irq_zc - Consumes Rx packets from the hardware ring
401 * @rx_ring: Rx ring
402 * @budget: NAPI budget
403 *
404 * Returns amount of work completed
405 **/
406 int i40e_clean_rx_irq_zc(struct i40e_ring *rx_ring, int budget)
407 {
408 unsigned int total_rx_bytes = 0, total_rx_packets = 0;
409 u16 next_to_process = rx_ring->next_to_process;
410 u16 next_to_clean = rx_ring->next_to_clean;
411 unsigned int xdp_res, xdp_xmit = 0;
412 struct xdp_buff *first = NULL;
413 u32 count = rx_ring->count;
414 struct bpf_prog *xdp_prog;
415 u32 entries_to_alloc;
416 bool failure = false;
417
418 if (next_to_process != next_to_clean)
419 first = *i40e_rx_bi(rx_ring, next_to_clean);
420
421 /* NB! xdp_prog will always be !NULL, due to the fact that
422 * this path is enabled by setting an XDP program.
423 */
424 xdp_prog = READ_ONCE(rx_ring->xdp_prog);
425
426 while (likely(total_rx_packets < (unsigned int)budget)) {
427 union i40e_rx_desc *rx_desc;
428 unsigned int rx_packets;
429 unsigned int rx_bytes;
430 struct xdp_buff *bi;
431 unsigned int size;
432 u64 qword;
433
434 rx_desc = I40E_RX_DESC(rx_ring, next_to_process);
435 qword = le64_to_cpu(rx_desc->wb.qword1.status_error_len);
436
437 /* This memory barrier is needed to keep us from reading
438 * any other fields out of the rx_desc until we have
439 * verified the descriptor has been written back.
440 */
441 dma_rmb();
442
443 if (i40e_rx_is_programming_status(qword)) {
444 i40e_clean_programming_status(rx_ring,
445 rx_desc->raw.qword[0],
446 qword);
447 bi = *i40e_rx_bi(rx_ring, next_to_process);
448 xsk_buff_free(bi);
449 if (++next_to_process == count)
450 next_to_process = 0;
451 continue;
452 }
453
454 size = FIELD_GET(I40E_RXD_QW1_LENGTH_PBUF_MASK, qword);
455 if (!size)
456 break;
457
458 bi = *i40e_rx_bi(rx_ring, next_to_process);
459 xsk_buff_set_size(bi, size);
460 xsk_buff_dma_sync_for_cpu(bi);
461
462 if (!first)
463 first = bi;
> 464 else if (!xsk_buff_add_frag(first, bi)) {
465 xsk_buff_free(first);
466 break;
467 }
468
469 if (++next_to_process == count)
470 next_to_process = 0;
471
472 if (i40e_is_non_eop(rx_ring, rx_desc))
473 continue;
474
475 xdp_res = i40e_run_xdp_zc(rx_ring, first, xdp_prog);
476 i40e_handle_xdp_result_zc(rx_ring, first, rx_desc, &rx_packets,
477 &rx_bytes, xdp_res, &failure);
478 next_to_clean = next_to_process;
479 if (failure)
480 break;
481 total_rx_packets += rx_packets;
482 total_rx_bytes += rx_bytes;
483 xdp_xmit |= xdp_res & (I40E_XDP_TX | I40E_XDP_REDIR);
484 first = NULL;
485 }
486
487 rx_ring->next_to_clean = next_to_clean;
488 rx_ring->next_to_process = next_to_process;
489
490 entries_to_alloc = I40E_DESC_UNUSED(rx_ring);
491 if (entries_to_alloc >= I40E_RX_BUFFER_WRITE)
492 failure |= !i40e_alloc_rx_buffers_zc(rx_ring, entries_to_alloc);
493
494 i40e_finalize_xdp_rx(rx_ring, xdp_xmit);
495 i40e_update_rx_stats(rx_ring, total_rx_bytes, total_rx_packets);
496
497 if (xsk_uses_need_wakeup(rx_ring->xsk_pool)) {
498 if (failure || next_to_clean == rx_ring->next_to_use)
499 xsk_set_rx_need_wakeup(rx_ring->xsk_pool);
500 else
501 xsk_clear_rx_need_wakeup(rx_ring->xsk_pool);
502
503 return (int)total_rx_packets;
504 }
505 return failure ? budget : (int)total_rx_packets;
506 }
507
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2024-02-01 8:28 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-01 8:27 [alobakin:idpf-libie-new 44/54] drivers/net/ethernet/intel/i40e/i40e_xsk.c:464:27: error: too many arguments to function 'xsk_buff_add_frag' kernel test robot
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.