10/11/2020 11:05, Morten Brørup:
> > From: Thomas Monjalon [mailto:tho...@monjalon.net]
> > Sent: Monday, November 9, 2020 10:30 PM
> > 
> > According to the Technical Board decision
> > (http://mails.dpdk.org/archives/dev/2020-November/191859.html),
> > the mempool pointer in the mbuf struct is moved
> > from the second to the first half.
> > It may increase performance in some cases
> > on systems having 64-byte cache line, i.e. mbuf split in two cache
> > lines.
> > 
> > Due to this change, tx_offload is moved.
> 
> A minor correction: All fields after m->pool are moved up 8 bytes, not only 
> m->tx_offload.

Yes I will improve the message before merging, thanks.

> 
> > Hopefully no vector data path is impacted.
> > 
> > Moving this field gives more space to dynfield1
> > while dropping the temporary dynfield0.
> > 
> > This is how the mbuf layout looks like (pahole-style):
> > 
> > word  type                              name                byte  size
> >  0    void *                            buf_addr;         /*   0 +  8
> > */
> >  1    rte_iova_t                        buf_iova          /*   8 +  8
> > */
> >       /* --- RTE_MARKER64               rearm_data;
> > */
> >  2    uint16_t                          data_off;         /*  16 +  2
> > */
> >       uint16_t                          refcnt;           /*  18 +  2
> > */
> >       uint16_t                          nb_segs;          /*  20 +  2
> > */
> >       uint16_t                          port;             /*  22 +  2
> > */
> >  3    uint64_t                          ol_flags;         /*  24 +  8
> > */
> >       /* --- RTE_MARKER                 rx_descriptor_fields1;
> > */
> >  4    uint32_t             union        packet_type;      /*  32 +  4
> > */
> >       uint32_t                          pkt_len;          /*  36 +  4
> > */
> >  5    uint16_t                          data_len;         /*  40 +  2
> > */
> >       uint16_t                          vlan_tci;         /*  42 +  2
> > */
> >  5.5  uint64_t             union        hash;             /*  44 +  8
> > */
> >  6.5  uint16_t                          vlan_tci_outer;   /*  52 +  2
> > */
> >       uint16_t                          buf_len;          /*  54 +  2
> > */
> >  7    struct rte_mempool *              pool;             /*  56 +  8
> > */
> >       /* --- RTE_MARKER                 cacheline1;
> > */
> >  8    struct rte_mbuf *                 next;             /*  64 +  8
> > */
> >  9    uint64_t             union        tx_offload;       /*  72 +  8
> > */
> > 10    struct rte_mbuf_ext_shared_info * shinfo;           /*  80 +  8
> > */
> > 11    uint16_t                          priv_size;        /*  88 +  2
> > */
> >       uint16_t                          timesync;         /*  90 +  2
> > */
> > 11.5  uint32_t                          dynfield1[9];     /*  92 + 36
> > */
> > 16    /* --- END                                             128
> > */
> > 
> > Signed-off-by: Thomas Monjalon <tho...@monjalon.net>
> 
> The minor detail doesn’t prevent...
> 
> Acked-by: Morten Brørup <m...@smartsharesystems.com>
> 
> 





Reply via email to