[2/2] app/testpmd: creating mbuf pool based on maximum supported segments
Checks
Commit Message
Configuring buffer size based following parameters:
- max-pkt-len
- max supported segments per MTU
Buffer size are configured as given below:
- If platform supports infinite segments per packet then default
buffer size is used.
- If platform supports nb_mtu_seg_max segments then buffer size
is configured as (max-pkt-len / nb_mtu_seg_max) + headroom
Signed-off-by: Sunil Kumar Kori <skori@marvell.com>
---
app/test-pmd/testpmd.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
Comments
On 5/27/2019 9:35 AM, Sunil Kumar Kori wrote:
> Configuring buffer size based following parameters:
> - max-pkt-len
> - max supported segments per MTU
>
> Buffer size are configured as given below:
> - If platform supports infinite segments per packet then default
> buffer size is used.
> - If platform supports nb_mtu_seg_max segments then buffer size
> is configured as (max-pkt-len / nb_mtu_seg_max) + headroom
>
> Signed-off-by: Sunil Kumar Kori <skori@marvell.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Applied to dpdk-next-net/master, thanks.
@@ -1100,6 +1100,8 @@ struct extmem_param {
uint8_t port_per_socket[RTE_MAX_NUMA_NODES];
struct rte_gro_param gro_param;
uint32_t gso_types;
+ uint16_t data_size;
+ bool warning = 0;
int k;
memset(port_per_socket,0,RTE_MAX_NUMA_NODES);
@@ -1167,8 +1169,27 @@ struct extmem_param {
port->need_reconfig = 1;
port->need_reconfig_queues = 1;
port->tx_metadata = 0;
+
+ /* Check for maximum number of segments per MTU. Accordingly
+ * update the mbuf data size.
+ */
+ if (port->dev_info.rx_desc_lim.nb_mtu_seg_max != UINT16_MAX) {
+ data_size = rx_mode.max_rx_pkt_len /
+ port->dev_info.rx_desc_lim.nb_mtu_seg_max;
+
+ if ((data_size + RTE_PKTMBUF_HEADROOM) >
+ mbuf_data_size) {
+ mbuf_data_size = data_size +
+ RTE_PKTMBUF_HEADROOM;
+ warning = 1;
+ }
+ }
}
+ if (warning)
+ TESTPMD_LOG(WARNING, "Configured mbuf size %hu\n",
+ mbuf_data_size);
+
/*
* Create pools of mbuf.
* If NUMA support is disabled, create a single pool of mbuf in