This patch fixes compiling problems on IBM Power architecture and turn
on the test-pmd compiling option in configuration file. Actually, this
is an big endian compiling fix.

Signed-off-by: Chao Zhu <chaozhu at linux.vnet.ibm.com>
---
 app/test-pmd/config.c |   39 +++++++++++++++++++++++++--------------
 1 files changed, 25 insertions(+), 14 deletions(-)

diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index 9bc08f4..4fee6c0 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -612,8 +612,13 @@ ring_dma_zone_lookup(const char *ring_name, uint8_t 
port_id, uint16_t q_id)
 union igb_ring_dword {
        uint64_t dword;
        struct {
+#ifdef RTE_ARCH_BIG_ENDIAN
+               uint32_t lo;
+               uint32_t hi;
+#else
                uint32_t hi;
                uint32_t lo;
+#endif
        } words;
 };

@@ -656,23 +661,29 @@ ring_rx_descriptor_display(const struct rte_memzone 
*ring_mz,
                /* 32 bytes RX descriptor, i40e only */
                struct igb_ring_desc_32_bytes *ring =
                        (struct igb_ring_desc_32_bytes *)ring_mz->addr;
+               ring[desc_id].lo_dword.dword =
+                       rte_le_to_cpu_64(ring[desc_id].lo_dword.dword);
+               ring_rxd_display_dword(ring[desc_id].lo_dword);
+               ring[desc_id].hi_dword.dword =
+                       rte_le_to_cpu_64(ring[desc_id].hi_dword.dword);
+               ring_rxd_display_dword(ring[desc_id].hi_dword);
+               ring[desc_id].resv1.dword =
+                       rte_le_to_cpu_64(ring[desc_id].resv1.dword);
+               ring_rxd_display_dword(ring[desc_id].resv1);
+               ring[desc_id].resv2.dword =
+                       rte_le_to_cpu_64(ring[desc_id].resv2.dword);
+               ring_rxd_display_dword(ring[desc_id].resv2);

-               ring_rxd_display_dword(rte_le_to_cpu_64(
-                               ring[desc_id].lo_dword));
-               ring_rxd_display_dword(rte_le_to_cpu_64(
-                               ring[desc_id].hi_dword));
-               ring_rxd_display_dword(rte_le_to_cpu_64(
-                               ring[desc_id].resv1));
-               ring_rxd_display_dword(rte_le_to_cpu_64(
-                               ring[desc_id].resv2));
                return;
        }
 #endif
        /* 16 bytes RX descriptor */
-       ring_rxd_display_dword(rte_le_to_cpu_64(
-                       ring[desc_id].lo_dword));
-       ring_rxd_display_dword(rte_le_to_cpu_64(
-                       ring[desc_id].hi_dword));
+       ring[desc_id].lo_dword.dword =
+               rte_le_to_cpu_64(ring[desc_id].lo_dword.dword);
+       ring_rxd_display_dword(ring[desc_id].lo_dword);
+       ring[desc_id].hi_dword.dword =
+               rte_le_to_cpu_64(ring[desc_id].hi_dword.dword);
+       ring_rxd_display_dword(ring[desc_id].hi_dword);
 }

 static void
@@ -682,8 +693,8 @@ ring_tx_descriptor_display(const struct rte_memzone 
*ring_mz, uint16_t desc_id)
        struct igb_ring_desc_16_bytes txd;

        ring = (struct igb_ring_desc_16_bytes *)ring_mz->addr;
-       txd.lo_dword = rte_le_to_cpu_64(ring[desc_id].lo_dword);
-       txd.hi_dword = rte_le_to_cpu_64(ring[desc_id].hi_dword);
+       txd.lo_dword.dword = rte_le_to_cpu_64(ring[desc_id].lo_dword.dword);
+       txd.hi_dword.dword = rte_le_to_cpu_64(ring[desc_id].hi_dword.dword);
        printf("    0x%08X - 0x%08X / 0x%08X - 0x%08X\n",
                        (unsigned)txd.lo_dword.words.lo,
                        (unsigned)txd.lo_dword.words.hi,
-- 
1.7.1

Reply via email to