From: Cong Wang <xiyou.wangc...@gmail.com> Date: Wed, 30 Aug 2017 14:30:36 -0700
> TC filters when used as classifiers are bound to TC classes. > However, there is a hidden difference when adding them in different > orders: > > 1. If we add tc classes before its filters, everything is fine. > Logically, the classes exist before we specify their ID's in > filters, it is easy to bind them together, just as in the current > code base. > > 2. If we add tc filters before the tc classes they bind, we have to > do dynamic lookup in fast path. What's worse, this happens all > the time not just once, because on fast path tcf_result is passed > on stack, there is no way to propagate back to the one in tc filters. > > This hidden difference hurts performance silently if we have many tc > classes in hierarchy. > > This patch intends to close this gap by doing the reverse binding when > we create a new class, in this case we can actually search all the > filters in its parent, match and fixup by classid. And because > tcf_result is specific to each type of tc filter, we have to introduce > a new ops for each filter to tell how to bind the class. > > Note, we still can NOT totally get rid of those class lookup in > ->enqueue() because cgroup and flow filters have no way to determine > the classid at setup time, they still have to go through dynamic lookup. > > Cc: Jamal Hadi Salim <j...@mojatatu.com> > Signed-off-by: Cong Wang <xiyou.wangc...@gmail.com> Applied, thanks.