All of lore.kernel.org
 help / color / mirror / Atom feed
* net/knod/knod_core.c:108:15: error: 'struct knod_dev' has no member named 'started'
@ 2026-07-20  6:41 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-07-20  6:41 UTC (permalink / raw)
  To: Taehee Yoo; +Cc: oe-kbuild-all, 0day robot

tree:   https://github.com/intel-lab-lkp/linux/commits/Taehee-Yoo/net-knod-add-uapi-and-core-headers/20260720-021105
head:   d65f8a646efeabb7098a8c9a5b586ad3580fe13e
commit: 326530f9cd40b4a123881f1dcc8832b2691c58e4 net: knod: add offload device core and control plane
date:   12 hours ago
config: x86_64-rhel-9.4-bpf (https://download.01.org/0day-ci/archive/20260720/202607200817.lQXogBsd-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260720/202607200817.lQXogBsd-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/202607200817.lQXogBsd-lkp@intel.com/

All errors (new ones prefixed by >>):

   In file included from include/linux/cleanup.h:7,
                    from include/linux/jump_label.h:78,
                    from include/linux/dynamic_debug.h:6,
                    from include/linux/printk.h:620,
                    from include/asm-generic/bug.h:31,
                    from arch/x86/include/asm/bug.h:195,
                    from include/linux/bug.h:5,
                    from include/linux/alloc_tag.h:8,
                    from include/linux/workqueue.h:9,
                    from include/linux/bpf.h:12,
                    from include/net/knod.h:5,
                    from net/knod/knod_core.c:6:
>> arch/x86/include/asm/percpu_types.h:6:45: error: expected ':', ',', ';', '}' or '__attribute__' before '__seg_gs'
       6 | #define __percpu_seg_override   CONCATENATE(__seg_, __percpu_seg)
         |                                             ^~~~~~
   include/linux/args.h:25:24: note: in definition of macro '__CONCAT'
      25 | #define __CONCAT(a, b) a ## b
         |                        ^
   arch/x86/include/asm/percpu_types.h:6:33: note: in expansion of macro 'CONCATENATE'
       6 | #define __percpu_seg_override   CONCATENATE(__seg_, __percpu_seg)
         |                                 ^~~~~~~~~~~
   arch/x86/include/asm/percpu_types.h:12:33: note: in expansion of macro '__percpu_seg_override'
      12 | #define __percpu_qual           __percpu_seg_override
         |                                 ^~~~~~~~~~~~~~~~~~~~~
   include/linux/compiler_types.h:71:25: note: in expansion of macro '__percpu_qual'
      71 | # define __percpu       __percpu_qual BTF_TYPE_TAG(percpu)
         |                         ^~~~~~~~~~~~~
   include/net/knod.h:361:38: note: in expansion of macro '__percpu'
     361 |         struct knod_dev_stats *stats __percpu;
         |                                      ^~~~~~~~
   net/knod/knod_core.c: In function 'knod_dev_start':
>> net/knod/knod_core.c:108:15: error: 'struct knod_dev' has no member named 'started'
     108 |         knodev->started = true;
         |               ^~
>> net/knod/knod_core.c:109:19: error: 'struct knod_dev' has no member named 'accel_ops'
     109 |         if (knodev->accel_ops->dev_start)
         |                   ^~
   net/knod/knod_core.c:110:23: error: 'struct knod_dev' has no member named 'accel_ops'
     110 |                 knodev->accel_ops->dev_start(knodev);
         |                       ^~
   net/knod/knod_core.c: In function 'knod_dev_stop':
   net/knod/knod_core.c:117:19: error: 'struct knod_dev' has no member named 'accel_ops'
     117 |         if (knodev->accel_ops->dev_stop)
         |                   ^~
   net/knod/knod_core.c:118:23: error: 'struct knod_dev' has no member named 'accel_ops'
     118 |                 knodev->accel_ops->dev_stop(knodev);
         |                       ^~
   net/knod/knod_core.c:119:15: error: 'struct knod_dev' has no member named 'started'
     119 |         knodev->started = false;
         |               ^~
   net/knod/knod_core.c: In function 'knod_dev_xdp_install':
   net/knod/knod_core.c:125:20: error: 'struct knod_dev' has no member named 'accel_ops'
     125 |         if (!knodev->accel_ops->xdp_ops ||
         |                    ^~
   net/knod/knod_core.c:126:20: error: 'struct knod_dev' has no member named 'accel_ops'
     126 |             !knodev->accel_ops->xdp_ops->xdp_install)
         |                    ^~
   net/knod/knod_core.c:128:22: error: 'struct knod_dev' has no member named 'accel_ops'
     128 |         return knodev->accel_ops->xdp_ops->xdp_install(knodev, xdp);
         |                      ^~
   In file included from include/asm-generic/percpu.h:9,
                    from arch/x86/include/asm/percpu.h:593,
                    from arch/x86/include/asm/preempt.h:6,
                    from include/linux/preempt.h:79,
                    from include/linux/alloc_tag.h:11:
   net/knod/knod_core.c: In function 'knod_dev_get_stats64':
>> net/knod/knod_core.c:142:39: error: 'struct knod_dev' has no member named 'stats'
     142 |                 p = per_cpu_ptr(knodev->stats, i);
         |                                       ^~
   include/linux/percpu-defs.h:221:54: note: in definition of macro '__verify_pcpu_ptr'
     221 |         const void __percpu *__vpp_verify = (typeof((ptr) + 0))NULL;    \
         |                                                      ^~~
   net/knod/knod_core.c:142:21: note: in expansion of macro 'per_cpu_ptr'
     142 |                 p = per_cpu_ptr(knodev->stats, i);
         |                     ^~~~~~~~~~~
   In file included from include/linux/compiler_types.h:173,
                    from <command-line>:
>> net/knod/knod_core.c:142:39: error: 'struct knod_dev' has no member named 'stats'
     142 |                 p = per_cpu_ptr(knodev->stats, i);
         |                                       ^~
   include/linux/compiler-gcc.h:34:41: note: in definition of macro 'RELOC_HIDE'
      34 |         __asm__ ("" : "=r"(__ptr) : "0"(ptr));                          \
         |                                         ^~~
   include/linux/percpu-defs.h:226:10: note: in expansion of macro 'TYPEOF_UNQUAL'
     226 |         (TYPEOF_UNQUAL(*(__p)) __force __kernel *)((__force unsigned long)(__p))
         |          ^~~~~~~~~~~~~
   include/linux/percpu-defs.h:235:20: note: in expansion of macro 'PERCPU_PTR'
     235 |         RELOC_HIDE(PERCPU_PTR(__p), (__offset))
         |                    ^~~~~~~~~~
   include/linux/percpu-defs.h:240:9: note: in expansion of macro 'SHIFT_PERCPU_PTR'
     240 |         SHIFT_PERCPU_PTR((ptr), per_cpu_offset((cpu)));                 \
         |         ^~~~~~~~~~~~~~~~
   net/knod/knod_core.c:142:21: note: in expansion of macro 'per_cpu_ptr'
     142 |                 p = per_cpu_ptr(knodev->stats, i);
         |                     ^~~~~~~~~~~
>> net/knod/knod_core.c:142:39: error: 'struct knod_dev' has no member named 'stats'
     142 |                 p = per_cpu_ptr(knodev->stats, i);
         |                                       ^~
   include/linux/compiler-gcc.h:34:41: note: in definition of macro 'RELOC_HIDE'
      34 |         __asm__ ("" : "=r"(__ptr) : "0"(ptr));                          \
         |                                         ^~~
   include/linux/percpu-defs.h:235:20: note: in expansion of macro 'PERCPU_PTR'
     235 |         RELOC_HIDE(PERCPU_PTR(__p), (__offset))
         |                    ^~~~~~~~~~
   include/linux/percpu-defs.h:240:9: note: in expansion of macro 'SHIFT_PERCPU_PTR'
     240 |         SHIFT_PERCPU_PTR((ptr), per_cpu_offset((cpu)));                 \
         |         ^~~~~~~~~~~~~~~~
   net/knod/knod_core.c:142:21: note: in expansion of macro 'per_cpu_ptr'
     142 |                 p = per_cpu_ptr(knodev->stats, i);
         |                     ^~~~~~~~~~~
>> net/knod/knod_core.c:142:39: error: 'struct knod_dev' has no member named 'stats'
     142 |                 p = per_cpu_ptr(knodev->stats, i);
         |                                       ^~
   include/linux/compiler-gcc.h:35:17: note: in definition of macro 'RELOC_HIDE'
      35 |         (typeof(ptr)) (__ptr + (off));                                  \
         |                 ^~~
   include/linux/percpu-defs.h:226:10: note: in expansion of macro 'TYPEOF_UNQUAL'
     226 |         (TYPEOF_UNQUAL(*(__p)) __force __kernel *)((__force unsigned long)(__p))
         |          ^~~~~~~~~~~~~
   include/linux/percpu-defs.h:235:20: note: in expansion of macro 'PERCPU_PTR'
     235 |         RELOC_HIDE(PERCPU_PTR(__p), (__offset))
         |                    ^~~~~~~~~~
   include/linux/percpu-defs.h:240:9: note: in expansion of macro 'SHIFT_PERCPU_PTR'
     240 |         SHIFT_PERCPU_PTR((ptr), per_cpu_offset((cpu)));                 \
         |         ^~~~~~~~~~~~~~~~
   net/knod/knod_core.c:142:21: note: in expansion of macro 'per_cpu_ptr'
     142 |                 p = per_cpu_ptr(knodev->stats, i);
         |                     ^~~~~~~~~~~
>> net/knod/knod_core.c:142:39: error: 'struct knod_dev' has no member named 'stats'
     142 |                 p = per_cpu_ptr(knodev->stats, i);
         |                                       ^~
   include/linux/compiler-gcc.h:35:17: note: in definition of macro 'RELOC_HIDE'
      35 |         (typeof(ptr)) (__ptr + (off));                                  \
         |                 ^~~
   include/linux/percpu-defs.h:235:20: note: in expansion of macro 'PERCPU_PTR'
     235 |         RELOC_HIDE(PERCPU_PTR(__p), (__offset))
         |                    ^~~~~~~~~~
   include/linux/percpu-defs.h:240:9: note: in expansion of macro 'SHIFT_PERCPU_PTR'
     240 |         SHIFT_PERCPU_PTR((ptr), per_cpu_offset((cpu)));                 \
         |         ^~~~~~~~~~~~~~~~
   net/knod/knod_core.c:142:21: note: in expansion of macro 'per_cpu_ptr'
     142 |                 p = per_cpu_ptr(knodev->stats, i);
         |                     ^~~~~~~~~~~
   net/knod/knod_core.c: In function 'knod_d2h_copy':
   net/knod/knod_core.c:212:44: error: 'struct knod_dev' has no member named 'accel_ops'
     212 |         struct knod_accel_ops *ops = knodev->accel_ops;
         |                                            ^~
>> net/knod/knod_core.c:220:24: error: 'struct knod_dev' has no member named 'wpriv'
     220 |         wpriv = &knodev->wpriv[napi_index];
         |                        ^~
>> net/knod/knod_core.c:225:26: error: 'struct knod_dev' has no member named 'd2h_lock'
     225 |         spin_lock(&knodev->d2h_lock);
         |                          ^~
   net/knod/knod_core.c:269:28: error: 'struct knod_dev' has no member named 'd2h_lock'
     269 |         spin_unlock(&knodev->d2h_lock);
         |                            ^~
   net/knod/knod_core.c: In function 'knod_d2h_drain':
   net/knod/knod_core.c:306:20: error: 'struct knod_dev' has no member named 'accel_ops'
     306 |             !knodev->accel_ops->d2h_fence)
         |                    ^~
   net/knod/knod_core.c:308:24: error: 'struct knod_dev' has no member named 'wpriv'
     308 |         wpriv = &knodev->wpriv[napi_index];
         |                        ^~
   net/knod/knod_core.c:319:27: error: 'struct knod_dev' has no member named 'accel_ops'
     319 |         cur_fence = knodev->accel_ops->d2h_fence(knodev, d0->sdma_idx);
         |                           ^~
