[ovs-dev] [flow_metadata 0/5] improve and use flow_metadata more widely

Rajahalme, Jarno (NSN - FI/Espoo) jarno.rajahalme at nsn.com
Sun May 19 13:45:32 UTC 2013


Ben,

On my reading the first three patches seem fine. I thought that the fact that the semantics of the struct flow_metadata has changed from "exportable metadata" to "all metadata, some of which is exportable to controllers" deserves a note somewhere, but then the original comment on flow_metadata is even more valid after these changes ("Represents the metadata fields of struct flow.").

I don't think there has been a decision to not make the hole in flow_tnl explicit, even though existing code relies on them being cleared (as in commit_odp_tunnel_action()).

This might not be as clean as you'd like, but would it be portable to repeat the definition of flow_metadata as the first fields of the struct flow (maybe via a macro) and then cast a struct flow * to a struct flow_metadata * when needed?

  Jarno

On May 16, 2013, at 23:44 , ext Ben Pfaff wrote:

> I agree about the "md.", but I don't know a better way in portable C.
> There are some ways that I don't think are better (e.g. macros that
> expand to md.in_port etc.) and ways that are not portable (e.g. the
> extension described in "Unnamed struct/union fields within
> structs/unions") in the GCC manual.  I doubt that either choice is
> acceptable, so I think that our options are:
> 
>        1. Don't use flow_metadata in struct flow.
> 
>        2. Accept the "md." option.
> 
> I lean toward #2, but the world won't end if we don't do it.
> 
> How do you feel about the first three patches?  They are independent
> of this bigger decision.
> 
> I need to look at the zeros issue too, I can't quite remember why we
> decided we didn't need them in flow_tnl.
> 
> On Mon, May 13, 2013 at 05:32:15AM +0000, Rajahalme, Jarno (NSN - FI/Espoo) wrote:
>> Getting rid of mostly dummy function parameters and duplication is
>> always nice, but I'd like it better if there was a way not to have
>> to see the "md." everywhere (start to miss C++ here..). Also, since
>> we care about the zeros at the end of struct flow, maybe we should
>> have them in struct flow_tnl and struct flow_metadata as well?
>> 
>>  Jarno
>> 
>> On May 11, 2013, at 2:42 , ext Ben Pfaff wrote:
>> 
>>> The "struct flow_metadata" is only used in a few specific places
>>> currently, but it can be generalized and used more broadly.  This
>>> series does that.
>>> 
>>> The first three patches seem quite reasonable and low-impact to me:
>>> flow: Use struct flow_tnl in struct flow_metadata.
>>> flow: Extend flow_metadata member 'in_port' from 16 to 32 bits.
>>> flow: Add skb_priority and skb_mark to struct flow_metadata.
>>> 
>>> The remaining two patches are more likely to prompt a reaction.  I
>>> am curious to see what that reaction is:
>>> flow: Use struct flow_metadata inside struct flow.
>>> flow: Make flow_extract()'s caller responsible for metadata.
>>> 
>>> lib/cfm.c               |    4 +-
>>> lib/dpif-netdev.c       |   15 +++---
>>> lib/flow.c              |   34 ++-----------
>>> lib/flow.h              |   51 ++++++++-----------
>>> lib/learning-switch.c   |   14 +++---
>>> lib/match.c             |  122 ++++++++++++++++++++++----------------------
>>> lib/meta-flow.c         |   72 +++++++++++++-------------
>>> lib/nx-match.c          |   17 ++++---
>>> lib/odp-util.c          |   44 ++++++++--------
>>> lib/ofp-parse.c         |    6 +--
>>> lib/ofp-print.c         |   17 ++++---
>>> lib/ofp-util.c          |   64 +++++++++++++-----------
>>> ofproto/netflow.c       |    4 +-
>>> ofproto/ofproto-dpif.c  |  128 +++++++++++++++++++++++++----------------------
>>> ofproto/ofproto.c       |    6 ++-
>>> ofproto/tunnel.c        |   32 ++++++------
>>> ofproto/tunnel.h        |    2 +-
>>> tests/test-bundle.c     |    8 +--
>>> tests/test-classifier.c |   58 ++++++++++-----------
>>> tests/test-flows.c      |    5 +-
>>> tests/test-multipath.c  |    6 +--
>>> tests/test-odp.c        |    2 +-
>>> 22 files changed, 350 insertions(+), 361 deletions(-)
>>> 
>>> -- 
>>> 1.7.10.4
>>> 
>>> _______________________________________________
>>> dev mailing list
>>> dev at openvswitch.org
>>> http://openvswitch.org/mailman/listinfo/dev
>> 




More information about the dev mailing list