Lines Matching refs:prog

40 	struct tcf_bpf *prog = to_bpf(act);  in tcf_bpf_act()  local
44 tcf_lastuse_update(&prog->tcf_tm); in tcf_bpf_act()
45 bstats_update(this_cpu_ptr(prog->common.cpu_bstats), skb); in tcf_bpf_act()
47 filter = rcu_dereference(prog->filter); in tcf_bpf_act()
81 qstats_drop_inc(this_cpu_ptr(prog->common.cpu_qstats)); in tcf_bpf_act()
84 action = prog->tcf_action; in tcf_bpf_act()
94 static bool tcf_bpf_is_ebpf(const struct tcf_bpf *prog) in tcf_bpf_is_ebpf() argument
96 return !prog->bpf_ops; in tcf_bpf_is_ebpf()
99 static int tcf_bpf_dump_bpf_info(const struct tcf_bpf *prog, in tcf_bpf_dump_bpf_info() argument
104 if (nla_put_u16(skb, TCA_ACT_BPF_OPS_LEN, prog->bpf_num_ops)) in tcf_bpf_dump_bpf_info()
107 nla = nla_reserve(skb, TCA_ACT_BPF_OPS, prog->bpf_num_ops * in tcf_bpf_dump_bpf_info()
112 memcpy(nla_data(nla), prog->bpf_ops, nla_len(nla)); in tcf_bpf_dump_bpf_info()
117 static int tcf_bpf_dump_ebpf_info(const struct tcf_bpf *prog, in tcf_bpf_dump_ebpf_info() argument
122 if (prog->bpf_name && in tcf_bpf_dump_ebpf_info()
123 nla_put_string(skb, TCA_ACT_BPF_NAME, prog->bpf_name)) in tcf_bpf_dump_ebpf_info()
126 if (nla_put_u32(skb, TCA_ACT_BPF_ID, prog->filter->aux->id)) in tcf_bpf_dump_ebpf_info()
129 nla = nla_reserve(skb, TCA_ACT_BPF_TAG, sizeof(prog->filter->tag)); in tcf_bpf_dump_ebpf_info()
133 memcpy(nla_data(nla), prog->filter->tag, nla_len(nla)); in tcf_bpf_dump_ebpf_info()
142 struct tcf_bpf *prog = to_bpf(act); in tcf_bpf_dump() local
144 .index = prog->tcf_index, in tcf_bpf_dump()
145 .refcnt = refcount_read(&prog->tcf_refcnt) - ref, in tcf_bpf_dump()
146 .bindcnt = atomic_read(&prog->tcf_bindcnt) - bind, in tcf_bpf_dump()
151 spin_lock_bh(&prog->tcf_lock); in tcf_bpf_dump()
152 opt.action = prog->tcf_action; in tcf_bpf_dump()
156 if (tcf_bpf_is_ebpf(prog)) in tcf_bpf_dump()
157 ret = tcf_bpf_dump_ebpf_info(prog, skb); in tcf_bpf_dump()
159 ret = tcf_bpf_dump_bpf_info(prog, skb); in tcf_bpf_dump()
163 tcf_tm_dump(&tm, &prog->tcf_tm); in tcf_bpf_dump()
168 spin_unlock_bh(&prog->tcf_lock); in tcf_bpf_dump()
172 spin_unlock_bh(&prog->tcf_lock); in tcf_bpf_dump()
266 static void tcf_bpf_prog_fill_cfg(const struct tcf_bpf *prog, in tcf_bpf_prog_fill_cfg() argument
269 cfg->is_ebpf = tcf_bpf_is_ebpf(prog); in tcf_bpf_prog_fill_cfg()
273 cfg->filter = rcu_dereference_protected(prog->filter, 1); in tcf_bpf_prog_fill_cfg()
275 cfg->bpf_ops = prog->bpf_ops; in tcf_bpf_prog_fill_cfg()
276 cfg->bpf_name = prog->bpf_name; in tcf_bpf_prog_fill_cfg()
290 struct tcf_bpf *prog; in tcf_bpf_init() local
350 prog = to_bpf(*act); in tcf_bpf_init()
352 spin_lock_bh(&prog->tcf_lock); in tcf_bpf_init()
354 tcf_bpf_prog_fill_cfg(prog, &old); in tcf_bpf_init()
356 prog->bpf_ops = cfg.bpf_ops; in tcf_bpf_init()
357 prog->bpf_name = cfg.bpf_name; in tcf_bpf_init()
360 prog->bpf_num_ops = cfg.bpf_num_ops; in tcf_bpf_init()
363 rcu_assign_pointer(prog->filter, cfg.filter); in tcf_bpf_init()
364 spin_unlock_bh(&prog->tcf_lock); in tcf_bpf_init()