>> net/knod/knod_core.c:339:27: error: 'struct knod_dev' has no member named 'post_copy'
     339 |                 if (knodev->post_copy) {
         |                           ^~
   net/knod/knod_core.c:340:36: error: 'struct knod_dev' has no member named 'post_copy'
     340 |                         if (!knodev->post_copy(knodev, skb, desc, napi_index)) {
         |                                    ^~
   net/knod/knod_core.c: In function 'knod_ipsec_xdo_state_add':
   net/knod/knod_core.c:395:31: error: 'struct knod_dev' has no member named 'accel_ops'
     395 |         if (!knodev || !knodev->accel_ops->ipsec_ops ||
         |                               ^~
   net/knod/knod_core.c:396:20: error: 'struct knod_dev' has no member named 'accel_ops'
     396 |             !knodev->accel_ops->ipsec_ops->xdo_dev_state_add)
         |                    ^~
   net/knod/knod_core.c:398:22: error: 'struct knod_dev' has no member named 'accel_ops'
     398 |         return knodev->accel_ops->ipsec_ops->xdo_dev_state_add(knodev, x,
         |                      ^~
   net/knod/knod_core.c: In function 'knod_ipsec_xdo_state_delete':
   net/knod/knod_core.c:407:31: error: 'struct knod_dev' has no member named 'accel_ops'
     407 |         if (!knodev || !knodev->accel_ops->ipsec_ops ||
         |                               ^~
   net/knod/knod_core.c:408:20: error: 'struct knod_dev' has no member named 'accel_ops'
     408 |             !knodev->accel_ops->ipsec_ops->xdo_dev_state_delete)
         |                    ^~
   net/knod/knod_core.c:410:15: error: 'struct knod_dev' has no member named 'accel_ops'
     410 |         knodev->accel_ops->ipsec_ops->xdo_dev_state_delete(knodev, x);
         |               ^~
   net/knod/knod_core.c: In function 'knod_ipsec_xdo_state_free':
   net/knod/knod_core.c:418:31: error: 'struct knod_dev' has no member named 'accel_ops'
     418 |         if (!knodev || !knodev->accel_ops->ipsec_ops ||
         |                               ^~
   net/knod/knod_core.c:419:20: error: 'struct knod_dev' has no member named 'accel_ops'
     419 |             !knodev->accel_ops->ipsec_ops->xdo_dev_state_free)
         |                    ^~
   net/knod/knod_core.c:421:15: error: 'struct knod_dev' has no member named 'accel_ops'
     421 |         knodev->accel_ops->ipsec_ops->xdo_dev_state_free(knodev, x);
         |               ^~
   net/knod/knod_core.c: In function 'knod_ipsec_xdo_offload_ok':
   net/knod/knod_core.c:429:31: error: 'struct knod_dev' has no member named 'accel_ops'
     429 |         if (!knodev || !knodev->accel_ops->ipsec_ops ||
         |                               ^~
   net/knod/knod_core.c:430:20: error: 'struct knod_dev' has no member named 'accel_ops'
     430 |             !knodev->accel_ops->ipsec_ops->xdo_dev_offload_ok)
         |                    ^~
   net/knod/knod_core.c:432:22: error: 'struct knod_dev' has no member named 'accel_ops'
     432 |         return knodev->accel_ops->ipsec_ops->xdo_dev_offload_ok(knodev, skb, x);
         |                      ^~
   net/knod/knod_core.c: In function 'knod_ipsec_xdo_state_advance_esn':
   net/knod/knod_core.c:442:31: error: 'struct knod_dev' has no member named 'accel_ops'
     442 |         if (!knodev || !knodev->accel_ops->ipsec_ops ||
         |                               ^~
   net/knod/knod_core.c:443:20: error: 'struct knod_dev' has no member named 'accel_ops'
     443 |             !knodev->accel_ops->ipsec_ops->xdo_dev_state_advance_esn)
         |                    ^~
   net/knod/knod_core.c:445:15: error: 'struct knod_dev' has no member named 'accel_ops'
     445 |         knodev->accel_ops->ipsec_ops->xdo_dev_state_advance_esn(knodev, x);
         |               ^~
   net/knod/knod_core.c: In function 'knod_ipsec_xdo_state_update_stats':
   net/knod/knod_core.c:455:31: error: 'struct knod_dev' has no member named 'accel_ops'
     455 |         if (!knodev || !knodev->accel_ops->ipsec_ops ||
         |                               ^~
   net/knod/knod_core.c:456:20: error: 'struct knod_dev' has no member named 'accel_ops'
     456 |             !knodev->accel_ops->ipsec_ops->xdo_dev_state_update_stats)
         |                    ^~
   net/knod/knod_core.c:458:15: error: 'struct knod_dev' has no member named 'accel_ops'
     458 |         knodev->accel_ops->ipsec_ops->xdo_dev_state_update_stats(knodev, x);
         |               ^~
   net/knod/knod_core.c: In function 'knod_ipsec_xdo_policy_add':
   net/knod/knod_core.c:469:31: error: 'struct knod_dev' has no member named 'accel_ops'
     469 |         if (!knodev || !knodev->accel_ops->ipsec_ops ||
         |                               ^~
   net/knod/knod_core.c:470:20: error: 'struct knod_dev' has no member named 'accel_ops'
     470 |             !knodev->accel_ops->ipsec_ops->xdo_dev_policy_add)
         |                    ^~
   net/knod/knod_core.c:472:22: error: 'struct knod_dev' has no member named 'accel_ops'
     472 |         return knodev->accel_ops->ipsec_ops->xdo_dev_policy_add(knodev, xp,
         |                      ^~
   net/knod/knod_core.c: In function 'knod_ipsec_xdo_policy_delete':
   net/knod/knod_core.c:483:31: error: 'struct knod_dev' has no member named 'accel_ops'
     483 |         if (!knodev || !knodev->accel_ops->ipsec_ops ||
         |                               ^~
   net/knod/knod_core.c:484:20: error: 'struct knod_dev' has no member named 'accel_ops'
     484 |             !knodev->accel_ops->ipsec_ops->xdo_dev_policy_delete)
         |                    ^~
   net/knod/knod_core.c:486:15: error: 'struct knod_dev' has no member named 'accel_ops'
     486 |         knodev->accel_ops->ipsec_ops->xdo_dev_policy_delete(knodev, xp);
         |               ^~
   net/knod/knod_core.c: In function 'knod_ipsec_xdo_policy_free':
   net/knod/knod_core.c:496:31: error: 'struct knod_dev' has no member named 'accel_ops'
     496 |         if (!knodev || !knodev->accel_ops->ipsec_ops ||
         |                               ^~
   net/knod/knod_core.c:497:20: error: 'struct knod_dev' has no member named 'accel_ops'
     497 |             !knodev->accel_ops->ipsec_ops->xdo_dev_policy_free)
         |                    ^~
   net/knod/knod_core.c:499:15: error: 'struct knod_dev' has no member named 'accel_ops'
     499 |         knodev->accel_ops->ipsec_ops->xdo_dev_policy_free(knodev, xp);
         |               ^~
   net/knod/knod_core.c: In function 'knod_dev_xdp_drain_pass':
   net/knod/knod_core.c:517:31: error: 'struct knod_dev' has no member named 'accel_ops'
     517 |         if (!knodev || !knodev->accel_ops)
         |                               ^~
   net/knod/knod_core.c: In function 'knod_ipsec_attach':
   net/knod/knod_core.c:531:20: error: 'struct knod_dev' has no member named 'accel_ops'
     531 |         if (!knodev->accel_ops->ipsec_ops)
         |                    ^~
   net/knod/knod_core.c:534:21: error: 'struct knod_dev' has no member named 'accel_ops'
     534 |         ops = knodev->accel_ops->ipsec_ops;
         |                     ^~
>> net/knod/knod_core.c:548:15: error: 'struct knod_dev' has no member named 'ipsec_orig_xfrmdev_ops'
     548 |         knodev->ipsec_orig_xfrmdev_ops = knodev->netdev->xfrmdev_ops;
         |               ^~
>> net/knod/knod_core.c:549:15: error: 'struct knod_dev' has no member named 'ipsec_added_hw_esp'
     549 |         knodev->ipsec_added_hw_esp =
         |               ^~
   net/knod/knod_core.c: In function 'knod_ipsec_detach':
   net/knod/knod_core.c:563:50: error: 'struct knod_dev' has no member named 'accel_ops'
     563 |         struct knod_accel_ipsec_ops *ops = knodev->accel_ops->ipsec_ops;
         |                                                  ^~
   net/knod/knod_core.c:570:19: error: 'struct knod_dev' has no member named 'ipsec_added_hw_esp'
     570 |         if (knodev->ipsec_added_hw_esp) {
         |                   ^~
   net/knod/knod_core.c:574:45: error: 'struct knod_dev' has no member named 'ipsec_orig_xfrmdev_ops'
     574 |         knodev->netdev->xfrmdev_ops = knodev->ipsec_orig_xfrmdev_ops;
         |                                             ^~
   net/knod/knod_core.c: In function 'knod_pass_drained':
>> net/knod/knod_core.c:704:40: error: 'struct knod_dev' has no member named 'pp_live'
     704 |         if (atomic_dec_and_test(&knodev->pp_live))
         |                                        ^~
>> net/knod/knod_core.c:705:33: error: 'struct knod_dev' has no member named 'pp_drained'
     705 |                 complete(&knodev->pp_drained);
         |                                 ^~
   net/knod/knod_core.c: In function 'knod_pass_attach':
   net/knod/knod_core.c:740:20: error: 'struct knod_dev' has no member named 'accel_ops'
     740 |         if (!knodev->accel_ops->alloc_mem)
         |                    ^~
   net/knod/knod_core.c:744:23: error: 'struct knod_dev' has no member named 'accel_ops'
     744 |         kaddr = knodev->accel_ops->alloc_mem(knodev, total, &base_gaddr, &pages,
         |                       ^~
   net/knod/knod_core.c:751:23: error: 'struct knod_dev' has no member named 'accel_ops'
     751 |                 knodev->accel_ops->free_mem(knodev, pass_priv);
         |                       ^~
   net/knod/knod_core.c:755:32: error: 'struct knod_dev' has no member named 'pp_drained'
     755 |         init_completion(&knodev->pp_drained);
         |                                ^~
   net/knod/knod_core.c:756:27: error: 'struct knod_dev' has no member named 'pp_live'
     756 |         atomic_set(&knodev->pp_live, 0);
         |                           ^~
   In file included from include/linux/sched.h:38,
                    from include/linux/percpu.h:12,
                    from arch/x86/include/asm/msr.h:16,
                    from arch/x86/include/asm/tsc.h:11,
                    from arch/x86/include/asm/timex.h:6,
                    from include/linux/timex.h:67,
                    from include/linux/time32.h:13,
                    from include/linux/time.h:60,
                    from include/linux/jiffies.h:10,
                    from include/linux/ktime.h:25,
                    from include/linux/timer.h:6,
                    from include/linux/workqueue.h:10:
   net/knod/knod_core.c:757:31: error: 'struct knod_dev' has no member named 'd2h_lock'
     757 |         spin_lock_init(&knodev->d2h_lock);
         |                               ^~
   include/linux/spinlock.h:325:45: note: in definition of macro 'spin_lock_init'
     325 |         __raw_spin_lock_init(spinlock_check(lock),              \
         |                                             ^~~~
   net/knod/knod_core.c:760:55: error: 'struct knod_dev' has no member named 'wpriv'
     760 |                 struct knod_work_priv *wpriv = &knodev->wpriv[qi];
         |                                                       ^~
   net/knod/knod_core.c:781:35: error: 'struct knod_dev' has no member named 'pp_live'
     781 |                 atomic_inc(&knodev->pp_live);
         |                                   ^~
>> net/knod/knod_core.c:784:15: error: 'struct knod_dev' has no member named 'pass_priv'
     784 |         knodev->pass_priv = pass_priv;
         |               ^~
   net/knod/knod_core.c:789:37: error: 'struct knod_dev' has no member named 'wpriv'
     789 |                 spsc_destroy(&knodev->wpriv[qi].pass_pending);
         |                                     ^~
   net/knod/knod_core.c:790:41: error: 'struct knod_dev' has no member named 'wpriv'
     790 |                 page_pool_destroy(knodev->wpriv[qi].pass_pool);
         |                                         ^~
   net/knod/knod_core.c:791:23: error: 'struct knod_dev' has no member named 'wpriv'
     791 |                 knodev->wpriv[qi].pass_pool = NULL;
         |                       ^~
   net/knod/knod_core.c:793:32: error: 'struct knod_dev' has no member named 'pp_live'
     793 |         if (atomic_read(&knodev->pp_live))
         |                                ^~
   net/knod/knod_core.c:794:52: error: 'struct knod_dev' has no member named 'pp_drained'
     794 |                 wait_for_completion_timeout(&knodev->pp_drained,
         |                                                    ^~
   net/knod/knod_core.c:796:15: error: 'struct knod_dev' has no member named 'accel_ops'
     796 |         knodev->accel_ops->free_mem(knodev, pass_priv);
         |               ^~
   net/knod/knod_core.c: In function 'knod_pass_flush':
   net/knod/knod_core.c:808:47: error: 'struct knod_dev' has no member named 'wpriv'
     808 |         struct knod_work_priv *wpriv = &knodev->wpriv[qi];
         |                                               ^~
   net/knod/knod_core.c:822:38: error: 'struct knod_dev' has no member named 'accel_ops'
     822 |                         while (knodev->accel_ops->d2h_fence && spins-- &&
         |                                      ^~
   net/knod/knod_core.c:823:44: error: 'struct knod_dev' has no member named 'accel_ops'
     823 |                                (s32)(knodev->accel_ops->d2h_fence(knodev,
         |                                            ^~
   net/knod/knod_core.c:827:41: error: 'struct knod_dev' has no member named 'accel_ops'
     827 |                         WARN_ONCE(knodev->accel_ops->d2h_fence &&
         |                                         ^~
   arch/x86/include/asm/bug.h:184:32: note: in definition of macro 'WARN_ONCE'
     184 |         int __ret_warn_on = !!(cond);                                   \
         |                                ^~~~
   net/knod/knod_core.c:828:47: error: 'struct knod_dev' has no member named 'accel_ops'
     828 |                                   (s32)(knodev->accel_ops->d2h_fence(knodev,
         |                                               ^~
   arch/x86/include/asm/bug.h:184:32: note: in definition of macro 'WARN_ONCE'
     184 |         int __ret_warn_on = !!(cond);                                   \
         |                                ^~~~
   net/knod/knod_core.c: In function 'knod_pass_detach':
   net/knod/knod_core.c:857:20: error: 'struct knod_dev' has no member named 'pass_priv'
     857 |         if (!knodev->pass_priv)
         |                    ^~
   net/knod/knod_core.c:864:28: error: 'struct knod_dev' has no member named 'wpriv'
     864 |                 if (!knodev->wpriv[qi].pass_pool)
         |                            ^~
   net/knod/knod_core.c:871:37: error: 'struct knod_dev' has no member named 'wpriv'
     871 |                 spsc_destroy(&knodev->wpriv[qi].pass_pending);
         |                                     ^~
   net/knod/knod_core.c:872:41: error: 'struct knod_dev' has no member named 'wpriv'
     872 |                 page_pool_destroy(knodev->wpriv[qi].pass_pool);
         |                                         ^~
   net/knod/knod_core.c:873:23: error: 'struct knod_dev' has no member named 'wpriv'
     873 |                 knodev->wpriv[qi].pass_pool = NULL;
         |                       ^~
   net/knod/knod_core.c:875:32: error: 'struct knod_dev' has no member named 'pp_live'
     875 |         if (atomic_read(&knodev->pp_live))
         |                                ^~
   net/knod/knod_core.c:876:52: error: 'struct knod_dev' has no member named 'pp_drained'
     876 |                 wait_for_completion_timeout(&knodev->pp_drained,
         |                                                    ^~
   net/knod/knod_core.c:878:15: error: 'struct knod_dev' has no member named 'accel_ops'
     878 |         knodev->accel_ops->free_mem(knodev, knodev->pass_priv);
         |               ^~
   net/knod/knod_core.c:878:51: error: 'struct knod_dev' has no member named 'pass_priv'
     878 |         knodev->accel_ops->free_mem(knodev, knodev->pass_priv);
         |                                                   ^~
   net/knod/knod_core.c:879:15: error: 'struct knod_dev' has no member named 'pass_priv'
     879 |         knodev->pass_priv = NULL;
         |               ^~
   net/knod/knod_core.c: In function 'knod_dmabuf_attach':
   net/knod/knod_core.c:899:32: error: 'struct knod_dev' has no member named 'wpriv'
     899 |                 dmabuf = knodev->wpriv[i].dmabuf;
         |                                ^~
   net/knod/knod_core.c: In function 'knod_dev_attach':
   net/knod/knod_core.c:991:15: error: 'struct knod_dev' has no member named 'accel_ops'
     991 |         knodev->accel_ops = accel->accel_ops;
         |               ^~
>> net/knod/knod_core.c:992:15: error: 'struct knod_dev' has no member named 'nic_ops'
     992 |         knodev->nic_ops = knetdev->nic_ops;
         |               ^~
   net/knod/knod_core.c:995:15: error: 'struct knod_dev' has no member named 'stats'
     995 |         knodev->stats = netdev_alloc_pcpu_stats(struct knod_dev_stats);
         |               ^~
   net/knod/knod_core.c:996:20: error: 'struct knod_dev' has no member named 'stats'
     996 |         if (!knodev->stats) {
         |                    ^~
   net/knod/knod_core.c:1003:15: error: 'struct knod_dev' has no member named 'wpriv'
    1003 |         knodev->wpriv = kmalloc_array(KNOD_SPSC_MAX,
         |               ^~
   net/knod/knod_core.c:1006:20: error: 'struct knod_dev' has no member named 'wpriv'
    1006 |         if (!knodev->wpriv) {
         |                    ^~
   net/knod/knod_core.c:1014:21: error: 'struct knod_dev' has no member named 'nic_ops'
    1014 |         err = knodev->nic_ops->attach(knodev);
         |                     ^~
   net/knod/knod_core.c:1022:21: error: 'struct knod_dev' has no member named 'accel_ops'
    1022 |         err = knodev->accel_ops->attach(knodev);
         |                     ^~
   net/knod/knod_core.c:1038:27: error: 'struct knod_dev' has no member named 'accel_ops'
    1038 |                 if (knodev->accel_ops->alloc_mem) {
         |                           ^~
   net/knod/knod_core.c:1044:43: error: 'struct knod_dev' has no member named 'accel_ops'
    1044 |                         base_pool = knodev->accel_ops->alloc_mem(knodev, total,
         |                                           ^~
   net/knod/knod_core.c:1054:31: error: 'struct knod_dev' has no member named 'wpriv'
    1054 |                         knodev->wpriv[0].spsc_pool_priv = pool_priv;
         |                               ^~
   net/knod/knod_core.c:1059:39: error: 'struct knod_dev' has no member named 'wpriv'
    1059 |                                 knodev->wpriv[i].spsc_pool_gaddr =
         |                                       ^~
   net/knod/knod_core.c:1061:58: error: 'struct knod_dev' has no member named 'wpriv'
    1061 |                                 err = __spsc_init(&knodev->wpriv[i].spsc_bds,
         |                                                          ^~
   net/knod/knod_core.c:1073:56: error: 'struct knod_dev' has no member named 'wpriv'
    1073 |                                 err = spsc_init(&knodev->wpriv[i].spsc_bds,
         |                                                        ^~
   net/knod/knod_core.c:1089:37: error: 'struct knod_dev' has no member named 'wpriv'
    1089 |                 spsc_destroy(&knodev->wpriv[i].spsc_bds);
         |                                     ^~
   net/knod/knod_core.c:1090:19: error: 'struct knod_dev' has no member named 'wpriv'
    1090 |         if (knodev->wpriv[0].spsc_pool_priv)
         |                   ^~
   net/knod/knod_core.c:1091:23: error: 'struct knod_dev' has no member named 'accel_ops'
    1091 |                 knodev->accel_ops->free_mem(knodev,
         |                       ^~
   net/knod/knod_core.c:1092:39: error: 'struct knod_dev' has no member named 'wpriv'
    1092 |                                 knodev->wpriv[0].spsc_pool_priv);
         |                                       ^~
   net/knod/knod_core.c:1093:15: error: 'struct knod_dev' has no member named 'accel_ops'
    1093 |         knodev->accel_ops->detach(knodev);
         |               ^~
   net/knod/knod_core.c:1117:19: error: 'struct knod_dev' has no member named 'accel_ops'
    1117 |         if (knodev->accel_ops->xdp_ops && knodev->accel_ops->xdp_ops->init) {
         |                   ^~
   net/knod/knod_core.c:1117:49: error: 'struct knod_dev' has no member named 'accel_ops'
    1117 |         if (knodev->accel_ops->xdp_ops && knodev->accel_ops->xdp_ops->init) {
         |                                                 ^~
   net/knod/knod_core.c:1118:29: error: 'struct knod_dev' has no member named 'accel_ops'
    1118 |                 err = knodev->accel_ops->xdp_ops->init(knodev);
         |                             ^~
   net/knod/knod_core.c:1133:19: error: 'struct knod_dev' has no member named 'accel_ops'
    1133 |         if (knodev->accel_ops->mp_map) {
         |                   ^~
   net/knod/knod_core.c:1134:29: error: 'struct knod_dev' has no member named 'accel_ops'
    1134 |                 err = knodev->accel_ops->mp_map(knodev);
         |                             ^~
   net/knod/knod_core.c:1153:37: error: 'struct knod_dev' has no member named 'wpriv'
    1153 |                 spsc_destroy(&knodev->wpriv[i].spsc_bds);
         |                                     ^~
   net/knod/knod_core.c:1154:19: error: 'struct knod_dev' has no member named 'wpriv'
    1154 |         if (knodev->wpriv[0].spsc_pool_priv)
         |                   ^~
   net/knod/knod_core.c:1155:23: error: 'struct knod_dev' has no member named 'accel_ops'
    1155 |                 knodev->accel_ops->free_mem(knodev,
         |                       ^~
   net/knod/knod_core.c:1156:39: error: 'struct knod_dev' has no member named 'wpriv'
    1156 |                                 knodev->wpriv[0].spsc_pool_priv);
         |                                       ^~
   net/knod/knod_core.c:1157:15: error: 'struct knod_dev' has no member named 'accel_ops'
    1157 |         knodev->accel_ops->detach(knodev);
         |               ^~
   net/knod/knod_core.c:1159:15: error: 'struct knod_dev' has no member named 'nic_ops'
    1159 |         knodev->nic_ops->detach(knodev);
         |               ^~
   net/knod/knod_core.c:1162:21: error: 'struct knod_dev' has no member named 'wpriv'
    1162 |         kfree(knodev->wpriv);
         |                     ^~
   net/knod/knod_core.c:1164:27: error: 'struct knod_dev' has no member named 'stats'
    1164 |         free_percpu(knodev->stats);
         |                           ^~
   net/knod/knod_core.c: In function 'knod_dev_detach':
   net/knod/knod_core.c:1197:19: error: 'struct knod_dev' has no member named 'accel_ops'
    1197 |         if (knodev->accel_ops->pre_detach)
         |                   ^~
   net/knod/knod_core.c:1198:23: error: 'struct knod_dev' has no member named 'accel_ops'
    1198 |                 knodev->accel_ops->pre_detach(knodev);
         |                       ^~
   net/knod/knod_core.c:1203:37: error: 'struct knod_dev' has no member named 'wpriv'
..


vim +108 net/knod/knod_core.c

   104	
   105	void knod_dev_start(struct knod_dev *knodev)
   106	{
   107		/* Interface up: start the active feature's worker. */
 > 108		knodev->started = true;
 > 109		if (knodev->accel_ops->dev_start)
   110			knodev->accel_ops->dev_start(knodev);
   111	}
   112	EXPORT_SYMBOL(knod_dev_start);
   113	
   114	void knod_dev_stop(struct knod_dev *knodev)
   115	{
   116		/* Interface down: stop the worker + drain the GPU in-flight. */
   117		if (knodev->accel_ops->dev_stop)
   118			knodev->accel_ops->dev_stop(knodev);
   119		knodev->started = false;
   120	}
   121	EXPORT_SYMBOL(knod_dev_stop);
   122	
   123	int knod_dev_xdp_install(struct knod_dev *knodev, struct netdev_bpf *xdp)
   124	{
   125		if (!knodev->accel_ops->xdp_ops ||
   126		    !knodev->accel_ops->xdp_ops->xdp_install)
   127			return -EOPNOTSUPP;
   128		return knodev->accel_ops->xdp_ops->xdp_install(knodev, xdp);
   129	}
   130	EXPORT_SYMBOL(knod_dev_xdp_install);
   131	
   132	void knod_dev_get_stats64(struct knod_dev *knodev,
   133				  struct rtnl_link_stats64 *stats)
   134	{
   135		struct knod_dev_stats *p;
   136		u32 tx_dropped = 0, tx_errors = 0;
   137		u64 tx_packets, tx_bytes;
   138		unsigned int start;
   139		int i;
   140	
   141		for_each_possible_cpu(i) {
 > 142			p = per_cpu_ptr(knodev->stats, i);
   143			do {
   144				start = u64_stats_fetch_begin(&p->syncp);
   145				tx_packets      = u64_stats_read(&p->tx_packets);
   146				tx_bytes        = u64_stats_read(&p->tx_bytes);
   147			} while (u64_stats_fetch_retry(&p->syncp, start));
   148	
   149			stats->tx_packets       += tx_packets;
   150			stats->tx_bytes         += tx_bytes;
   151			tx_dropped      += READ_ONCE(p->tx_dropped);
   152			tx_errors	+= READ_ONCE(p->tx_errors);
   153		}
   154		stats->tx_dropped       += tx_dropped;
   155		stats->tx_errors	+= tx_errors;
   156	}
   157	EXPORT_SYMBOL(knod_dev_get_stats64);
   158	
   159	/*
   160	 * Wrap a delivery-pool page as a zero-copy head_frag skb: the packet sits at
   161	 * @off (preserved headroom) for @len bytes.  Building it linear keeps
   162	 * skb->data on the packet so callers can edit headers in place.  The page
   163	 * recycles to @pool when the skb is freed.  On oversize or alloc failure the
   164	 * page is returned to @pool and NULL is returned.  @napi selects the NAPI skb
   165	 * cache; callers outside softirq pass false.
   166	 */
   167	struct sk_buff *knod_pass_build_skb(netmem_ref netmem, u16 off, u16 len,
   168					    struct page_pool *pool, bool napi)
   169	{
   170		struct page *pg = netmem_to_page(netmem);
   171		struct sk_buff *skb;
   172	
   173		/* Must fit alongside skb_shared_info at the page tail; MTU is capped
   174		 * below this, so drop the rare oversized outlier.
   175		 */
   176		if (off + len > SKB_WITH_OVERHEAD(PAGE_SIZE)) {
   177			if (pool)
   178				page_pool_put_full_netmem(pool, netmem, false);
   179			return NULL;
   180		}
   181	
   182		if (napi)
   183			skb = napi_build_skb(page_address(pg), PAGE_SIZE);
   184		else
   185			skb = build_skb(page_address(pg), PAGE_SIZE);
   186		if (unlikely(!skb)) {
   187			if (pool)
   188				page_pool_put_full_netmem(pool, netmem, false);
   189			return NULL;
   190		}
   191	
   192		skb_mark_for_recycle(skb);
   193		skb_reserve(skb, off);
   194		skb_put(skb, len);
   195		return skb;
   196	}
   197	EXPORT_SYMBOL(knod_pass_build_skb);
   198	
   199	/*
   200	 * Device->host copy: the NIC DD hands the PASS bds it accumulated during its
   201	 * single act traversal.  Allocate a delivery page per packet, issue the accel
   202	 * SDMA (GPU -> page) asynchronously, and queue a descriptor on the per-queue
   203	 * pending ring tagged with this batch's fence; knod_d2h_drain delivers them
   204	 * once the fence lands and recycles the source.  Sources that cannot be queued
   205	 * (bad len / ring full / pool empty) are recycled here.  Returns the count
   206	 * queued.  Producer and the drain consumer run on the same per-queue NAPI, so
   207	 * the ring is single-threaded; @d2h_lock only guards the shared SDMA submit.
   208	 */
   209	int knod_d2h_copy(struct knod_dev *knodev, int napi_index,
   210			  struct spsc_pass_bd *bds, int cnt)
   211	{
   212		struct knod_accel_ops *ops = knodev->accel_ops;
   213		struct knod_work_priv *wpriv;
   214		struct page_pool *pool;
   215		bool submitted = false;
   216		int i, produced = 0;
   217	
   218		if (napi_index < 0 || napi_index >= KNOD_SPSC_MAX || !ops->d2h_submit)
   219			goto drop_all;
 > 220		wpriv = &knodev->wpriv[napi_index];
   221		pool = READ_ONCE(wpriv->pass_pool);
   222		if (!pool || !wpriv->pass_pending.slots)
   223			goto drop_all;
   224	
 > 225		spin_lock(&knodev->d2h_lock);
   226	
   227		for (i = 0; i < cnt; i++) {
   228			netmem_ref src = bds[i].netmem;
   229			struct knod_pass_desc *desc;
   230			netmem_ref dst;
   231			void *ptr;
   232			u32 fv;
   233			u16 off = bds[i].off;
   234			u16 len = bds[i].len;
   235	
   236			if (!len || off + len > SKB_WITH_OVERHEAD(PAGE_SIZE))
   237				goto drop;
   238			if (spsc_produce(&wpriv->pass_pending, &ptr))
   239				goto drop;
   240			dst = page_pool_dev_alloc_netmems(pool);
   241			if (!dst)
   242				goto drop;	/* slot left uncommitted, reused next */
   243	
   244			fv = ops->d2h_submit(knodev,
   245					     page_pool_get_dma_addr_netmem(dst) + off,
   246					     napi_index, bds[i].page_idx, off, len);
   247			if (!fv) {		/* SDMA ring full: backpressure drop */
   248				page_pool_put_full_netmem(pool, dst, false);
   249				goto drop;
   250			}
   251			submitted = true;
   252	
   253			desc = ptr;
   254			desc->netmem = dst;
   255			desc->src = src;
   256			desc->off = off;
   257			desc->len = len;
   258			desc->fence_val = fv;
   259			desc->sdma_idx = 0;
   260			spsc_produce_commit(&wpriv->pass_pending);
   261			produced++;
   262			continue;
   263	drop:
   264			page_pool_recycle_direct_netmem(netmem_get_pp(src), src);
   265		}
   266	
   267		if (submitted)
   268			ops->d2h_kick(knodev);
   269		spin_unlock(&knodev->d2h_lock);
   270	
   271		/* The copies are async; re-arm the NAPI so the drain runs once the
   272		 * SDMA lands -- at low rate, RX traffic alone may not poll again soon.
   273		 */
   274		if (submitted)
   275			knod_napi_kick(wpriv);
   276		return produced;
   277	
   278	drop_all:
   279		for (i = 0; i < cnt; i++)
   280			page_pool_recycle_direct_netmem(netmem_get_pp(bds[i].netmem),
   281							bds[i].netmem);
   282		return 0;
   283	}
   284	EXPORT_SYMBOL(knod_d2h_copy);
   285	

--
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:[~2026-07-20  6:41 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-20  6:41 net/knod/knod_core.c:108:15: error: 'struct knod_dev' has no member named 'started' 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.