On 04/04/2015 12:17 AM, Alexei Starovoitov wrote: ...
1. there shouldn't be a choice at all for bpf. Because not pulling l2 means it's bug.
Yep, correct. You would also loose context for a possible dissection, at best you only have skb->protocol.
2. adding a flag means adding it to iproute2 with default off and making users forgetting it from time to time and have no way of knowing why their programs all of a sudden stopped working. classic falls under the same rules. It doesn't make sense at all to run a program on packet without L2 header. It's very odd both for classic and extended programs.
Yep.
Two 'if' conditions in critical path is bogus argument, since these checks would be there in ingress as well. Same critical path.
Why bogus? There would be no such test on the normal egress path, where this is irrelevant. I wasn't talking about ingress here. I see the point regarding the user option. So, why not adding a flag to tcf_proto_ops a la `.flags = CLS_REQUIRES_L2` that gets propagated to tcf_proto, and only ingress_enqueue() would need to test if the classifier imposes that requirement, so it can push/pull. -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html