[dpdk-dev] [PATCH v7 6/9] test: dynamic rss configuration

2015-10-30 Thread Tomasz Kulasek
v7 changes:
 - Makefile for test app changed to not break compilation when
   CONFIG_RTE_LIBRTE_PMD_NULL=n (now module is silently omitted when
   requirements not met)

Signed-off-by: Tomasz Kulasek 
Acked-by: Declan Doherty 
---
 app/test/Makefile|7 +
 app/test/test_link_bonding_rssconf.c |  679 ++
 2 files changed, 686 insertions(+)
 create mode 100644 app/test/test_link_bonding_rssconf.c

diff --git a/app/test/Makefile b/app/test/Makefile
index 294618f..ef9125d 100644
--- a/app/test/Makefile
+++ b/app/test/Makefile
@@ -140,6 +140,13 @@ SRCS-$(CONFIG_RTE_LIBRTE_PMD_BOND) += test_link_bonding.c
 SRCS-$(CONFIG_RTE_LIBRTE_PMD_BOND) += test_link_bonding_mode4.c
 endif

+ifeq ($(CONFIG_RTE_LIBRTE_PMD_NULL),y)
+SRCS-$(CONFIG_RTE_LIBRTE_PMD_BOND) += test_link_bonding_rssconf.c
+ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
+LDLIBS += -lrte_pmd_null
+endif
+endif
+
 SRCS-$(CONFIG_RTE_LIBRTE_PMD_RING) += test_pmd_ring.c
 SRCS-$(CONFIG_RTE_LIBRTE_KVARGS) += test_kvargs.c

