Lines Matching refs:kattr
435 static int bpf_test_finish(const union bpf_attr *kattr,
440 void __user *data_out = u64_to_user_ptr(kattr->test.data_out);
447 if (kattr->test.data_size_out &&
448 copy_size > kattr->test.data_size_out) {
449 copy_size = kattr->test.data_size_out;
626 static void *bpf_test_init(const union bpf_attr *kattr, u32 user_size,
629 void __user *data_in = u64_to_user_ptr(kattr->test.data_in);
652 const union bpf_attr *kattr,
660 if (kattr->test.flags || kattr->test.cpu || kattr->test.batch_size)
717 const union bpf_attr *kattr,
720 void __user *ctx_in = u64_to_user_ptr(kattr->test.ctx_in);
721 __u32 ctx_size_in = kattr->test.ctx_size_in;
723 int cpu = kattr->test.cpu, err = 0;
727 if (kattr->test.data_in || kattr->test.data_out ||
728 kattr->test.ctx_out || kattr->test.duration ||
729 kattr->test.repeat || kattr->test.batch_size)
736 if ((kattr->test.flags & BPF_F_TEST_RUN_ON_CPU) == 0 && cpu != 0)
750 if ((kattr->test.flags & BPF_F_TEST_RUN_ON_CPU) == 0 ||
774 static void *bpf_ctx_init(const union bpf_attr *kattr, u32 max_size)
776 void __user *data_in = u64_to_user_ptr(kattr->test.ctx_in);
777 void __user *data_out = u64_to_user_ptr(kattr->test.ctx_out);
778 u32 size = kattr->test.ctx_size_in;
805 static int bpf_ctx_finish(const union bpf_attr *kattr,
809 void __user *data_out = u64_to_user_ptr(kattr->test.ctx_out);
816 if (copy_size > kattr->test.ctx_size_out) {
817 copy_size = kattr->test.ctx_size_out;
944 int bpf_prog_test_run_skb(struct bpf_prog *prog, const union bpf_attr *kattr,
950 u32 size = kattr->test.data_size_in;
951 u32 repeat = kattr->test.repeat;
960 if (kattr->test.flags || kattr->test.cpu || kattr->test.batch_size)
963 data = bpf_test_init(kattr, kattr->test.data_size_in,
969 ctx = bpf_ctx_init(kattr, sizeof(struct __sk_buff));
1066 ret = bpf_test_finish(kattr, uattr, skb->data, NULL, size, retval,
1069 ret = bpf_ctx_finish(kattr, uattr, ctx,
1138 int bpf_prog_test_run_xdp(struct bpf_prog *prog, const union bpf_attr *kattr,
1141 bool do_live = (kattr->test.flags & BPF_F_TEST_XDP_LIVE_FRAMES);
1143 u32 batch_size = kattr->test.batch_size;
1145 u32 size = kattr->test.data_size_in;
1147 u32 repeat = kattr->test.repeat;
1159 if (kattr->test.flags & ~BPF_F_TEST_XDP_LIVE_FRAMES)
1176 ctx = bpf_ctx_init(kattr, sizeof(struct xdp_md));
1185 (do_live && (kattr->test.data_out || kattr->test.ctx_out)))
1199 data = bpf_test_init(kattr, size, max_data_sz, headroom, tailroom);
1215 if (unlikely(kattr->test.data_size_in > size)) {
1216 void __user *data_in = u64_to_user_ptr(kattr->test.data_in);
1218 while (size < kattr->test.data_size_in) {
1236 data_len = min_t(u32, kattr->test.data_size_in - size,
1267 ret = bpf_test_finish(kattr, uattr, xdp.data_meta, sinfo, size,
1270 ret = bpf_ctx_finish(kattr, uattr, ctx,
1301 const union bpf_attr *kattr,
1305 u32 size = kattr->test.data_size_in;
1307 u32 repeat = kattr->test.repeat;
1316 if (kattr->test.flags || kattr->test.cpu || kattr->test.batch_size)
1322 data = bpf_test_init(kattr, kattr->test.data_size_in, size, 0, 0);
1331 user_ctx = bpf_ctx_init(kattr, sizeof(struct bpf_flow_keys));
1357 ret = bpf_test_finish(kattr, uattr, &flow_keys, NULL,
1360 ret = bpf_ctx_finish(kattr, uattr, user_ctx,
1369 int bpf_prog_test_run_sk_lookup(struct bpf_prog *prog, const union bpf_attr *kattr,
1375 u32 repeat = kattr->test.repeat;
1380 if (kattr->test.flags || kattr->test.cpu || kattr->test.batch_size)
1383 if (kattr->test.data_in || kattr->test.data_size_in || kattr->test.data_out ||
1384 kattr->test.data_size_out)
1390 user_ctx = bpf_ctx_init(kattr, sizeof(*user_ctx));
1459 ret = bpf_test_finish(kattr, uattr, NULL, NULL, 0, retval, duration);
1461 ret = bpf_ctx_finish(kattr, uattr, user_ctx, sizeof(*user_ctx));
1470 const union bpf_attr *kattr,
1473 void __user *ctx_in = u64_to_user_ptr(kattr->test.ctx_in);
1474 __u32 ctx_size_in = kattr->test.ctx_size_in;
1480 if (kattr->test.data_in || kattr->test.data_out ||
1481 kattr->test.ctx_out || kattr->test.duration ||
1482 kattr->test.repeat || kattr->test.flags ||
1483 kattr->test.batch_size)
1568 const union bpf_attr *kattr,
1577 u32 size = kattr->test.data_size_in;
1578 u32 repeat = kattr->test.repeat;
1587 if (kattr->test.flags || kattr->test.cpu || kattr->test.batch_size)
1593 data = bpf_test_init(kattr, kattr->test.data_size_in, size,
1602 user_ctx = bpf_ctx_init(kattr, sizeof(struct nf_hook_state));
1659 ret = bpf_test_finish(kattr, uattr, NULL, NULL, 0, retval, duration);