Lines Matching refs:prog

39 	struct tcf_bpf *prog = to_bpf(act);  in tcf_bpf_act()  local
43 tcf_lastuse_update(&prog->tcf_tm); in tcf_bpf_act()
44 bstats_update(this_cpu_ptr(prog->common.cpu_bstats), skb); in tcf_bpf_act()
46 filter = rcu_dereference(prog->filter); in tcf_bpf_act()
78 qstats_drop_inc(this_cpu_ptr(prog->common.cpu_qstats)); in tcf_bpf_act()
81 action = prog->tcf_action; in tcf_bpf_act()
91 static bool tcf_bpf_is_ebpf(const struct tcf_bpf *prog) in tcf_bpf_is_ebpf() argument
93 return !prog->bpf_ops; in tcf_bpf_is_ebpf()
96 static int tcf_bpf_dump_bpf_info(const struct tcf_bpf *prog, in tcf_bpf_dump_bpf_info() argument
101 if (nla_put_u16(skb, TCA_ACT_BPF_OPS_LEN, prog->bpf_num_ops)) in tcf_bpf_dump_bpf_info()
104 nla = nla_reserve(skb, TCA_ACT_BPF_OPS, prog->bpf_num_ops * in tcf_bpf_dump_bpf_info()
109 memcpy(nla_data(nla), prog->bpf_ops, nla_len(nla)); in tcf_bpf_dump_bpf_info()
114 static int tcf_bpf_dump_ebpf_info(const struct tcf_bpf *prog, in tcf_bpf_dump_ebpf_info() argument
119 if (prog->bpf_name && in tcf_bpf_dump_ebpf_info()
120 nla_put_string(skb, TCA_ACT_BPF_NAME, prog->bpf_name)) in tcf_bpf_dump_ebpf_info()
123 if (nla_put_u32(skb, TCA_ACT_BPF_ID, prog->filter->aux->id)) in tcf_bpf_dump_ebpf_info()
126 nla = nla_reserve(skb, TCA_ACT_BPF_TAG, sizeof(prog->filter->tag)); in tcf_bpf_dump_ebpf_info()
130 memcpy(nla_data(nla), prog->filter->tag, nla_len(nla)); in tcf_bpf_dump_ebpf_info()
139 struct tcf_bpf *prog = to_bpf(act); in tcf_bpf_dump() local
141 .index = prog->tcf_index, in tcf_bpf_dump()
142 .refcnt = refcount_read(&prog->tcf_refcnt) - ref, in tcf_bpf_dump()
143 .bindcnt = atomic_read(&prog->tcf_bindcnt) - bind, in tcf_bpf_dump()
148 spin_lock_bh(&prog->tcf_lock); in tcf_bpf_dump()
149 opt.action = prog->tcf_action; in tcf_bpf_dump()
153 if (tcf_bpf_is_ebpf(prog)) in tcf_bpf_dump()
154 ret = tcf_bpf_dump_ebpf_info(prog, skb); in tcf_bpf_dump()
156 ret = tcf_bpf_dump_bpf_info(prog, skb); in tcf_bpf_dump()
160 tcf_tm_dump(&tm, &prog->tcf_tm); in tcf_bpf_dump()
165 spin_unlock_bh(&prog->tcf_lock); in tcf_bpf_dump()
169 spin_unlock_bh(&prog->tcf_lock); in tcf_bpf_dump()
263 static void tcf_bpf_prog_fill_cfg(const struct tcf_bpf *prog, in tcf_bpf_prog_fill_cfg() argument
266 cfg->is_ebpf = tcf_bpf_is_ebpf(prog); in tcf_bpf_prog_fill_cfg()
270 cfg->filter = rcu_dereference_protected(prog->filter, 1); in tcf_bpf_prog_fill_cfg()
272 cfg->bpf_ops = prog->bpf_ops; in tcf_bpf_prog_fill_cfg()
273 cfg->bpf_name = prog->bpf_name; in tcf_bpf_prog_fill_cfg()
287 struct tcf_bpf *prog; in tcf_bpf_init() local
347 prog = to_bpf(*act); in tcf_bpf_init()
349 spin_lock_bh(&prog->tcf_lock); in tcf_bpf_init()
351 tcf_bpf_prog_fill_cfg(prog, &old); in tcf_bpf_init()
353 prog->bpf_ops = cfg.bpf_ops; in tcf_bpf_init()
354 prog->bpf_name = cfg.bpf_name; in tcf_bpf_init()
357 prog->bpf_num_ops = cfg.bpf_num_ops; in tcf_bpf_init()
360 rcu_assign_pointer(prog->filter, cfg.filter); in tcf_bpf_init()
361 spin_unlock_bh(&prog->tcf_lock); in tcf_bpf_init()