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