• Ido Schimmel's avatar
    net: nexthop: Add nexthop group entry stats · f4676ea7
    Ido Schimmel authored
    Add nexthop group entry stats to count the number of packets forwarded
    via each nexthop in the group. The stats will be exposed to user space
    for better data path observability in the next patch.
    
    The per-CPU stats pointer is placed at the beginning of 'struct
    nh_grp_entry', so that all the fields accessed for the data path reside
    on the same cache line:
    
    struct nh_grp_entry {
            struct nexthop *           nh;                   /*     0     8 */
            struct nh_grp_entry_stats * stats;               /*     8     8 */
            u8                         weight;               /*    16     1 */
    
            /* XXX 7 bytes hole, try to pack */
    
            union {
                    struct {
                            atomic_t   upper_bound;          /*    24     4 */
                    } hthr;                                  /*    24     4 */
                    struct {
                            struct list_head uw_nh_entry;    /*    24    16 */
                            u16        count_buckets;        /*    40     2 */
                            u16        wants_buckets;        /*    42     2 */
                    } res;                                   /*    24    24 */
            };                                               /*    24    24 */
            struct list_head           nh_list;              /*    48    16 */
            /* --- cacheline 1 boundary (64 bytes) --- */
            struct nexthop *           nh_parent;            /*    64     8 */
    
            /* size: 72, cachelines: 2, members: 6 */
            /* sum members: 65, holes: 1, sum holes: 7 */
            /* last cacheline: 8 bytes */
    };
    Co-developed-by: default avatarPetr Machata <petrm@nvidia.com>
    Signed-off-by: default avatarPetr Machata <petrm@nvidia.com>
    Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f4676ea7
nexthop.c 92.3 KB