2014-12-15 16:00, Ananyev, Konstantin: > From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Thomas Monjalon > > 2014-12-15 13:47, Wodkowski, PawelX: > > > From: Thomas Monjalon [mailto:thomas.monjalon at 6wind.com] > > > > 2014-12-15 11:27, Wodkowski, PawelX: > > > > > Thomas, can you check build with EXTRA_CFLAG='-Wunused-value'. > > > > > > > > You mean EXTRA_CFLAGS (with a S). > > > > It fails in many locations. > > > > What's your point? > > > > > > I am just asking if this is an typo, error or intend to do statements > > > with no effects like bellow. > > > > > > ixgbe_common.c:4429:3: error: statement with no effect > > > [-Werror=unused-value] > > > > > > 4426: /* first pull in the header so we know the buffer length */ > > > 4427: for (bi = 0; bi < dword_len; bi++) { > > > 4428: buffer[bi] = IXGBE_READ_REG_ARRAY(hw, IXGBE_FLEX_MNG, > > > bi); > > > 4429: IXGBE_LE32_TO_CPUS(&buffer[bi]); // <------ here > > > 4430 } > > > > It's an intent. On big endian CPU, this has an effect. > > Hmm, I think there is a bug in lib/librte_pmd_ixgbe/ixgbe/ixgbe_osdep.h: > #define IXGBE_LE32_TO_CPUS(_i) rte_le_to_cpu_32(_i) > > It probably should be: > #define IXGBE_LE32_TO_CPUS(_i) rte_le_to_cpu_32(*(_i)) > > Not much point to do byte swapping for the pointer. > And that what ixgbe BSD driver is doing. > > Though I still not sure why it is needed here, as the computed value is not > used anyway. > What the author probably meant to do: > buffer[bi] = rte_le_to_cpu_32 (buffer[bi]); > To achieve that we need: > #define IXGBE_LE32_TO_CPUS(x) (*(x) = rte_le_to_cpu_32(*(x))) > Correct?
Oh yes, you and Pawel are probably right. I was focusing on definition of IXGBE_LE32_TO_CPUS and have not seen the bug. > > > > Do you to support -Wunused-value? > > > > > > No, I just turned this on to check above change and was surprised what > > > happened. > > > > Honestly, I don't know if there is a good fix for this warning. -- Thomas