On 9/5/14, 1:11 AM, "[email protected]" <[email protected]> wrote:
>From: Sreeju Selvaraj <[email protected]> > >Added support for DPDK v1.7.0 > >Building of example apps dpdk_qat and vhost failed due to dependancy on >qat source and fuse libraries, so created patch to exclude the >compilation of these examples. Hi Sreeju, Why not add dependency recipes to get it fully functional? Nitin > >Resolved the installation failure found in example app ip_pipeline >by cherry picking the patch from dpdk.org > >Resolved the test failure found with example app ring_pmd_autotest >by cherry picking the patches from dpdk.org > >Signed-off-by: Sreeju Selvaraj <[email protected]> >--- > ...exclude-compilation-of-dpdk_qat-and-vhost.patch | 40 +++ > ...examples-pipeline-build-with-all-examples.patch | 33 ++ > ...e-extra-devices-creation-with-vdev-option.patch | 43 +++ > .../dpdk/dpdk-1.7.0-ring-simplify-unit-tests.patch | 379 >+++++++++++++++++++++ > common/recipes-extended/dpdk/dpdk_1.7.0.bb | 27 ++ > 5 files changed, 522 insertions(+) > create mode 100644 >common/recipes-extended/dpdk/dpdk/dpdk-1.7.0-examples-exclude-compilation- >of-dpdk_qat-and-vhost.patch > create mode 100644 >common/recipes-extended/dpdk/dpdk/dpdk-1.7.0-examples-pipeline-build-with- >all-examples.patch > create mode 100644 >common/recipes-extended/dpdk/dpdk/dpdk-1.7.0-ring-remove-extra-devices-cre >ation-with-vdev-option.patch > create mode 100644 >common/recipes-extended/dpdk/dpdk/dpdk-1.7.0-ring-simplify-unit-tests.patc >h > create mode 100644 common/recipes-extended/dpdk/dpdk_1.7.0.bb > >diff --git >a/common/recipes-extended/dpdk/dpdk/dpdk-1.7.0-examples-exclude-compilatio >n-of-dpdk_qat-and-vhost.patch >b/common/recipes-extended/dpdk/dpdk/dpdk-1.7.0-examples-exclude-compilatio >n-of-dpdk_qat-and-vhost.patch >new file mode 100644 >index 0000000..9a9f0c0 >--- /dev/null >+++ >b/common/recipes-extended/dpdk/dpdk/dpdk-1.7.0-examples-exclude-compilatio >n-of-dpdk_qat-and-vhost.patch >@@ -0,0 +1,40 @@ >+From f43e001c7b47226f443abaf5e7690971fbf27d10 Mon Sep 17 00:00:00 2001 >+From: Sreeju Selvaraj <[email protected]> >+Date: Fri, 5 Sep 2014 10:04:34 +0800 >+Subject: [PATCH] examples: exclude compilation of dpdk_qat and vhost >+ >+example apps dpdk_qat and vhost have dependency on qat source >+and fuse libraries which causes compilation error. >+There is a new global Makefile for examples added in dpdk v1.7.0 >+So mute the compilation of these apps there. >+ >+Signed-off-by: Sreeju Selvaraj <[email protected]> >+--- >+ examples/Makefile | 4 ---- >+ 1 file changed, 4 deletions(-) >+ >+diff --git a/examples/Makefile b/examples/Makefile >+index dc85cf3..2127458 100644 >+--- a/examples/Makefile >++++ b/examples/Makefile >+@@ -38,9 +38,6 @@ RTE_TARGET ?= x86_64-native-linuxapp-gcc >+ include $(RTE_SDK)/mk/rte.vars.mk >+ >+ DIRS-y += cmdline >+-ifneq ($(ICP_ROOT),) >+-DIRS-y += dpdk_qat >+-endif >+ DIRS-y += exception_path >+ DIRS-y += helloworld >+ DIRS-y += ip_pipeline >+@@ -62,7 +59,6 @@ DIRS-$(CONFIG_RTE_LIBRTE_METER) += qos_meter >+ DIRS-$(CONFIG_RTE_LIBRTE_SCHED) += qos_sched >+ DIRS-y += quota_watermark >+ DIRS-y += timer >+-DIRS-y += vhost >+ DIRS-$(CONFIG_RTE_LIBRTE_XEN_DOM0) += vhost_xen >+ DIRS-y += vmdq >+ DIRS-y += vmdq_dcb >+-- >+1.9.1 >+ >diff --git >a/common/recipes-extended/dpdk/dpdk/dpdk-1.7.0-examples-pipeline-build-wit >h-all-examples.patch >b/common/recipes-extended/dpdk/dpdk/dpdk-1.7.0-examples-pipeline-build-wit >h-all-examples.patch >new file mode 100644 >index 0000000..234260b >--- /dev/null >+++ >b/common/recipes-extended/dpdk/dpdk/dpdk-1.7.0-examples-pipeline-build-wit >h-all-examples.patch >@@ -0,0 +1,33 @@ >+From 835b75b7b22d8373f6ee17cb9ff456518ea7c208 Mon Sep 17 00:00:00 2001 >+From: Thomas Monjalon <[email protected]> >+Date: Thu, 17 Jul 2014 10:30:52 +0200 >+Subject: [PATCH] examples/pipeline: build with all examples >+ >+Imported patch from: http://dpdk.org/browse/dpdk/log/ >+ >+When adding this packet framework sample (commit 77a3346), >+it has been forgotten to add it into the global makefile for >+"make examples". >+ >+Signed-off-by: Thomas Monjalon <[email protected]> >+(cherry picked from commit a6664a09a7caa5e63f9ae625cf1946b0eef7794e) >+Signed-off-by: Sreeju Selvaraj <[email protected]> >+--- >+ examples/Makefile | 1 + >+ 1 file changed, 1 insertion(+) >+ >+diff --git a/examples/Makefile b/examples/Makefile >+index d0624f6..dc85cf3 100644 >+--- a/examples/Makefile >++++ b/examples/Makefile >+@@ -43,6 +43,7 @@ DIRS-y += dpdk_qat >+ endif >+ DIRS-y += exception_path >+ DIRS-y += helloworld >++DIRS-y += ip_pipeline >+ DIRS-y += ip_reassembly >+ DIRS-$(CONFIG_RTE_MBUF_SCATTER_GATHER) += ip_fragmentation >+ DIRS-$(CONFIG_RTE_MBUF_SCATTER_GATHER) += ipv4_multicast >+-- >+1.9.1 >+ >diff --git >a/common/recipes-extended/dpdk/dpdk/dpdk-1.7.0-ring-remove-extra-devices-c >reation-with-vdev-option.patch >b/common/recipes-extended/dpdk/dpdk/dpdk-1.7.0-ring-remove-extra-devices-c >reation-with-vdev-option.patch >new file mode 100644 >index 0000000..02322b3 >--- /dev/null >+++ >b/common/recipes-extended/dpdk/dpdk/dpdk-1.7.0-ring-remove-extra-devices-c >reation-with-vdev-option.patch >@@ -0,0 +1,43 @@ >+From 0ffb8ec6af479f98daf1bf27e4a6648f41410e90 Mon Sep 17 00:00:00 2001 >+From: Pablo de Lara <[email protected]> >+Date: Wed, 9 Jul 2014 15:35:35 +0100 >+Subject: [PATCH] ring: remove extra devices creation with --vdev option >+ >+Imported patch from: http://dpdk.org/browse/dpdk/log/ >+ >+When passing extra arguments in EAL option --vdev, to create >+ring ethdevs, API was creating three ethdevs, even if there >+was just one argument, such as CREATE. >+ >+Signed-off-by: Pablo de Lara <[email protected]> >+Acked-by: Neil Horman <[email protected]> >+(cherry picked from commit 546afbc6827f9f0f7ed501d2af1fc51755e40224) >+Signed-off-by: Sreeju Selvaraj <[email protected]> >+--- >+ lib/librte_pmd_ring/rte_eth_ring.c | 3 +-- >+ 1 file changed, 1 insertion(+), 2 deletions(-) >+ >+diff --git a/lib/librte_pmd_ring/rte_eth_ring.c >b/lib/librte_pmd_ring/rte_eth_ring.c >+index 73c649e..4f1b6ed 100644 >+--- a/lib/librte_pmd_ring/rte_eth_ring.c >++++ b/lib/librte_pmd_ring/rte_eth_ring.c >+@@ -493,7 +493,6 @@ rte_pmd_ring_devinit(const char *name, const char >*params) >+ eth_dev_ring_create(name, rte_socket_id(), DEV_CREATE); >+ return 0; >+ } else { >+- eth_dev_ring_create(name, rte_socket_id(), DEV_CREATE); >+ ret = rte_kvargs_count(kvlist, >ETH_RING_NUMA_NODE_ACTION_ARG); >+ info = rte_zmalloc("struct node_action_list", >sizeof(struct >node_action_list) + >+ (sizeof(struct node_action_pair) * >ret), 0); >+@@ -510,7 +509,7 @@ rte_pmd_ring_devinit(const char *name, const char >*params) >+ goto out_free; >+ >+ for (info->count = 0; info->count < info->total; >info->count++) { >+- eth_dev_ring_pair_create(name, >info->list[info->count].node, >++ eth_dev_ring_create(name, >info->list[info->count].node, >+ >info->list[info->count].action); >+ } >+ } >+-- >+1.9.1 >+ >diff --git >a/common/recipes-extended/dpdk/dpdk/dpdk-1.7.0-ring-simplify-unit-tests.pa >tch >b/common/recipes-extended/dpdk/dpdk/dpdk-1.7.0-ring-simplify-unit-tests.pa >tch >new file mode 100644 >index 0000000..78b74e6 >--- /dev/null >+++ >b/common/recipes-extended/dpdk/dpdk/dpdk-1.7.0-ring-simplify-unit-tests.pa >tch >@@ -0,0 +1,379 @@ >+From 8a75ca59eb4a52fae85428f0d19355acc903682e Mon Sep 17 00:00:00 2001 >+From: Pablo de Lara <[email protected]> >+Date: Wed, 9 Jul 2014 15:35:36 +0100 >+Subject: [PATCH] ring: simplify unit tests >+ >+Imported patch from: http://dpdk.org/browse/dpdk/log/ >+ >+As this unit test does not create devices anymore, >+and uses devices created by EAL option --vdev, >+there were unnecesary tests that were repeated, >+so they have been removed. >+ >+So now there are three tests: >+ >+1 - Test two devices that share a ring, one device >+ with just one RX queue and the other with one >+ TX queue. >+ >+2 - Test a device connected to itself (loopback) by >+ a ring, with both RX and TX queue. >+ >+3 - Test two devices that share a ring, but both devices >+ with RX and TX queue, so they can send packets to themselves >+ and to the other device. >+ >+Signed-off-by: Pablo de Lara <[email protected]> >+Acked-by: Neil Horman <[email protected]> >+(cherry picked from commit 572eb3cd834c5e21d7fa946432b89c1c9d63fe61) >+Signed-off-by: Sreeju Selvaraj <[email protected]> >+--- >+ app/test/test_pmd_ring.c | 202 >+++++++++++++++++------------------------------ >+ 1 file changed, 72 insertions(+), 130 deletions(-) >+ >+diff --git a/app/test/test_pmd_ring.c b/app/test/test_pmd_ring.c >+index 0d3d95c..19ad0e9 100644 >+--- a/app/test/test_pmd_ring.c >++++ b/app/test/test_pmd_ring.c >+@@ -39,18 +39,13 @@ >+ #include <rte_eth_ring.h> >+ #include <rte_ethdev.h> >+ >+-/* two test rings, r1 is used by two ports, r2 just by one */ >+-static struct rte_ring *r1[2], *r2; >+- >+ static struct rte_mempool *mp; >+-static uint8_t start_idx; /* will store the port id of the first of our >new ports */ >+- >+-#define TX_PORT (uint8_t)(start_idx + 1) >+-#define RX_PORT (uint8_t)(start_idx + 2) >+-#define RXTX_PORT (uint8_t)(start_idx + 3) >+-#define RXTX_PORT2 (uint8_t)(start_idx + 4) >+-#define RXTX_PORT4 (uint8_t)(start_idx + 6) >+-#define RXTX_PORT5 (uint8_t)(start_idx + 7) >++ >++#define TX_PORT 0 >++#define RX_PORT 1 >++#define RXTX_PORT 2 >++#define RXTX_PORT2 3 >++#define RXTX_PORT3 4 >+ #define SOCKET0 0 >+ >+ #define RING_SIZE 256 >+@@ -86,7 +81,7 @@ test_ethdev_configure(void) >+ return -1; >+ } >+ if (rte_eth_dev_configure(RXTX_PORT, 1, 1, &null_conf) < 0) { >+- printf("Configure failed for RX port\n"); >++ printf("Configure failed for RXTX port\n"); >+ return -1; >+ } >+ >+@@ -250,197 +245,162 @@ test_stats_reset(void) >+ } >+ >+ static int >+-test_pmd_ring_init(void) >++test_pmd_ring_pair_create_attach(void) >+ { >+- struct rte_eth_stats stats; >++ struct rte_eth_stats stats, stats2; >+ struct rte_mbuf buf, *pbuf = &buf; >+ struct rte_eth_conf null_conf; >+ >+- printf("Testing ring pmd init\n"); >+- >+- if (RXTX_PORT2 >= RTE_MAX_ETHPORTS) { >++ if ((RXTX_PORT2 >= RTE_MAX_ETHPORTS) || (RXTX_PORT3 >= >RTE_MAX_ETHPORTS)) { >+ printf(" TX/RX port exceed max eth ports\n"); >+ return -1; >+ } >+- if (rte_eth_dev_configure(RXTX_PORT2, 1, 1, &null_conf) < 0) { >++ if ((rte_eth_dev_configure(RXTX_PORT2, 1, 1, &null_conf) < 0) >++ || (rte_eth_dev_configure(RXTX_PORT3, 1, 1, &null_conf) < 0)) { >+ printf("Configure failed for RXTX port\n"); >+ return -1; >+ } >+ >+- if (rte_eth_tx_queue_setup(RXTX_PORT2, 0, RING_SIZE, SOCKET0, NULL) < >0) { >++ if ((rte_eth_tx_queue_setup(RXTX_PORT2, 0, RING_SIZE, SOCKET0, NULL) < >0) >++ || (rte_eth_tx_queue_setup(RXTX_PORT3, 0, RING_SIZE, SOCKET0, >NULL) < >0)) { >+ printf("TX queue setup failed\n"); >+ return -1; >+ } >+ >+- if (rte_eth_rx_queue_setup(RXTX_PORT2, 0, RING_SIZE, SOCKET0, >+- NULL, mp) < 0) { >++ if ((rte_eth_rx_queue_setup(RXTX_PORT2, 0, RING_SIZE, SOCKET0, NULL, >mp) < 0) >++ || (rte_eth_rx_queue_setup(RXTX_PORT3, 0, RING_SIZE, SOCKET0, >NULL, >mp) < 0)) { >+ printf("RX queue setup failed\n"); >+ return -1; >+ } >+ >+- if (rte_eth_dev_start(RXTX_PORT2) < 0) { >+- printf("Error starting RX port\n"); >++ if ((rte_eth_dev_start(RXTX_PORT2) < 0) >++ || (rte_eth_dev_start(RXTX_PORT3) < 0)) { >++ printf("Error starting RXTX port\n"); >+ return -1; >+ } >+ >+- /* send and receive 1 packet and check for stats update */ >++ /* >++ * send and receive 1 packet (RXTX_PORT2 -> RXTX_PORT3) >++ * and check for stats update >++ */ >+ if (rte_eth_tx_burst(RXTX_PORT2, 0, &pbuf, 1) != 1) { >+ printf("Error sending packet to RXTX port\n"); >+ return -1; >+ } >+ >+- if (rte_eth_rx_burst(RXTX_PORT2, 0, &pbuf, 1) != 1) { >++ if (rte_eth_rx_burst(RXTX_PORT3, 0, &pbuf, 1) != 1) { >+ printf("Error receiving packet from RXTX port\n"); >+ return -1; >+ } >+ >+ rte_eth_stats_get(RXTX_PORT2, &stats); >+- if (stats.ipackets != 1 || stats.opackets != 1 || >++ rte_eth_stats_get(RXTX_PORT3, &stats2); >++ if (stats.ipackets != 0 || stats.opackets != 1 || >+ stats.ibytes != 0 || stats.obytes != 0 || >+ stats.ierrors != 0 || stats.oerrors != 0) { >+ printf("Error: RXTX port stats are not as expected\n"); >+ return -1; >+ } >+ >+- rte_eth_dev_stop(RXTX_PORT2); >+- >+- return 0; >+-} >+- >+-static int >+-test_pmd_ring_pair_create(void) >+-{ >+- struct rte_eth_stats stats, stats2; >+- struct rte_mbuf buf, *pbuf = &buf; >+- struct rte_eth_conf null_conf; >+- >+- if ((RXTX_PORT4 >= RTE_MAX_ETHPORTS) || (RXTX_PORT5 >= >RTE_MAX_ETHPORTS)) { >+- printf(" TX/RX port exceed max eth ports\n"); >+- return -1; >+- } >+- if ((rte_eth_dev_configure(RXTX_PORT4, 1, 1, &null_conf) < 0) >+- || (rte_eth_dev_configure(RXTX_PORT5, 1, 1, &null_conf) < 0)) { >+- printf("Configure failed for RXTX port\n"); >+- return -1; >+- } >+- >+- if ((rte_eth_tx_queue_setup(RXTX_PORT4, 0, RING_SIZE, SOCKET0, NULL) < >0) >+- || (rte_eth_tx_queue_setup(RXTX_PORT5, 0, RING_SIZE, SOCKET0, >NULL) < >0)) { >+- printf("TX queue setup failed\n"); >+- return -1; >+- } >+- >+- if ((rte_eth_rx_queue_setup(RXTX_PORT4, 0, RING_SIZE, SOCKET0, NULL, >mp) < 0) >+- || (rte_eth_rx_queue_setup(RXTX_PORT5, 0, RING_SIZE, SOCKET0, >NULL, >mp) < 0)) { >+- printf("RX queue setup failed\n"); >+- return -1; >+- } >+- >+- if ((rte_eth_dev_start(RXTX_PORT4) < 0) >+- || (rte_eth_dev_start(RXTX_PORT5) < 0)) { >+- printf("Error starting RXTX port\n"); >++ if (stats2.ipackets != 1 || stats2.opackets != 0 || >++ stats2.ibytes != 0 || stats2.obytes != 0 || >++ stats2.ierrors != 0 || stats2.oerrors != 0) { >++ printf("Error: RXTX port stats are not as expected\n"); >+ return -1; >+ } >+ >+- /* send and receive 1 packet and check for stats update */ >+- if (rte_eth_tx_burst(RXTX_PORT4, 0, &pbuf, 1) != 1) { >++ /* >++ * send and receive 1 packet (RXTX_PORT3 -> RXTX_PORT2) >++ * and check for stats update >++ */ >++ if (rte_eth_tx_burst(RXTX_PORT3, 0, &pbuf, 1) != 1) { >+ printf("Error sending packet to RXTX port\n"); >+ return -1; >+ } >+ >+- if (rte_eth_rx_burst(RXTX_PORT5, 0, &pbuf, 1) != 1) { >++ if (rte_eth_rx_burst(RXTX_PORT2, 0, &pbuf, 1) != 1) { >+ printf("Error receiving packet from RXTX port\n"); >+ return -1; >+ } >+ >+- rte_eth_stats_get(RXTX_PORT4, &stats); >+- rte_eth_stats_get(RXTX_PORT5, &stats2); >+- if (stats.ipackets != 0 || stats.opackets != 1 || >++ rte_eth_stats_get(RXTX_PORT2, &stats); >++ rte_eth_stats_get(RXTX_PORT3, &stats2); >++ if (stats.ipackets != 1 || stats.opackets != 1 || >+ stats.ibytes != 0 || stats.obytes != 0 || >+ stats.ierrors != 0 || stats.oerrors != 0) { >+ printf("Error: RXTX port stats are not as expected\n"); >+ return -1; >+ } >+ >+- if (stats2.ipackets != 1 || stats2.opackets != 0 || >++ if (stats2.ipackets != 1 || stats2.opackets != 1 || >+ stats2.ibytes != 0 || stats2.obytes != 0 || >+ stats2.ierrors != 0 || stats2.oerrors != 0) { >+ printf("Error: RXTX port stats are not as expected\n"); >+ return -1; >+ } >+ >+- rte_eth_dev_stop(RXTX_PORT4); >+- rte_eth_dev_stop(RXTX_PORT5); >+- >+- return 0; >+-} >+- >+-static int >+-test_pmd_ring_pair_attach(void) >+-{ >+- struct rte_eth_stats stats, stats2; >+- struct rte_mbuf buf, *pbuf = &buf; >+- struct rte_eth_conf null_conf; >+- >+- if ((RXTX_PORT4 >= RTE_MAX_ETHPORTS) || (RXTX_PORT5 >= >RTE_MAX_ETHPORTS)) { >+- printf(" TX/RX port exceed max eth ports\n"); >+- return -1; >+- } >+- if ((rte_eth_dev_configure(RXTX_PORT4, 1, 1, &null_conf) < 0) >+- || (rte_eth_dev_configure(RXTX_PORT5, 1, 1, &null_conf) < 0)) { >+- printf("Configure failed for RXTX port\n"); >++ /* >++ * send and receive 1 packet (RXTX_PORT2 -> RXTX_PORT2) >++ * and check for stats update >++ */ >++ if (rte_eth_tx_burst(RXTX_PORT2, 0, &pbuf, 1) != 1) { >++ printf("Error sending packet to RXTX port\n"); >+ return -1; >+ } >+ >+- if ((rte_eth_tx_queue_setup(RXTX_PORT4, 0, RING_SIZE, SOCKET0, NULL) < >0) >+- || (rte_eth_tx_queue_setup(RXTX_PORT5, 0, RING_SIZE, SOCKET0, >NULL) < >0)) { >+- printf("TX queue setup failed\n"); >++ if (rte_eth_rx_burst(RXTX_PORT2, 0, &pbuf, 1) != 1) { >++ printf("Error receiving packet from RXTX port\n"); >+ return -1; >+ } >+ >+- if ((rte_eth_rx_queue_setup(RXTX_PORT4, 0, RING_SIZE, SOCKET0, NULL, >mp) < 0) >+- || (rte_eth_rx_queue_setup(RXTX_PORT5, 0, RING_SIZE, SOCKET0, >NULL, >mp) < 0)) { >+- printf("RX queue setup failed\n"); >++ rte_eth_stats_get(RXTX_PORT2, &stats); >++ rte_eth_stats_get(RXTX_PORT3, &stats2); >++ if (stats.ipackets != 2 || stats.opackets != 2 || >++ stats.ibytes != 0 || stats.obytes != 0 || >++ stats.ierrors != 0 || stats.oerrors != 0) { >++ printf("Error: RXTX port stats are not as expected\n"); >+ return -1; >+ } >+ >+- if ((rte_eth_dev_start(RXTX_PORT4) < 0) >+- || (rte_eth_dev_start(RXTX_PORT5) < 0)) { >+- printf("Error starting RXTX port\n"); >++ if (stats2.ipackets != 1 || stats2.opackets != 1 || >++ stats2.ibytes != 0 || stats2.obytes != 0 || >++ stats2.ierrors != 0 || stats2.oerrors != 0) { >++ printf("Error: RXTX port stats are not as expected\n"); >+ return -1; >+ } >+ >+- rte_eth_stats_reset(RXTX_PORT4); >+- rte_eth_stats_reset(RXTX_PORT5); >+- >+- /* send and receive 1 packet and check for stats update */ >+- if (rte_eth_tx_burst(RXTX_PORT4, 0, &pbuf, 1) != 1) { >++ /* >++ * send and receive 1 packet (RXTX_PORT3 -> RXTX_PORT3) >++ * and check for stats update >++ */ >++ if (rte_eth_tx_burst(RXTX_PORT3, 0, &pbuf, 1) != 1) { >+ printf("Error sending packet to RXTX port\n"); >+ return -1; >+ } >+- if (rte_eth_rx_burst(RXTX_PORT5, 0, &pbuf, 1) != 1) { >++ >++ if (rte_eth_rx_burst(RXTX_PORT3, 0, &pbuf, 1) != 1) { >+ printf("Error receiving packet from RXTX port\n"); >+ return -1; >+ } >+ >+- rte_eth_stats_get(RXTX_PORT4, &stats); >+- rte_eth_stats_get(RXTX_PORT5, &stats2); >+- if (stats.ipackets != 0 || stats.opackets != 1 || >++ rte_eth_stats_get(RXTX_PORT2, &stats); >++ rte_eth_stats_get(RXTX_PORT3, &stats2); >++ if (stats.ipackets != 2 || stats.opackets != 2 || >+ stats.ibytes != 0 || stats.obytes != 0 || >+ stats.ierrors != 0 || stats.oerrors != 0) { >+ printf("Error: RXTX port stats are not as expected\n"); >+ return -1; >+ } >+ >+- if (stats2.ipackets != 1 || stats2.opackets != 0 || >++ if (stats2.ipackets != 2 || stats2.opackets != 2 || >+ stats2.ibytes != 0 || stats2.obytes != 0 || >+ stats2.ierrors != 0 || stats2.oerrors != 0) { >+ printf("Error: RXTX port stats are not as expected\n"); >+ return -1; >+ } >+ >+- rte_eth_dev_stop(RXTX_PORT4); >+- rte_eth_dev_stop(RXTX_PORT5); >++ rte_eth_dev_stop(RXTX_PORT2); >++ rte_eth_dev_stop(RXTX_PORT3); >+ >+ return 0; >+ } >+@@ -448,17 +408,6 @@ test_pmd_ring_pair_attach(void) >+ int >+ test_pmd_ring(void) >+ { >+- r1[0] = rte_ring_create("R1", RING_SIZE, 0, 0); >+- r1[1] = rte_ring_create("R2", RING_SIZE, 0, 0); >+- if (r1[0] == NULL && (r1[0] = rte_ring_lookup("R1")) == NULL) >+- return -1; >+- if (r1[1] == NULL && (r1[1] = rte_ring_lookup("R2")) == NULL) >+- return -1; >+- >+- r2 = rte_ring_create("R3", RING_SIZE, 0, RING_F_SP_ENQ|RING_F_SC_DEQ); >+- if (r2 == NULL && (r2 = rte_ring_lookup("R3")) == NULL) >+- return -1; >+- >+ mp = rte_mempool_create("mbuf_pool", NB_MBUF, >+ MBUF_SIZE, 32, >+ sizeof(struct rte_pktmbuf_pool_private), >+@@ -468,8 +417,6 @@ test_pmd_ring(void) >+ if (mp == NULL) >+ return -1; >+ >+- start_idx = rte_eth_dev_count(); >+- >+ if ((TX_PORT >= RTE_MAX_ETHPORTS) || (RX_PORT >= RTE_MAX_ETHPORTS)\ >+ || (RXTX_PORT >= RTE_MAX_ETHPORTS)) { >+ printf(" TX/RX port exceed max eth ports\n"); >+@@ -492,14 +439,9 @@ test_pmd_ring(void) >+ rte_eth_dev_stop(TX_PORT); >+ rte_eth_dev_stop(RXTX_PORT); >+ >+- if (test_pmd_ring_init() < 0) >++ if (test_pmd_ring_pair_create_attach() < 0) >+ return -1; >+ >+- if (test_pmd_ring_pair_create() < 0) >+- return -1; >+- >+- if (test_pmd_ring_pair_attach() < 0) >+- return -1; >+ return 0; >+ } >+ >+-- >+1.9.1 >+ >diff --git a/common/recipes-extended/dpdk/dpdk_1.7.0.bb >b/common/recipes-extended/dpdk/dpdk_1.7.0.bb >new file mode 100644 >index 0000000..6571485 >--- /dev/null >+++ b/common/recipes-extended/dpdk/dpdk_1.7.0.bb >@@ -0,0 +1,27 @@ >+include dpdk.inc >+ >+SRC_URI = >"http://dpdk.org/browse/dpdk/snapshot/dpdk-${PV}.tar.gz;name=dpdk \ >+ file://dpdk-1.7.0-examples-pipeline-build-with-all-examples.patch \ >+ >file://dpdk-1.7.0-examples-exclude-compilation-of-dpdk_qat-and-vhost.patch > \ >+ >file://dpdk-1.7.0-ring-remove-extra-devices-creation-with-vdev-option.patc >h \ >+ file://dpdk-1.7.0-ring-simplify-unit-tests.patch \ >+ " >+ >+SRC_URI[dpdk.md5sum] = "07907d7b1a64888a459a971c45818038" >+SRC_URI[dpdk.sha256sum] = >"aafc290260b5002d248ab8f8c8ffa76454d4b1382aa3c82ae2700ecce481397a" >+ >+export EXAMPLES_BUILD_DIR = "${RTE_TARGET}" >+ >+do_compile_append () { >+ >+ cd ${S}/examples/ >+ >+ ############################################################### >+ # In order to make use of dpdk.inc for example app installation >+ # without failure, override the default build directory >+ ############################################################### >+ oe_runmake CROSS="${TARGET_PREFIX}" O="${S}/examples/$@/" >+} >+ >+ >+ >-- >1.9.1 > >-- >_______________________________________________ >meta-intel mailing list >[email protected] >https://lists.yoctoproject.org/listinfo/meta-intel -- _______________________________________________ meta-intel mailing list [email protected] https://lists.yoctoproject.org/listinfo/meta-intel
