app/testpmd: create mbuf based on max supported segments
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>
This commit is contained in:
parent
a79e3088ca
commit
33f9630fc2
@ -1101,6 +1101,8 @@ init_config(void)
|
||||
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);
|
||||
@ -1168,8 +1170,27 @@ init_config(void)
|
||||
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
|
||||
|
Loading…
x
Reference in New Issue
Block a user