net/enetc: fix big endian build and buffer allocation
authorGagandeep Singh <g.singh@nxp.com>
Fri, 12 Apr 2019 12:28:56 +0000 (12:28 +0000)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 19 Apr 2019 12:51:54 +0000 (14:51 +0200)
There was an error at rte_constant_bswap64 while compiling
with big endian toolchain. so fixing it by adding type cast.

Also, rte_pktmbuf_alloc API should be used to allocate mbuf
instead of rte_pktmbuf_raw_alloc to avoid use of stale mbuf
information.

Fixes: 469c6111a799 ("net/enetc: enable Rx and Tx")
Cc: stable@dpdk.org
Suggested-by: Thomas Monjalon <thomas@monjalon.net>
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
drivers/net/enetc/enetc_rxtx.c

index a31a387..42f16ca 100644 (file)
@@ -88,8 +88,9 @@ enetc_refill_rx_ring(struct enetc_bdr *rx_ring, const int buff_cnt)
        rx_swbd = &rx_ring->q_swbd[i];
        rxbd = ENETC_RXBD(*rx_ring, i);
        for (j = 0; j < buff_cnt; j++) {
-               rx_swbd->buffer_addr =
-                       rte_cpu_to_le_64(rte_mbuf_raw_alloc(rx_ring->mb_pool));
+               rx_swbd->buffer_addr = (void *)(uintptr_t)
+                       rte_cpu_to_le_64((uint64_t)(uintptr_t)
+                                       rte_pktmbuf_alloc(rx_ring->mb_pool));
                rxbd->w.addr = (uint64_t)(uintptr_t)
                               rx_swbd->buffer_addr->buf_iova +
                               rx_swbd->buffer_addr->data_off;