diff --git a/app/test/test_link_bonding_rssconf.c 
b/app/test/test_link_bonding_rssconf.c
new file mode 100644
index 000..e6714b4
--- /dev/null
+++ b/app/test/test_link_bonding_rssconf.c
@@ -0,0 +1,679 @@
+/*-
+ *   BSD LICENSE
+ *
+ *   Copyright(c) 2015 Intel Corporation. All rights reserved.
+ *   All rights reserved.
+ *
+ *   Redistribution and use in source and binary forms, with or without
+ *   modification, are permitted provided that the following conditions
+ *   are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in
+ *   the documentation and/or other materials provided with the
+ *   distribution.
+ * * Neither the name of Intel Corporation nor the names of its
+ *   contributors may be used to endorse or promote products derived
+ *   from this software without specific prior written permission.
+ *
+ *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include 
+#include 
+#include 
+#include 
+
+#include "test.h"
+
+#define SLAVE_COUNT (4)
+
+#define RXTX_RING_SIZE 1024
+#define RXTX_QUEUE_COUNT   4
+
+#define BONDED_DEV_NAME ("rssconf_bond_dev")
+
+#define SLAVE_DEV_NAME_FMT  ("rssconf_slave%d")
+#define SLAVE_RXTX_QUEUE_FMT  ("rssconf_slave%d_q%d")
+
+#define NUM_MBUFS 8191
+#define MBUF_SIZE (1600 + sizeof(struct rte_mbuf) + RTE_PKTMBUF_HEADROOM)
+#define MBUF_CACHE_SIZE 250
+#define BURST_SIZE 32
+
+#define INVALID_SOCKET_ID   (-1)
+#define INVALID_PORT_ID (0xFF)
+#define INVALID_BONDING_MODE(-1)
+
+struct slave_conf {
+   uint8_t port_id;
+   struct rte_eth_dev_info dev_info;
+
+   struct rte_eth_rss_conf rss_conf;
+   uint8_t rss_key[40];
+   struct rte_eth_rss_reta_entry64 reta_conf[512 / RTE_RETA_GROUP_SIZE];
+
+   uint8_t is_slave;
+   struct rte_ring *rxtx_queue[RXTX_QUEUE_COUNT];
+};
+
+struct link_bonding_rssconf_unittest_params {
+   uint8_t bond_port_id;
+   struct rte_eth_dev_info bond_dev_info;
+   struct rte_eth_rss_reta_entry64 bond_reta_conf[512 / 
RTE_RETA_GROUP_SIZE];
+   struct slave_conf slave_ports[SLAVE_COUNT];
+
+   struct rte_mempool *mbuf_pool;
+};
+
+static struct link_bonding_rssconf_unittest_params test_params  = {
+   .bond_port_id = INVALID_PORT_ID,
+   .slave_ports = {
+   [0 ... SLAVE_COUNT - 1] = { .port_id = INVALID_PORT_ID, 
.is_slave = 0}
+   },
+   .mbuf_pool = NULL,
+};
+
+/**
+ * Default port configuration with RSS turned off
+ */
+static struct rte_eth_conf default_pmd_conf = {
+   .rxmode = {
+   .mq_mode = ETH_MQ_RX_NONE,
+   .max_rx_pkt_len = ETHER_MAX_LEN,
+   .split_hdr_size = 0,
+   .header_split   = 0, /**< Header Split disabled */
+ 

[dpdk-dev] [PATCH v7 6/9] test: dynamic rss configuration

2015-10-30 Thread Tomasz Kulasek
Date: Fri, 30 Oct 2015 14:56:01 +0100
Message-Id: <1446213364-11856-7-git-send-email-tomaszx.kulasek at intel.com>
X-Mailer: git-send-email 2.1.4
In-Reply-To: <1446213364-11856-1-git-send-email-tomaszx.kulasek at intel.com>
References: <1444989651-6236-1-git-send-email-tomaszx.kulasek at intel.com>
 <1446213364-11856-1-git-send-email-tomaszx.kulasek at intel.com>

v7 changes:

 - Makefile for test app changed to not break compilation when

   CONFIG_RTE_LIBRTE_PMD_NULL=n (now module is silently omitted when

   requirements not met)



Signed-off-by: Tomasz Kulasek 

Acked-by: Declan Doherty 

---

 app/test/Makefile|7 +

 app/test/test_link_bonding_rssconf.c |  679 ++

 2 files changed, 686 insertions(+)

 create mode 100644 app/test/test_link_bonding_rssconf.c



diff --git a/app/test/Makefile b/app/test/Makefile

index 294618f..ef9125d 100644

--- a/app/test/Makefile

+++ b/app/test/Makefile

@@ -140,6 +140,13 @@ SRCS-$(CONFIG_RTE_LIBRTE_PMD_BOND) += test_link_bonding.c

 SRCS-$(CONFIG_RTE_LIBRTE_PMD_BOND) += test_link_bonding_mode4.c

 endif



+ifeq ($(CONFIG_RTE_LIBRTE_PMD_NULL),y)

+SRCS-$(CONFIG_RTE_LIBRTE_PMD_BOND) += test_link_bonding_rssconf.c

+ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)

+LDLIBS += -lrte_pmd_null

+endif

+endif

+

 SRCS-$(CONFIG_RTE_LIBRTE_PMD_RING) += test_pmd_ring.c

 SRCS-$(CONFIG_RTE_LIBRTE_KVARGS) += test_kvargs.c



diff --git a/app/test/test_link_bonding_rssconf.c 
b/app/test/test_link_bonding_rssconf.c

new file mode 100644

index 000..e6714b4

--- /dev/null

+++ b/app/test/test_link_bonding_rssconf.c

@@ -0,0 +1,679 @@

+/*-

+ *   BSD LICENSE

+ *

+ *   Copyright(c) 2015 Intel Corporation. All rights reserved.

+ *   All rights reserved.

+ *

+ *   Redistribution and use in source and binary forms, with or without

+ *   modification, are permitted provided that the following conditions

+ *   are met:

+ *

+ * * Redistributions of source code must retain the above copyright

+ *   notice, this list of conditions and the following disclaimer.

+ * * Redistributions in binary form must reproduce the above copyright

+ *   notice, this list of conditions and the following disclaimer in

+ *   the documentation and/or other materials provided with the

+ *   distribution.

+ * * Neither the name of Intel Corporation nor the names of its

+ *   contributors may be used to endorse or promote products derived

+ *   from this software without specific prior written permission.

+ *

+ *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS

+ *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT

+ *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR

+ *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT

+ *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,

+ *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT

+ *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+ *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY

+ *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT

+ *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE

+ *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ */

+

+#include 

+#include 

+#include 

+#include 

+#include 

+#include 

+#include 

+#include 

+#include 

+

+#include 

+#include 

+#include 

+#include 

+#include 

+#include 

+#include 

+

+#include 

+#include 

+#include 

+#include 

+

+#include "test.h"

+

+#define SLAVE_COUNT (4)

+

+#define RXTX_RING_SIZE 1024

+#define RXTX_QUEUE_COUNT   4

+

+#define BONDED_DEV_NAME ("rssconf_bond_dev")

+

+#define SLAVE_DEV_NAME_FMT  ("rssconf_slave%d")

+#define SLAVE_RXTX_QUEUE_FMT  ("rssconf_slave%d_q%d")

+

+#define NUM_MBUFS 8191

+#define MBUF_SIZE (1600 + sizeof(struct rte_mbuf) + RTE_PKTMBUF_HEADROOM)

+#define MBUF_CACHE_SIZE 250

+#define BURST_SIZE 32

+

+#define INVALID_SOCKET_ID   (-1)

+#define INVALID_PORT_ID (0xFF)

+#define INVALID_BONDING_MODE(-1)

+

+struct slave_conf {

+   uint8_t port_id;

+   struct rte_eth_dev_info dev_info;

+

+   struct rte_eth_rss_conf rss_conf;

+   uint8_t rss_key[40];

+   struct rte_eth_rss_reta_entry64 reta_conf[512 / RTE_RETA_GROUP_SIZE];

+

+   uint8_t is_slave;

+   struct rte_ring *rxtx_queue[RXTX_QUEUE_COUNT];

+};

+

+struct link_bonding_rssconf_unittest_params {

+   uint8_t bond_port_id;

+   struct rte_eth_dev_info bond_dev_info;

+   struct rte_eth_rss_reta_entry64 bond_reta_conf[512 / 
RTE_RETA_GROUP_SIZE];

+   struct slave_conf slave_ports[SLAVE_COUNT];

+

+   struct rte_mempool *mbuf_pool;

+};

+

+static struct link_bonding_rssconf_unittest_params test_params  = {

+   .bond_port_id =