Lines Matching refs:prog

39 	struct tcf_bpf *prog = to_bpf(act);
43 tcf_lastuse_update(&prog->tcf_tm);
44 bstats_cpu_update(this_cpu_ptr(prog->common.cpu_bstats), skb);
47 filter = rcu_dereference(prog->filter);
80 qstats_drop_inc(this_cpu_ptr(prog->common.cpu_qstats));
83 action = prog->tcf_action;
93 static bool tcf_bpf_is_ebpf(const struct tcf_bpf *prog)
95 return !prog->bpf_ops;
98 static int tcf_bpf_dump_bpf_info(const struct tcf_bpf *prog,
103 if (nla_put_u16(skb, TCA_ACT_BPF_OPS_LEN, prog->bpf_num_ops))
106 nla = nla_reserve(skb, TCA_ACT_BPF_OPS, prog->bpf_num_ops *
111 memcpy(nla_data(nla), prog->bpf_ops, nla_len(nla));
116 static int tcf_bpf_dump_ebpf_info(const struct tcf_bpf *prog,
121 if (prog->bpf_name &&
122 nla_put_string(skb, TCA_ACT_BPF_NAME, prog->bpf_name))
125 if (nla_put_u32(skb, TCA_ACT_BPF_ID, prog->filter->aux->id))
128 nla = nla_reserve(skb, TCA_ACT_BPF_TAG, sizeof(prog->filter->tag));
132 memcpy(nla_data(nla), prog->filter->tag, nla_len(nla));
141 struct tcf_bpf *prog = to_bpf(act);
143 .index = prog->tcf_index,
144 .refcnt = refcount_read(&prog->tcf_refcnt) - ref,
145 .bindcnt = atomic_read(&prog->tcf_bindcnt) - bind,
150 spin_lock_bh(&prog->tcf_lock);
151 opt.action = prog->tcf_action;
155 if (tcf_bpf_is_ebpf(prog))
156 ret = tcf_bpf_dump_ebpf_info(prog, skb);
158 ret = tcf_bpf_dump_bpf_info(prog, skb);
162 tcf_tm_dump(&tm, &prog->tcf_tm);
167 spin_unlock_bh(&prog->tcf_lock);
171 spin_unlock_bh(&prog->tcf_lock);
265 static void tcf_bpf_prog_fill_cfg(const struct tcf_bpf *prog,
268 cfg->is_ebpf = tcf_bpf_is_ebpf(prog);
269 /* updates to prog->filter are prevented, since it's called either
272 cfg->filter = rcu_dereference_protected(prog->filter, 1);
274 cfg->bpf_ops = prog->bpf_ops;
275 cfg->bpf_name = prog->bpf_name;
289 struct tcf_bpf *prog;
349 prog = to_bpf(*act);
351 spin_lock_bh(&prog->tcf_lock);
353 tcf_bpf_prog_fill_cfg(prog, &old);
355 prog->bpf_ops = cfg.bpf_ops;
356 prog->bpf_name = cfg.bpf_name;
359 prog->bpf_num_ops = cfg.bpf_num_ops;
362 rcu_assign_pointer(prog->filter, cfg.filter);
363 spin_unlock_bh(&prog->tcf_lock);