Lines Matching refs:prog
39 struct tcf_bpf *prog = act->priv; in tcf_bpf() local
45 spin_lock(&prog->tcf_lock); in tcf_bpf()
47 prog->tcf_tm.lastuse = jiffies; in tcf_bpf()
48 bstats_update(&prog->tcf_bstats, skb); in tcf_bpf()
52 filter_res = BPF_PROG_RUN(prog->filter, skb); in tcf_bpf()
73 prog->tcf_qstats.drops++; in tcf_bpf()
76 action = prog->tcf_action; in tcf_bpf()
83 spin_unlock(&prog->tcf_lock); in tcf_bpf()
87 static bool tcf_bpf_is_ebpf(const struct tcf_bpf *prog) in tcf_bpf_is_ebpf() argument
89 return !prog->bpf_ops; in tcf_bpf_is_ebpf()
92 static int tcf_bpf_dump_bpf_info(const struct tcf_bpf *prog, in tcf_bpf_dump_bpf_info() argument
97 if (nla_put_u16(skb, TCA_ACT_BPF_OPS_LEN, prog->bpf_num_ops)) in tcf_bpf_dump_bpf_info()
100 nla = nla_reserve(skb, TCA_ACT_BPF_OPS, prog->bpf_num_ops * in tcf_bpf_dump_bpf_info()
105 memcpy(nla_data(nla), prog->bpf_ops, nla_len(nla)); in tcf_bpf_dump_bpf_info()
110 static int tcf_bpf_dump_ebpf_info(const struct tcf_bpf *prog, in tcf_bpf_dump_ebpf_info() argument
113 if (nla_put_u32(skb, TCA_ACT_BPF_FD, prog->bpf_fd)) in tcf_bpf_dump_ebpf_info()
116 if (prog->bpf_name && in tcf_bpf_dump_ebpf_info()
117 nla_put_string(skb, TCA_ACT_BPF_NAME, prog->bpf_name)) in tcf_bpf_dump_ebpf_info()
127 struct tcf_bpf *prog = act->priv; in tcf_bpf_dump() local
129 .index = prog->tcf_index, in tcf_bpf_dump()
130 .refcnt = prog->tcf_refcnt - ref, in tcf_bpf_dump()
131 .bindcnt = prog->tcf_bindcnt - bind, in tcf_bpf_dump()
132 .action = prog->tcf_action, in tcf_bpf_dump()
140 if (tcf_bpf_is_ebpf(prog)) in tcf_bpf_dump()
141 ret = tcf_bpf_dump_ebpf_info(prog, skb); in tcf_bpf_dump()
143 ret = tcf_bpf_dump_bpf_info(prog, skb); in tcf_bpf_dump()
147 tm.install = jiffies_to_clock_t(jiffies - prog->tcf_tm.install); in tcf_bpf_dump()
148 tm.lastuse = jiffies_to_clock_t(jiffies - prog->tcf_tm.lastuse); in tcf_bpf_dump()
149 tm.expires = jiffies_to_clock_t(prog->tcf_tm.expires); in tcf_bpf_dump()
255 static void tcf_bpf_prog_fill_cfg(const struct tcf_bpf *prog, in tcf_bpf_prog_fill_cfg() argument
258 cfg->is_ebpf = tcf_bpf_is_ebpf(prog); in tcf_bpf_prog_fill_cfg()
259 cfg->filter = prog->filter; in tcf_bpf_prog_fill_cfg()
261 cfg->bpf_ops = prog->bpf_ops; in tcf_bpf_prog_fill_cfg()
262 cfg->bpf_name = prog->bpf_name; in tcf_bpf_prog_fill_cfg()
272 struct tcf_bpf *prog; in tcf_bpf_init() local
301 sizeof(*prog), bind); in tcf_bpf_init()
318 prog = to_bpf(act); in tcf_bpf_init()
319 spin_lock_bh(&prog->tcf_lock); in tcf_bpf_init()
322 tcf_bpf_prog_fill_cfg(prog, &old); in tcf_bpf_init()
324 prog->bpf_ops = cfg.bpf_ops; in tcf_bpf_init()
325 prog->bpf_name = cfg.bpf_name; in tcf_bpf_init()
328 prog->bpf_num_ops = cfg.bpf_num_ops; in tcf_bpf_init()
330 prog->bpf_fd = cfg.bpf_fd; in tcf_bpf_init()
332 prog->tcf_action = parm->action; in tcf_bpf_init()
333 prog->filter = cfg.filter; in tcf_bpf_init()
335 spin_unlock_bh(&prog->tcf_lock); in tcf_bpf_init()