summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorVincenzo Maffione <vmaffione@FreeBSD.org>2019-04-13 12:50:47 +0000
committerVincenzo Maffione <vmaffione@FreeBSD.org>2019-04-13 12:50:47 +0000
commit4f6858e8a941a040ae8df6932b4a12a12f4bd386 (patch)
treec65c8743255865d5d537e5e13a5bb1cd954be40f /tests
parent20a6a3a7a75751d795c1e9519ab4310c3cb972aa (diff)
downloadsrc-test2-4f6858e8a941a040ae8df6932b4a12a12f4bd386.tar.gz
src-test2-4f6858e8a941a040ae8df6932b4a12a12f4bd386.zip
Notes
Diffstat (limited to 'tests')
-rw-r--r--tests/sys/netmap/ctrl-api-test.c77
1 files changed, 53 insertions, 24 deletions
diff --git a/tests/sys/netmap/ctrl-api-test.c b/tests/sys/netmap/ctrl-api-test.c
index de5f0426a60c..73c4f8e1c39c 100644
--- a/tests/sys/netmap/ctrl-api-test.c
+++ b/tests/sys/netmap/ctrl-api-test.c
@@ -50,12 +50,6 @@
#ifdef __FreeBSD__
#include "freebsd_test_suite/macros.h"
-#endif
-
-
-#ifdef __linux__
-#include <sys/eventfd.h>
-#else
static int
eventfd(int x __unused, int y __unused)
@@ -63,7 +57,9 @@ eventfd(int x __unused, int y __unused)
errno = ENODEV;
return -1;
}
-#endif /* __linux__ */
+#else /* __linux__ */
+#include <sys/eventfd.h>
+#endif
static int
exec_command(int argc, const char *const argv[])
@@ -144,6 +140,8 @@ struct TestContext {
uint32_t nr_rx_slots; /* slots in rx rings */
uint16_t nr_tx_rings; /* number of tx rings */
uint16_t nr_rx_rings; /* number of rx rings */
+ uint16_t nr_host_tx_rings; /* number of host tx rings */
+ uint16_t nr_host_rx_rings; /* number of host rx rings */
uint16_t nr_mem_id; /* id of the memory allocator */
uint16_t nr_ringid; /* ring(s) we care about */
uint32_t nr_mode; /* specify NR_REG_* modes */
@@ -242,6 +240,8 @@ port_register(struct TestContext *ctx)
req.nr_tx_slots = ctx->nr_tx_slots;
req.nr_rx_slots = ctx->nr_rx_slots;
req.nr_tx_rings = ctx->nr_tx_rings;
+ req.nr_host_tx_rings = ctx->nr_host_tx_rings;
+ req.nr_host_rx_rings = ctx->nr_host_rx_rings;
req.nr_rx_rings = ctx->nr_rx_rings;
req.nr_extra_bufs = ctx->nr_extra_bufs;
ret = ioctl(ctx->fd, NIOCCTRL, &hdr);
@@ -255,23 +255,29 @@ port_register(struct TestContext *ctx)
printf("nr_rx_slots %u\n", req.nr_rx_slots);
printf("nr_tx_rings %u\n", req.nr_tx_rings);
printf("nr_rx_rings %u\n", req.nr_rx_rings);
+ printf("nr_host_tx_rings %u\n", req.nr_host_tx_rings);
+ printf("nr_host_rx_rings %u\n", req.nr_host_rx_rings);
printf("nr_mem_id %u\n", req.nr_mem_id);
printf("nr_extra_bufs %u\n", req.nr_extra_bufs);
success = req.nr_memsize && (ctx->nr_mode == req.nr_mode) &&
- (ctx->nr_ringid == req.nr_ringid) &&
- (ctx->nr_flags == req.nr_flags) &&
- ((!ctx->nr_tx_slots && req.nr_tx_slots) ||
- (ctx->nr_tx_slots == req.nr_tx_slots)) &&
- ((!ctx->nr_rx_slots && req.nr_rx_slots) ||
- (ctx->nr_rx_slots == req.nr_rx_slots)) &&
- ((!ctx->nr_tx_rings && req.nr_tx_rings) ||
- (ctx->nr_tx_rings == req.nr_tx_rings)) &&
- ((!ctx->nr_rx_rings && req.nr_rx_rings) ||
- (ctx->nr_rx_rings == req.nr_rx_rings)) &&
- ((!ctx->nr_mem_id && req.nr_mem_id) ||
- (ctx->nr_mem_id == req.nr_mem_id)) &&
- (ctx->nr_extra_bufs == req.nr_extra_bufs);
+ (ctx->nr_ringid == req.nr_ringid) &&
+ (ctx->nr_flags == req.nr_flags) &&
+ ((!ctx->nr_tx_slots && req.nr_tx_slots) ||
+ (ctx->nr_tx_slots == req.nr_tx_slots)) &&
+ ((!ctx->nr_rx_slots && req.nr_rx_slots) ||
+ (ctx->nr_rx_slots == req.nr_rx_slots)) &&
+ ((!ctx->nr_tx_rings && req.nr_tx_rings) ||
+ (ctx->nr_tx_rings == req.nr_tx_rings)) &&
+ ((!ctx->nr_rx_rings && req.nr_rx_rings) ||
+ (ctx->nr_rx_rings == req.nr_rx_rings)) &&
+ ((!ctx->nr_host_tx_rings && req.nr_host_tx_rings) ||
+ (ctx->nr_host_tx_rings == req.nr_host_tx_rings)) &&
+ ((!ctx->nr_host_rx_rings && req.nr_host_rx_rings) ||
+ (ctx->nr_host_rx_rings == req.nr_host_rx_rings)) &&
+ ((!ctx->nr_mem_id && req.nr_mem_id) ||
+ (ctx->nr_mem_id == req.nr_mem_id)) &&
+ (ctx->nr_extra_bufs == req.nr_extra_bufs);
if (!success) {
return -1;
}
@@ -281,6 +287,8 @@ port_register(struct TestContext *ctx)
ctx->nr_rx_slots = req.nr_rx_slots;
ctx->nr_tx_rings = req.nr_tx_rings;
ctx->nr_rx_rings = req.nr_rx_rings;
+ ctx->nr_host_tx_rings = req.nr_host_tx_rings;
+ ctx->nr_host_rx_rings = req.nr_host_rx_rings;
ctx->nr_mem_id = req.nr_mem_id;
ctx->nr_extra_bufs = req.nr_extra_bufs;
@@ -448,7 +456,7 @@ port_register_hwall_host(struct TestContext *ctx)
}
static int
-port_register_host(struct TestContext *ctx)
+port_register_hostall(struct TestContext *ctx)
{
ctx->nr_mode = NR_REG_SW;
return port_register(ctx);
@@ -462,7 +470,7 @@ port_register_hwall(struct TestContext *ctx)
}
static int
-port_register_single_ring_couple(struct TestContext *ctx)
+port_register_single_hw_pair(struct TestContext *ctx)
{
ctx->nr_mode = NR_REG_ONE_NIC;
ctx->nr_ringid = 0;
@@ -470,6 +478,25 @@ port_register_single_ring_couple(struct TestContext *ctx)
}
static int
+port_register_single_host_pair(struct TestContext *ctx)
+{
+ ctx->nr_mode = NR_REG_ONE_SW;
+ ctx->nr_host_tx_rings = 2;
+ ctx->nr_host_rx_rings = 2;
+ ctx->nr_ringid = 1;
+ return port_register(ctx);
+}
+
+static int
+port_register_hostall_many(struct TestContext *ctx)
+{
+ ctx->nr_mode = NR_REG_SW;
+ ctx->nr_host_tx_rings = 5;
+ ctx->nr_host_rx_rings = 4;
+ return port_register(ctx);
+}
+
+static int
port_register_hwall_tx(struct TestContext *ctx)
{
ctx->nr_mode = NR_REG_ALL_NIC;
@@ -1701,8 +1728,10 @@ static struct mytest tests[] = {
decltest(port_info_get),
decltest(port_register_hwall_host),
decltest(port_register_hwall),
- decltest(port_register_host),
- decltest(port_register_single_ring_couple),
+ decltest(port_register_hostall),
+ decltest(port_register_single_hw_pair),
+ decltest(port_register_single_host_pair),
+ decltest(port_register_hostall_many),
decltest(vale_attach_detach),
decltest(vale_attach_detach_host_rings),
decltest(vale_ephemeral_port_hdr_manipulation),