X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=app%2Ftest-pmd%2Ftestpmd.c;h=c256e719aea28584e9df9c88916cab5e32b6389b;hb=701283309404e394693fba46ed71834593af808e;hp=33a060dffd54b03cdd690e26c064c4746a39cb8d;hpb=08dcd187068666c96e8a16604a1c96160ed310e9;p=dpdk.git diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index 33a060dffd..c256e719ae 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -1410,6 +1410,7 @@ init_config(void) struct rte_gro_param gro_param; uint32_t gso_types; uint16_t data_size; + uint16_t eth_overhead; bool warning = 0; int k; int ret; @@ -1446,6 +1447,23 @@ init_config(void) rte_exit(EXIT_FAILURE, "rte_eth_dev_info_get() failed\n"); + /* Update the max_rx_pkt_len to have MTU as RTE_ETHER_MTU */ + if (port->dev_info.max_mtu != UINT16_MAX && + port->dev_info.max_rx_pktlen > port->dev_info.max_mtu) + eth_overhead = port->dev_info.max_rx_pktlen - + port->dev_info.max_mtu; + else + eth_overhead = + RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN; + + if (port->dev_conf.rxmode.max_rx_pkt_len <= + (uint32_t)(RTE_ETHER_MTU + eth_overhead)) + port->dev_conf.rxmode.max_rx_pkt_len = + RTE_ETHER_MTU + eth_overhead; + else + port->dev_conf.rxmode.offloads |= + DEV_RX_OFFLOAD_JUMBO_FRAME; + if (!(port->dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MBUF_FAST_FREE)) port->dev_conf.txmode.offloads &= @@ -2734,6 +2752,9 @@ stop_port(portid_t pid) } } + if (port->flow_list) + port_flow_flush(pi); + if (rte_eth_dev_stop(pi) != 0) RTE_LOG(ERR, EAL, "rte_eth_dev_stop failed for port %u\n", pi);