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
[email protected]
http://openvswitch.org/mailman/listinfo/dev