On 16 January 2015 at 00:07, Pravin Shelar <pshe...@nicira.com> wrote:
>> @@ -213,13 +223,15 @@ struct flow_stats {
>>
>>  struct sw_flow {
>>         struct rcu_head rcu;
>> -       struct hlist_node hash_node[2];
>> -       u32 hash;
>> +       struct {
>> +               struct hlist_node node[2];
>> +               u32 hash;
>> +       } flow_table, ufid_table;
>>         int stats_last_writer;          /* NUMA-node id of the last writer on
>>                                          * 'stats[0]'.
>>                                          */
>>         struct sw_flow_key key;
>> -       struct sw_flow_key unmasked_key;
>> +       struct sw_flow_id *id;
>>         struct sw_flow_mask *mask;
>>         struct sw_flow_actions __rcu *sf_acts;
>>         struct flow_stats __rcu *stats[]; /* One for each NUMA node.  First 
>> one
>> @@ -243,6 +255,16 @@ struct arp_eth_header {
>>         unsigned char       ar_tip[4];          /* target IP address        
>> */
>>  } __packed;
>>
> In last round we agreed on following struct flow-id which saves around
> four hundred bytes per flow and kmalloc per flow add operation for
> common case. Is there any reason for not doing it?
>
> struct {
>      u32 ufid_len;
>      union {
>          u32 ufid[MAX_UFID_LENGTH / 4];
>          struct sw_flow_key *unmasked_key;
>      }
> } id;

Ah, I thought I had addressed this before the holidays but it's
clearly not we had discussed. Thanks for bringing this up, I'll make
this change and repost.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to