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