app/testpmd: fix stack overflow for EEPROM display
[dpdk.git] / app / test-pmd / testpmd.c
index ba65342..e1da961 100644 (file)
 #endif
 
 #define EXTMEM_HEAP_NAME "extmem"
-#define EXTBUF_ZONE_SIZE RTE_PGSIZE_2M
+/*
+ * Zone size with the malloc overhead (max of debug and release variants)
+ * must fit into the smallest supported hugepage size (2M),
+ * so that an IOVA-contiguous zone of this size can always be allocated
+ * if there are free 2M hugepages.
+ */
+#define EXTBUF_ZONE_SIZE (RTE_PGSIZE_2M - 4 * RTE_CACHE_LINE_SIZE)
 
 uint16_t verbose_level = 0; /**< Silent by default. */
 int testpmd_logtype; /**< Log type for testpmd logs */
@@ -449,7 +455,7 @@ uint32_t bypass_timeout = RTE_PMD_IXGBE_BYPASS_TMT_OFF;
 uint8_t latencystats_enabled;
 
 /*
- * Lcore ID to serive latency statistics.
+ * Lcore ID to service latency statistics.
  */
 lcoreid_t latencystats_lcore_id = -1;
 
@@ -581,25 +587,6 @@ eth_rx_metadata_negotiate_mp(uint16_t port_id)
        }
 }
 
-static void
-flow_pick_transfer_proxy_mp(uint16_t port_id)
-{
-       struct rte_port *port = &ports[port_id];
-       int ret;
-
-       port->flow_transfer_proxy = port_id;
-
-       if (!is_proc_primary())
-               return;
-
-       ret = rte_flow_pick_transfer_proxy(port_id, &port->flow_transfer_proxy,
-                                          NULL);
-       if (ret != 0) {
-               fprintf(stderr, "Error picking flow transfer proxy for port %u: %s - ignore\n",
-                       port_id, rte_strerror(-ret));
-       }
-}
-
 static int
 eth_dev_configure_mp(uint16_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
                      const struct rte_eth_conf *dev_conf)
@@ -1080,12 +1067,11 @@ setup_extbuf(uint32_t nb_mbufs, uint16_t mbuf_sz, unsigned int socket_id,
                        ext_num = 0;
                        break;
                }
-               mz = rte_memzone_reserve_aligned(mz_name, EXTBUF_ZONE_SIZE,
-                                                socket_id,
-                                                RTE_MEMZONE_IOVA_CONTIG |
-                                                RTE_MEMZONE_1GB |
-                                                RTE_MEMZONE_SIZE_HINT_ONLY,
-                                                EXTBUF_ZONE_SIZE);
+               mz = rte_memzone_reserve(mz_name, EXTBUF_ZONE_SIZE,
+                                        socket_id,
+                                        RTE_MEMZONE_IOVA_CONTIG |
+                                        RTE_MEMZONE_1GB |
+                                        RTE_MEMZONE_SIZE_HINT_ONLY);
                if (mz == NULL) {
                        /*
                         * The caller exits on external buffer creation
@@ -1574,7 +1560,6 @@ init_config_port_offloads(portid_t pid, uint32_t socket_id)
        int i;
 
        eth_rx_metadata_negotiate_mp(pid);
-       flow_pick_transfer_proxy_mp(pid);
 
        port->dev_conf.txmode = tx_mode;
        port->dev_conf.rxmode = rx_mode;