+ int i, ret;
+
+ if (!opt->mbuf_sz)
+ opt->mbuf_sz = RTE_MBUF_DEFAULT_BUF_SIZE;
+
+ 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;
+ }
+ }