aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Uvarov <maxim.uvarov@linaro.org>2015-08-26 18:49:07 +0300
committerMaxim Uvarov <maxim.uvarov@linaro.org>2015-08-27 16:28:14 +0300
commitd25e010f59ba78796a586a5a549fe8864618e0b7 (patch)
treeb72112b1f806eb928b5aacdaed941c77027f2c4e
parentea4a58e4b4e9bc2f7e585c3527ee085f5ff69945 (diff)
linux-generic: default state for pktio is STOP
After open pktio remains stopped. Inside worker thread (after all configuration done it should be started.) In that patch I just start it everywhere to keep original logic and be easy for review. Putting it inside worker threads will require thread arguments change and understanding logic of current app. It's better to do further changes in separate patches per app. Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org> Reviewed-by: Stuart Haslam <stuart.haslam@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
-rw-r--r--example/classifier/odp_classifier.c5
-rw-r--r--example/generator/odp_generator.c4
-rw-r--r--example/ipsec/odp_ipsec.c6
-rw-r--r--example/packet/odp_pktio.c4
-rw-r--r--platform/linux-generic/pktio/loop.c2
-rw-r--r--platform/linux-generic/pktio/socket.c2
-rw-r--r--platform/linux-generic/pktio/socket_mmap.c2
-rw-r--r--test/performance/odp_l2fwd.c6
-rw-r--r--test/performance/odp_pktio_perf.c6
-rw-r--r--test/validation/classification/odp_classification_tests.c7
-rw-r--r--test/validation/pktio/pktio.c3
11 files changed, 44 insertions, 3 deletions
diff --git a/example/classifier/odp_classifier.c b/example/classifier/odp_classifier.c
index ac204af..685f335 100644
--- a/example/classifier/odp_classifier.c
+++ b/example/classifier/odp_classifier.c
@@ -463,6 +463,11 @@ int main(int argc, char *argv[])
/* configure default Cos and default queue */
configure_default_queue(pktio, args);
+ if (odp_pktio_start(pktio)) {
+ EXAMPLE_ERR("Error: unable to start pktio.\n");
+ exit(EXIT_FAILURE);
+ }
+
/* Create and init worker threads */
memset(thread_tbl, 0, sizeof(thread_tbl));
diff --git a/example/generator/odp_generator.c b/example/generator/odp_generator.c
index 5c2eb06..f7aed76 100644
--- a/example/generator/odp_generator.c
+++ b/example/generator/odp_generator.c
@@ -359,6 +359,10 @@ static odp_pktio_t create_pktio(const char *dev, odp_pool_t pool)
if (ret != 0)
EXAMPLE_ABORT("Error: default input-Q setup for %s\n", dev);
+ ret = odp_pktio_start(pktio);
+ if (ret)
+ EXAMPLE_ABORT("Error: unable to start %s\n", dev);
+
printf(" created pktio:%02" PRIu64
", dev:%s, queue mode (ATOMIC queues)\n"
" default pktio%02" PRIu64
diff --git a/example/ipsec/odp_ipsec.c b/example/ipsec/odp_ipsec.c
index 85dbc00..96effe2 100644
--- a/example/ipsec/odp_ipsec.c
+++ b/example/ipsec/odp_ipsec.c
@@ -556,6 +556,12 @@ void initialize_intf(char *intf)
exit(EXIT_FAILURE);
}
+ ret = odp_pktio_start(pktio);
+ if (ret) {
+ EXAMPLE_ERR("Error: unable to start %s\n", intf);
+ exit(EXIT_FAILURE);
+ }
+
/* Read the source MAC address for this interface */
ret = odp_pktio_mac_addr(pktio, src_mac, sizeof(src_mac));
if (ret <= 0) {
diff --git a/example/packet/odp_pktio.c b/example/packet/odp_pktio.c
index 835fb96..df53ea2 100644
--- a/example/packet/odp_pktio.c
+++ b/example/packet/odp_pktio.c
@@ -171,6 +171,10 @@ static odp_pktio_t create_pktio(const char *dev, odp_pool_t pool, int mode)
if (ret != 0)
EXAMPLE_ABORT("Error: default input-Q setup for %s\n", dev);
+ ret = odp_pktio_start(pktio);
+ if (ret != 0)
+ EXAMPLE_ABORT("Error: unable to start %s\n", dev);
+
printf(" created pktio:%02" PRIu64
", dev:%s, queue mode (ATOMIC queues)\n"
" \tdefault pktio%02" PRIu64 "-INPUT queue:%" PRIu64 "\n",
diff --git a/platform/linux-generic/pktio/loop.c b/platform/linux-generic/pktio/loop.c
index f61ccd5..ef77e34 100644
--- a/platform/linux-generic/pktio/loop.c
+++ b/platform/linux-generic/pktio/loop.c
@@ -41,7 +41,7 @@ static int loopback_open(odp_pktio_t id, pktio_entry_t *pktio_entry,
if (pktio_entry->s.pkt_loop.loopq == ODP_QUEUE_INVALID)
return -1;
- pktio_entry->s.state = STATE_START;
+ pktio_entry->s.state = STATE_STOP;
return 0;
}
diff --git a/platform/linux-generic/pktio/socket.c b/platform/linux-generic/pktio/socket.c
index 43c5f67..6fcdb46 100644
--- a/platform/linux-generic/pktio/socket.c
+++ b/platform/linux-generic/pktio/socket.c
@@ -234,7 +234,7 @@ static int sock_setup_pkt(pktio_entry_t *pktio_entry, const char *netdev,
goto error;
}
- pktio_entry->s.state = STATE_START;
+ pktio_entry->s.state = STATE_STOP;
return 0;
error:
diff --git a/platform/linux-generic/pktio/socket_mmap.c b/platform/linux-generic/pktio/socket_mmap.c
index 2e55672..3fd2b0f 100644
--- a/platform/linux-generic/pktio/socket_mmap.c
+++ b/platform/linux-generic/pktio/socket_mmap.c
@@ -486,7 +486,7 @@ static int sock_mmap_open(odp_pktio_t id ODP_UNUSED,
goto error;
}
- pktio_entry->s.state = STATE_START;
+ pktio_entry->s.state = STATE_STOP;
return 0;
error:
diff --git a/test/performance/odp_l2fwd.c b/test/performance/odp_l2fwd.c
index db26a58..ce4efa8 100644
--- a/test/performance/odp_l2fwd.c
+++ b/test/performance/odp_l2fwd.c
@@ -317,6 +317,12 @@ static odp_pktio_t create_pktio(const char *dev, odp_pool_t pool,
return ODP_PKTIO_INVALID;
}
+ ret = odp_pktio_start(pktio);
+ if (ret != 0) {
+ LOG_ERR("Error: unable to start %s\n", dev);
+ return ODP_PKTIO_INVALID;
+ }
+
return pktio;
}
diff --git a/test/performance/odp_pktio_perf.c b/test/performance/odp_pktio_perf.c
index 1552579..709becf 100644
--- a/test/performance/odp_pktio_perf.c
+++ b/test/performance/odp_pktio_perf.c
@@ -777,6 +777,12 @@ static int test_init(void)
if (odp_pktio_inq_setdef(gbl_args->pktio_rx, inq_def) != 0)
return -1;
+ if (odp_pktio_start(gbl_args->pktio_tx) != 0)
+ return -1;
+ if (gbl_args->args.num_ifaces > 1 &&
+ odp_pktio_start(gbl_args->pktio_rx))
+ return -1;
+
return 0;
}
diff --git a/test/validation/classification/odp_classification_tests.c b/test/validation/classification/odp_classification_tests.c
index e22d00d..9e8ac1b 100644
--- a/test/validation/classification/odp_classification_tests.c
+++ b/test/validation/classification/odp_classification_tests.c
@@ -325,6 +325,13 @@ int classification_suite_init(void)
queue_list[i] = ODP_QUEUE_INVALID;
odp_atomic_init_u32(&seq, 0);
+
+ ret = odp_pktio_start(pktio_loop);
+ if (ret) {
+ fprintf(stderr, "unable to start loop\n");
+ return -1;
+ }
+
return 0;
}
diff --git a/test/validation/pktio/pktio.c b/test/validation/pktio/pktio.c
index de92c75..89d4bf1 100644
--- a/test/validation/pktio/pktio.c
+++ b/test/validation/pktio/pktio.c
@@ -470,6 +470,9 @@ static void test_txrx(odp_queue_type_t q_type, int num_pkts)
io->inq = odp_pktio_inq_getdef(io->id);
else
io->inq = ODP_QUEUE_INVALID;
+
+ ret = odp_pktio_start(io->id);
+ CU_ASSERT(ret == 0);
}
/* if we have two interfaces then send through one and receive on