Skip to content
  • Paolo Abeni's avatar
    net: reorder flowi_common fields to avoid holes · bf1c3ab8
    Paolo Abeni authored
    
    
    the flowi* structures are used and memsetted by server functions
    in critical path. Currently flowi_common has a couple of holes that
    we can eliminate reordering the struct fields. As a side effect,
    both flowi4 and flowi6 shrink by 8 bytes.
    
    Before:
    pahole -EC flowi_common
    struct flowi_common {
    // ...
    	/* size: 40, cachelines: 1, members: 10 */
    	/* sum members: 32, holes: 1, sum holes: 4 */
    	/* padding: 4 */
    	/* last cacheline: 40 bytes */
    };
    pahole -EC flowi6
    struct flowi6 {
    // ...
            /* size: 88, cachelines: 2, members: 6 */
            /* padding: 4 */
            /* last cacheline: 24 bytes */
    };
    pahole -EC flowi4
    struct flowi4 {
    // ...
            /* size: 56, cachelines: 1, members: 4 */
            /* padding: 4 */
            /* last cacheline: 56 bytes */
    };
    
    After:
    struct flowi_common {
    // ...
    	/* size: 32, cachelines: 1, members: 10 */
    	/* last cacheline: 32 bytes */
    };
    struct flowi6 {
    // ...
            /* size: 80, cachelines: 2, members: 6 */
            /* padding: 4 */
            /* last cacheline: 16 bytes */
    };
    struct flowi4 {
    // ...
            /* size: 48, cachelines: 1, members: 4 */
            /* padding: 4 */
            /* last cacheline: 48 bytes */
    };
    
    Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    bf1c3ab8