bpf: drop unnecessary test in cls_bpf_classify and tcf_bpf
The skb_mac_header_was_set() test in cls_bpf's and act_bpf's fast-path is actually unnecessary and can be removed altogether. This was added by commita166151cbe
("bpf: fix bpf helpers to use skb->mac_header relative offsets"), which was later on improved by3431205e03
("bpf: make programs see skb->data == L2 for ingress and egress"). We're always guaranteed to have valid mac header at the time we invoke cls_bpf_classify() or tcf_bpf(). Reason is that since6d1ccff627
("net: reset mac header in dev_start_xmit()") we do skb_reset_mac_header() in __dev_queue_xmit() before we could call into sch_handle_egress() or any subsequent enqueue. sch_handle_ingress() always sees a valid mac header as well (things like skb_reset_mac_len() would badly fail otherwise). Thus, drop the unnecessary test in classifier and action case. Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Acked-by: Alexei Starovoitov <ast@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
07c0f09e23
commit
04b3f8de4b
|
@ -44,9 +44,6 @@ static int tcf_bpf(struct sk_buff *skb, const struct tc_action *act,
|
|||
int action, filter_res;
|
||||
bool at_ingress = G_TC_AT(skb->tc_verd) & AT_INGRESS;
|
||||
|
||||
if (unlikely(!skb_mac_header_was_set(skb)))
|
||||
return TC_ACT_UNSPEC;
|
||||
|
||||
tcf_lastuse_update(&prog->tcf_tm);
|
||||
bstats_cpu_update(this_cpu_ptr(prog->common.cpu_bstats), skb);
|
||||
|
||||
|
|
|
@ -83,9 +83,6 @@ static int cls_bpf_classify(struct sk_buff *skb, const struct tcf_proto *tp,
|
|||
struct cls_bpf_prog *prog;
|
||||
int ret = -1;
|
||||
|
||||
if (unlikely(!skb_mac_header_was_set(skb)))
|
||||
return -1;
|
||||
|
||||
/* Needed here for accessing maps. */
|
||||
rcu_read_lock();
|
||||
list_for_each_entry_rcu(prog, &head->plist, link) {
|
||||
|
|
Loading…
Reference in New Issue