+ if (!opt->max_pkt_sz)
+ opt->max_pkt_sz = RTE_ETHER_MAX_LEN;
+
+ RTE_ETH_FOREACH_DEV(i) {
+ struct rte_eth_dev_info dev_info;
+ uint16_t data_size = 0;
+
+ memset(&dev_info, 0, sizeof(dev_info));
+ ret = rte_eth_dev_info_get(i, &dev_info);
+ if (ret != 0) {
+ evt_err("Error during getting device (port %u) info: %s\n",
+ i, strerror(-ret));
+ return ret;
+ }
+
+ if (dev_info.rx_desc_lim.nb_mtu_seg_max != UINT16_MAX &&
+ dev_info.rx_desc_lim.nb_mtu_seg_max != 0) {
+ data_size = opt->max_pkt_sz /
+ dev_info.rx_desc_lim.nb_mtu_seg_max;
+ data_size += RTE_PKTMBUF_HEADROOM;
+
+ if (data_size > opt->mbuf_sz)
+ opt->mbuf_sz = data_size;
+ }
+ if (opt->per_port_pool) {
+ char name[RTE_MEMPOOL_NAMESIZE];
+
+ snprintf(name, RTE_MEMPOOL_NAMESIZE, "%s-%d",
+ test->name, i);
+ t->pool[i] = rte_pktmbuf_pool_create(
+ name, /* mempool name */
+ opt->pool_sz, /* number of elements*/
+ 0, /* cache size*/
+ 0, opt->mbuf_sz, opt->socket_id); /* flags */
+
+ if (t->pool[i] == NULL) {
+ evt_err("failed to create mempool %s", name);
+ return -ENOMEM;
+ }
+ }
+ }
+
+ if (!opt->per_port_pool) {
+ t->pool[0] = rte_pktmbuf_pool_create(
+ test->name, /* mempool name */