On Thu, Nov 24, 2011 at 11:05:40AM -0800, Justin Pettit wrote: > On Nov 22, 2011, at 3:27 PM, Ben Pfaff wrote: > > > +/* Performs periodic activity required by 'ofproto' that needs to be done > > + * with the least possible latency. > > + * > > + * It makes sense to call this function a couple of times per poll loop, to > > + * provide a significant performance boost on some benchmarks with the > > + * ofproto-dpif implementation. */ > > +void > > +ofproto_run_fast(struct ofproto *p) > > +{ > > + if (p->ofproto_class->run_fast) { > > + p->ofproto_class->run_fast(p); > > + } > > +} > > I think the only interesting return value from ofproto_run() was > ENODEV. I believe that's now detected in handle_upcalls(), which is > now called through the run_fast() "method". So, I think the ENODEV > handling in ofproto_run() belongs in ofproto_run_fast(), and the > run_fast() "method" should have a return value. Then, I think > bridge_run() and bridge_run_fast() need to be updated.
The ENODEV special case was introduced a long time ago when the kernel module design forced it to be handled specially (otherwise ovs-vswitchd would go to 100% CPU if "ovs-dpctl del-dp" got run). The kernel module design doesn't have that problem, so I decided to just delete the special case. I did add a return value to ofproto_run_fast() and adjust ofproto_run() and ofproto_run_fast() to log errors returned by the implementations. I'll push this soon. Thanks, Ben. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev