[ovs-dev] [PATCH 5/9] Native OpenFlow 1.2 set_field action support.

Jarno Rajahalme jrajahalme at nicira.com
Thu Oct 17 22:32:03 UTC 2013


On Oct 17, 2013, at 12:37 PM, Ben Pfaff <blp at nicira.com> wrote:

> On Wed, Oct 16, 2013 at 04:16:07PM -0700, Jarno Rajahalme wrote:
>> This is a little bit simpler and marginally more efficient, but also makes
>> following changes easier.
>> 
>> Signed-off-by: Jarno Rajahalme <jrajahalme at nicira.com>
> 
> I had to read the patch before I understood what it did.  Could you
> elaborate the change log slightly?
> 
> Any particular reason to inline mf_from_id()?  I don't really object, I
> think, but rationale would be nice.  Also I don't see yet how this is
> related to the rest of the patch.  Could it be separated?

When I decided to use the enum instead of a pointer I decided to inline the mf_from_id to avoid any extra cost in action translation. It seems to me that the compiler should be able to completely optimize mf_from_id away in most cases.

I can easily separate this, no problem.

On the same note, we have a lot of heavily used single line/trivial utility functions that I think would benefit from inlining. Alternatively, LTO might be used for the same effect (?), but I have no experience with that so far. 

> 
> Because ofpacts are padded to a multiple of 8 bytes, and union mf_value
> is 16 bytes long, it looks to me like the trickery around struct
> ofpact_set_field could save at most 8 bytes, so that a struct
> ofpact_set_field is either 16 bytes or 24 bytes long when included in a
> series of struct ofpacts.  I doubt that's worth it.
> 

The next patch makes this a difference between 8 and 24 bytes (vs. 40 bytes (on 64-bit) for a set_field using the ofpact_reg_load).

> I didn't really review the whole patch, that's just from a skim.  I'll
> fully review it on the next go through the series.

OK.




More information about the dev mailing list