On Sun, 2017-09-24 at 20:05 -0600, David Ahern wrote: > On 9/24/17 7:57 PM, David Ahern wrote:
> > Hi Eric: > > > > I'm guessing the cost is in the rb_first and rb_next computations. Did > > you consider something like this: > > > > struct rb_root *root > > struct rb_node **p = &root->rb_node; > > > > while (*p != NULL) { > > struct foobar *fb; > > > > fb = container_of(*p, struct foobar, rb_node); > > // fb processing > rb_erase(&nh->rb_node, root); > > > p = &root->rb_node; > > } > > > > Oops, dropped the rb_erase in my consolidating the code to this snippet. Hi David This gives about same numbers than method_1 I tried with 10^7 skbs in the tree : Your suggestion takes 66ns per skb, while the one I chose takes 37ns per skb. Thanks.