f37a2e7c74
GCC 8.1 warned: In function 'rte_ipv4_udptcp_cksum': rte_byteorder.h:51:24: warning: conversion from 'long unsigned int' to 'uint32_t' {aka 'unsigned int'} may change value [-Wconversion] #define rte_bswap16(x) ((uint16_t) (__builtin_constant_p(x) ? \ ^ rte_byteorder.h:85:29: note: in expansion of macro 'rte_bswap16' #define rte_be_to_cpu_16(x) rte_bswap16(x) ^~~~~~~~~~~ rte_ip.h:321:11: note: in expansion of macro 'rte_be_to_cpu_16' l4_len = rte_be_to_cpu_16(ipv4_hdr->total_length) - ^~~~~~~~~~~~~~~~ Also with this one, it is a cast that always occurred and is just being done explicitly, with no changes to the generated code. The warning stack is misleading, it points to the last element in the macro that produced the lhs of the subtraction above. But the only "unsigned long int" in the expression is the result of the sizeof() on the rhs, it promotes the subtraction result to unsigned long. So the error actually relates to the result of the outer subtraction. The actual error is "you are trying to put an unsigned long into a uint32_t". We always did so, the fix is just to inform the compiler it is intentional with an explicit cast. Fixes: 6006818cfb ("net: new checksum functions") Cc: stable@dpdk.org Signed-off-by: Andy Green <andy@warmcat.com> Acked-by: Bruce Richardson <bruce.richardson@intel.com>