On Mon, May 21, 2018 at 10:01:18AM +0800, Andy Green wrote:
> /projects/lagopus/src/dpdk/build/include/rte_mbuf.h:
> In function 'rte_validate_tx_offload':
> /projects/lagopus/src/dpdk/build/include/rte_mbuf.h:
> 2112:19: warning: conversion to 'uint64_t'
> {aka 'long unsigned int'} from 'int' may change the
> sign of the result [-Wsign-conversion]
>   inner_l3_offset += m->outer_l2_len + m->outer_l3_len;
>                    ^~
> 
>   uint64_t inner_l3_offset...
> 
>   /* fields for TX offloading of tunnels */
>   uint64_t outer_l3_len:9; /**< Outer L3 (IP) Hdr Length. */
>   uint64_t outer_l2_len:7; /**< Outer L2 (MAC) Hdr Length. */
> 
> We want to do the arithmetic entirely in uint64_t
> space, but there is an implicit demotion to int created by
> the +=.  Remove the +=.
> 
> Fixes: 4fb7e803eb ("ethdev: add Tx preparation")
> Signed-off-by: Andy Green <a...@warmcat.com>
> ---
>  lib/librte_mbuf/rte_mbuf.h |    3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>

Fix looks ok, but given that it's non-obvious why += doesn't work, I think
it would be good to put a comment in explaining it. Otherwise I could see
someone changing this back in a later patch, because the problem doesn't
arise with regular DPDK compiles 

Acked-by: Bruce Richardson <bruce.richard...@intel.com>

Reply via email to