[dpdk-dev] [PATCH v4] test: add sample functions for packet forwarding

Burakov, Anatoly anatoly.burakov at intel.com
Tue Jul 17 12:22:23 CEST 2018


On 17-Jul-18 11:00 AM, Jananee Parthasarathy wrote:
> Add sample test functions for packet forwarding.
> These can be used for unit test cases for
> LatencyStats and BitrateStats libraries.
> 
> Signed-off-by: Chaitanya Babu Talluri <tallurix.chaitanya.babu at intel.com>
> Reviewed-by: Reshma Pattan <reshma.pattan at intel.com>
> Acked-by: Reshma Pattan <reshma.pattan at intel.com>
> ---
> v4: Updated return value as TEST_FAILED instead of -1
> v3: Used same port for tx,rx and removed extra line
> v2: SOCKET0 is removed and NUM_QUEUES is used accordingly
> ---
>   test/test/Makefile                |  1 +
>   test/test/sample_packet_forward.c | 71 +++++++++++++++++++++++++++++++++++++++
>   test/test/sample_packet_forward.h | 21 ++++++++++++
>   3 files changed, 93 insertions(+)
>   create mode 100644 test/test/sample_packet_forward.c
>   create mode 100644 test/test/sample_packet_forward.h
> 
> diff --git a/test/test/Makefile b/test/test/Makefile
> index e6967bab6..8032ce53b 100644
> --- a/test/test/Makefile
> +++ b/test/test/Makefile
> @@ -135,6 +135,7 @@ SRCS-y += test_version.c
>   SRCS-y += test_func_reentrancy.c
>   
>   SRCS-y += test_service_cores.c
> +SRCS-y += sample_packet_forward.c
>   
>   SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += test_cmdline.c
>   SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += test_cmdline_num.c
> diff --git a/test/test/sample_packet_forward.c b/test/test/sample_packet_forward.c
> new file mode 100644
> index 000000000..4a13d5001
> --- /dev/null
> +++ b/test/test/sample_packet_forward.c
> @@ -0,0 +1,71 @@
> +/* SPDX-License-Identifier: BSD-3-Clause
> + * Copyright(c) 2018 Intel Corporation
> + */
> +
> +#include <string.h>
> +#include <errno.h>
> +#include <time.h>
> +
> +#include <rte_memcpy.h>
> +#include <rte_common.h>
> +#include <rte_eth_ring.h>
> +#include <rte_ethdev.h>
> +
> +#include "sample_packet_forward.h"
> +#include "test.h"
> +#include <rte_mbuf.h>
> +
> +#define NB_MBUF 512
> +
> +static struct rte_mempool *mp;
> +uint16_t portid;
> +
> +/* Sample test to create virtual rings and tx,rx portid from rings */
> +int
> +test_ring_setup(void)
> +{
> +	uint16_t socket_id = rte_socket_id();
> +	struct rte_ring *rxtx[NUM_RINGS];
> +	rxtx[0] = rte_ring_create("R0", RING_SIZE, socket_id,
> +			RING_F_SP_ENQ|RING_F_SC_DEQ);
> +	if (rxtx[0] == NULL) {
> +		printf("%s() line %u: rte_ring_create R0 failed",
> +				__func__, __LINE__);
> +		return TEST_FAILED;
> +	}
> +	portid = rte_eth_from_rings("net_ringa", rxtx, NUM_QUEUES, rxtx,
> +			NUM_QUEUES, socket_id);
> +
> +	return TEST_SUCCESS;

I am probably missing something, but

1) Why are there 256 rings maximum, but only one is used?
2) You're creating these rings - where are you destroying them?
3) Some more comments on why this would be needed would be great as 
well. Right now, it looks like it's ripped out of the middle of a 
patchset - i don't see it being used anywhere.

> +}
> +
> +/* Sample test to forward packets using virtual portids */
> +int
> +test_packet_forward(void)
> +{
> +	struct rte_mbuf *pbuf[NUM_PACKETS];
> +
> +	mp = rte_pktmbuf_pool_create("mbuf_pool", NB_MBUF, 32, 0,
> +			RTE_MBUF_DEFAULT_BUF_SIZE, rte_socket_id());
> +	if (mp == NULL)
> +		return TEST_FAILED;
> +	if (rte_pktmbuf_alloc_bulk(mp, pbuf, NUM_PACKETS) != 0)
> +		printf("%s() line %u: rte_pktmbuf_alloc_bulk failed"
> +				, __func__, __LINE__);
> +	/* send and receive packet and check for stats update */
> +	if (rte_eth_tx_burst(portid, 0, pbuf, NUM_PACKETS) !=
> +			NUM_PACKETS) {
> +		printf("%s() line %u: Error sending packet to"
> +				" port %d\n", __func__, __LINE__,
> +				portid);
> +		return TEST_FAILED;
> +	}
> +	if (rte_eth_rx_burst(portid, 0, pbuf, NUM_PACKETS) !=
> +			NUM_PACKETS) {
> +		printf("%s() line %u: Error receiving packet from"
> +				" port %d\n", __func__, __LINE__,
> +				portid);
> +		return TEST_FAILED;
> +	}
> +	return TEST_SUCCESS;

Same as above.

> +}
> diff --git a/test/test/sample_packet_forward.h b/test/test/sample_packet_forward.h
> new file mode 100644
> index 000000000..a4880316f
> --- /dev/null
> +++ b/test/test/sample_packet_forward.h
> @@ -0,0 +1,21 @@
> +/* SPDX-License-Identifier: BSD-3-Clause
> + * Copyright(c) 2018 Intel Corporation
> + */
> +
> +#ifndef _SAMPLE_PACKET_FORWARD_H_
> +#define _SAMPLE_PACKET_FORWARD_H_
> +
> +/* MACROS to support virtual ring creation */
> +#define RING_SIZE 256
> +#define NUM_RINGS 1
> +#define NUM_QUEUES 1
> +
> +#define NUM_PACKETS 10
> +
> +/* Sample test to create virtual rings and tx,rx portid from rings */
> +int test_ring_setup(void);
> +
> +/* Sample test to forward packet using virtual port id */
> +int test_packet_forward(void);
> +
> +#endif /* _SAMPLE_PACKET_FORWARD_H_ */
> 


-- 
Thanks,
Anatoly


More information about the dev mailing list