How about making the ‘dp_packet’ member the first member and adding a comment 
that this should be first?

  Jarno

> On Oct 10, 2016, at 8:42 AM, Bodireddy, Bhanuprakash 
> <bhanuprakash.bodire...@intel.com> wrote:
> 
> Hello jarno,
> 
> Thanks for the feedback, while reordering the members of dpif_upcall, I had 
> to deviate from standards due to below reason.
> The dp_packet member has mbuf as first member that starts at new cache line 
> creating hole of size 60 bytes between dpif_upcall_type and dp_packet as 
> pointed below.
> 
> struct dpif_upcall {
>        enum dpif_upcall_type      type;                                       
>           
> 
>       -->  60 bytes hole
> 
>        /* --- cacheline 1 boundary (64 bytes) --- */
>        struct dp_packet {
>                struct rte_mbuf {
>                        /* typedef MARKER */ void *     cacheline0[0];     /*  
>   64     0 */
> 
>       }
>       struct nlattr *            key;                                         
>          
> .
> .
> }
> 
> I tried to pack this hole by moving other members in to this space. 
> 
> Regards,
> Bhanu Prakash. 
> 
>> -----Original Message-----
>> From: Jarno Rajahalme [mailto:ja...@ovn.org]
>> Sent: Friday, October 7, 2016 10:11 PM
>> To: Bodireddy, Bhanuprakash <bhanuprakash.bodire...@intel.com>
>> Cc: dev@openvswitch.org
>> Subject: Re: [ovs-dev] [PATCH 09/12] dpif: Reorder elements in dpif_upcall
>> structure.
>> 
>> CodingStyle.md instructs to group struct members into related groups. Also,
>> changing the relative order of pointers should not make any difference. Could
>> you achieve the same by reordering just the members above the
>> ‘DPIF_UC_ACTION only.’ comment?
>> 
>> Jarno
>> 
>>> On Oct 7, 2016, at 9:17 AM, Bhanuprakash Bodireddy
>> <bhanuprakash.bodire...@intel.com> wrote:
>>> 
>>> By reordering the data elements in dpif_upcall structure, pad bytes
>>> can be reduced and also a cache line.
>>> 
>>> Before: structure size:768, holes:1, sum padbytes:60, cachelines:12
>>> After: structure size:656, holes:1, sum padbytes:4, cachelines:11
>>> 
>>> Signed-off-by: Bhanuprakash Bodireddy
>>> <bhanuprakash.bodire...@intel.com>
>>> Signed-off-by: Antonio Fischetti <antonio.fische...@intel.com>
>>> ---
>>> lib/dpif.h | 17 +++++++++--------
>>> 1 file changed, 9 insertions(+), 8 deletions(-)
>>> 
>>> diff --git a/lib/dpif.h b/lib/dpif.h
>>> index a7c5097..4a4bb3d 100644
>>> --- a/lib/dpif.h
>>> +++ b/lib/dpif.h
>>> @@ -779,17 +779,18 @@ const char *dpif_upcall_type_to_string(enum
>>> dpif_upcall_type); struct dpif_upcall {
>>>    /* All types. */
>>>    enum dpif_upcall_type type;
>>> -    struct dp_packet packet;       /* Packet data. */
>>> -    struct nlattr *key;         /* Flow key. */
>>> -    size_t key_len;             /* Length of 'key' in bytes. */
>>> -    ovs_u128 ufid;              /* Unique flow identifier for 'key'. */
>>> -    struct nlattr *mru;         /* Maximum receive unit. */
>>> -    struct nlattr *cutlen;      /* Number of bytes shrink from the end. */
>>> 
>>>    /* DPIF_UC_ACTION only. */
>>> -    struct nlattr *userdata;    /* Argument to
>> OVS_ACTION_ATTR_USERSPACE. */
>>> -    struct nlattr *out_tun_key;    /* Output tunnel key. */
>>>    struct nlattr *actions;    /* Argument to OVS_ACTION_ATTR_USERSPACE.
>> */
>>> +    struct nlattr *out_tun_key;    /* Output tunnel key. */
>>> +    struct nlattr *userdata;    /* Argument to
>> OVS_ACTION_ATTR_USERSPACE. */
>>> +
>>> +    struct nlattr *cutlen;      /* Number of bytes shrink from the end. */
>>> +    struct nlattr *mru;         /* Maximum receive unit. */
>>> +    ovs_u128 ufid;              /* Unique flow identifier for 'key'. */
>>> +    struct dp_packet packet;       /* Packet data. */
>>> +    struct nlattr *key;         /* Flow key. */
>>> +    size_t key_len;             /* Length of 'key' in bytes. */
>>> };
>>> 
>>> /* A callback to notify higher layer of dpif about to be purged, so
>>> that
>>> --
>>> 2.4.11
>>> 
>>> _______________________________________________
>>> dev mailing list
>>> dev@openvswitch.org
>>> http://openvswitch.org/mailman/listinfo/dev
> 

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to