Lines Matching refs:prog
38 struct tcf_bpf *prog = to_bpf(act); in tcf_bpf_act() local
42 tcf_lastuse_update(&prog->tcf_tm); in tcf_bpf_act()
43 bstats_cpu_update(this_cpu_ptr(prog->common.cpu_bstats), skb); in tcf_bpf_act()
46 filter = rcu_dereference(prog->filter); in tcf_bpf_act()
77 qstats_drop_inc(this_cpu_ptr(prog->common.cpu_qstats)); in tcf_bpf_act()
80 action = prog->tcf_action; in tcf_bpf_act()
90 static bool tcf_bpf_is_ebpf(const struct tcf_bpf *prog) in tcf_bpf_is_ebpf() argument
92 return !prog->bpf_ops; in tcf_bpf_is_ebpf()
95 static int tcf_bpf_dump_bpf_info(const struct tcf_bpf *prog, in tcf_bpf_dump_bpf_info() argument
100 if (nla_put_u16(skb, TCA_ACT_BPF_OPS_LEN, prog->bpf_num_ops)) in tcf_bpf_dump_bpf_info()
103 nla = nla_reserve(skb, TCA_ACT_BPF_OPS, prog->bpf_num_ops * in tcf_bpf_dump_bpf_info()
108 memcpy(nla_data(nla), prog->bpf_ops, nla_len(nla)); in tcf_bpf_dump_bpf_info()
113 static int tcf_bpf_dump_ebpf_info(const struct tcf_bpf *prog, in tcf_bpf_dump_ebpf_info() argument
118 if (prog->bpf_name && in tcf_bpf_dump_ebpf_info()
119 nla_put_string(skb, TCA_ACT_BPF_NAME, prog->bpf_name)) in tcf_bpf_dump_ebpf_info()
122 if (nla_put_u32(skb, TCA_ACT_BPF_ID, prog->filter->aux->id)) in tcf_bpf_dump_ebpf_info()
125 nla = nla_reserve(skb, TCA_ACT_BPF_TAG, sizeof(prog->filter->tag)); in tcf_bpf_dump_ebpf_info()
129 memcpy(nla_data(nla), prog->filter->tag, nla_len(nla)); in tcf_bpf_dump_ebpf_info()
138 struct tcf_bpf *prog = to_bpf(act); in tcf_bpf_dump() local
140 .index = prog->tcf_index, in tcf_bpf_dump()
141 .refcnt = refcount_read(&prog->tcf_refcnt) - ref, in tcf_bpf_dump()
142 .bindcnt = atomic_read(&prog->tcf_bindcnt) - bind, in tcf_bpf_dump()
147 spin_lock_bh(&prog->tcf_lock); in tcf_bpf_dump()
148 opt.action = prog->tcf_action; in tcf_bpf_dump()
152 if (tcf_bpf_is_ebpf(prog)) in tcf_bpf_dump()
153 ret = tcf_bpf_dump_ebpf_info(prog, skb); in tcf_bpf_dump()
155 ret = tcf_bpf_dump_bpf_info(prog, skb); in tcf_bpf_dump()
159 tcf_tm_dump(&tm, &prog->tcf_tm); in tcf_bpf_dump()
164 spin_unlock_bh(&prog->tcf_lock); in tcf_bpf_dump()
168 spin_unlock_bh(&prog->tcf_lock); in tcf_bpf_dump()
262 static void tcf_bpf_prog_fill_cfg(const struct tcf_bpf *prog, in tcf_bpf_prog_fill_cfg() argument
265 cfg->is_ebpf = tcf_bpf_is_ebpf(prog); in tcf_bpf_prog_fill_cfg()
269 cfg->filter = rcu_dereference_protected(prog->filter, 1); in tcf_bpf_prog_fill_cfg()
271 cfg->bpf_ops = prog->bpf_ops; in tcf_bpf_prog_fill_cfg()
272 cfg->bpf_name = prog->bpf_name; in tcf_bpf_prog_fill_cfg()
285 struct tcf_bpf *prog; in tcf_bpf_init() local
345 prog = to_bpf(*act); in tcf_bpf_init()
347 spin_lock_bh(&prog->tcf_lock); in tcf_bpf_init()
349 tcf_bpf_prog_fill_cfg(prog, &old); in tcf_bpf_init()
351 prog->bpf_ops = cfg.bpf_ops; in tcf_bpf_init()
352 prog->bpf_name = cfg.bpf_name; in tcf_bpf_init()
355 prog->bpf_num_ops = cfg.bpf_num_ops; in tcf_bpf_init()
358 rcu_assign_pointer(prog->filter, cfg.filter); in tcf_bpf_init()
359 spin_unlock_bh(&prog->tcf_lock); in tcf_bpf_init()