#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 */
uint8_t latencystats_enabled;
/*
- * Lcore ID to serive latency statistics.
+ * Lcore ID to service latency statistics.
*/
lcoreid_t latencystats_lcore_id = -1;
}
}
-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)
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
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;