[v4] test: add sample functions for packet forwarding

Message ID 1531821650-5506-1-git-send-email-jananeex.m.parthasarathy@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers
Series [v4] test: add sample functions for packet forwarding |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Jananee Parthasarathy July 17, 2018, 10 a.m. UTC
  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@intel.com>
Reviewed-by: Reshma Pattan <reshma.pattan@intel.com>
Acked-by: Reshma Pattan <reshma.pattan@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
  

Comments

Burakov, Anatoly July 17, 2018, 10:22 a.m. UTC | #1
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@intel.com>
> Reviewed-by: Reshma Pattan <reshma.pattan@intel.com>
> Acked-by: Reshma Pattan <reshma.pattan@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_ */
>
  

Patch

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;
+}
+
+/* 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;
+}
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_ */