Hi Simon,
Looks good to me, just one nit, see below.
Konstantin 

>  /**
> + * Chain an mbuf to another, thereby creating a segmented packet.
> + *
> + * @param head the head of the mbuf chain (the first packet)
> + * @param tail the mbuf to put last in the chain
> + *
> + * @return 0 on success, -EOVERFLOW if the chain is full (256 entries)
> + */
> +static inline int rte_pktmbuf_chain(struct rte_mbuf *head, struct rte_mbuf 
> *tail)
> +{
> +     struct rte_mbuf *cur_tail;
> +
> +     /* Check for number-of-segments-overflow */
> +     if (head->nb_segs + tail->nb_segs >= sizeof(head->nb_segs) << 8)
> +             return -EOVERFLOW;

Would probably be better 'sizeof(head->nb_segs) << CHAR_BIT', or even just: '  
> UINT8_MAX'.
Konstantin

> +
> +     /* Chain 'tail' onto the old tail */
> +     cur_tail = rte_pktmbuf_lastseg(head);
> +     cur_tail->next = tail;
> +
> +     /* accumulate number of segments and total length. */
> +     head->nb_segs = (uint8_t)(head->nb_segs + tail->nb_segs);
> +     head->pkt_len += tail->pkt_len;
> +
> +     /* pkt_len is only set in the head */
> +     tail->pkt_len = tail->data_len;
> +
> +     return 0;
> +}
> +
> +/**
>   * Dump an mbuf structure to the console.
>   *
>   * Dump all fields for the given packet mbuf and all its associated
> --
> 1.9.1

Reply via email to