On Wed, Aug 26, 2015 at 12:10:37PM +0300, Maxim Uvarov wrote: > 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.uva...@linaro.org> > --- > example/classifier/odp_classifier.c | 1 + > example/generator/odp_generator.c | 2 +- > example/ipsec/odp_ipsec.c | 1 + > example/packet/odp_pktio.c | 1 + > platform/linux-generic/pktio/loop.c | 2 +- > platform/linux-generic/pktio/socket.c | 2 +- > platform/linux-generic/pktio/socket_mmap.c | 2 +- > test/performance/odp_l2fwd.c | 1 + > test/performance/odp_pktio_perf.c | 2 +- > test/validation/classification/odp_classification_tests.c | 1 + > test/validation/pktio/pktio.c | 1 + > 11 files changed, 11 insertions(+), 5 deletions(-) > > diff --git a/example/classifier/odp_classifier.c > b/example/classifier/odp_classifier.c > index ac204af..ffa39f8 100644 > --- a/example/classifier/odp_classifier.c > +++ b/example/classifier/odp_classifier.c > @@ -210,6 +210,7 @@ static odp_pktio_t create_pktio(const char *dev, > odp_pool_t pool) > EXAMPLE_ERR("pktio create failed for %s\n", dev); > exit(EXIT_FAILURE); > } > + odp_pktio_start(pktio); /* @todo: move to worker thread */
This should be moved into main(), after the classifier has been configured but before the workers have started. > > odp_queue_param_init(&qparam); > qparam.sched.prio = ODP_SCHED_PRIO_DEFAULT; > diff --git a/example/generator/odp_generator.c > b/example/generator/odp_generator.c > index 35a6fa8..3cf99fa 100644 > --- a/example/generator/odp_generator.c > +++ b/example/generator/odp_generator.c > @@ -333,10 +333,10 @@ static odp_pktio_t create_pktio(const char *dev, > odp_pool_t pool) > > /* Open a packet IO instance */ > pktio = odp_pktio_open(dev, pool, &pktio_param); > - > if (pktio == ODP_PKTIO_INVALID) > EXAMPLE_ABORT("Error: pktio create failed for %s\n", dev); > > + odp_pktio_start(pktio); /* @todo: move to worker thread */ Should be after odp_pktio_inq_setdef() - same for each of the other cases below. > /* > * Create and set the default INPUT queue associated with the 'pktio' > * resource > diff --git a/example/ipsec/odp_ipsec.c b/example/ipsec/odp_ipsec.c > index d392925..c1401d7 100644 > --- a/example/ipsec/odp_ipsec.c > +++ b/example/ipsec/odp_ipsec.c > @@ -529,6 +529,7 @@ void initialize_intf(char *intf) > EXAMPLE_ERR("Error: pktio create failed for %s\n", intf); > exit(EXIT_FAILURE); > } > + odp_pktio_start(pktio); /* @todo: move to worker thread */ > outq_def = odp_pktio_outq_getdef(pktio); > > /* > diff --git a/example/packet/odp_pktio.c b/example/packet/odp_pktio.c > index f4574a2..66dce07 100644 > --- a/example/packet/odp_pktio.c > +++ b/example/packet/odp_pktio.c > @@ -138,6 +138,7 @@ static odp_pktio_t create_pktio(const char *dev, > odp_pool_t pool, int mode) > pktio = odp_pktio_open(dev, pool, &pktio_param); > if (pktio == ODP_PKTIO_INVALID) > EXAMPLE_ABORT("Error: pktio create failed for %s\n", dev); > + odp_pktio_start(pktio); /* @todo: move to worker thread */ > > snprintf(inq_name, sizeof(inq_name), "%" PRIu64 "-pktio_inq_def", > odp_pktio_to_u64(pktio)); > 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 7db9747..f1dd39c 100644 > --- a/platform/linux-generic/pktio/socket.c > +++ b/platform/linux-generic/pktio/socket.c > @@ -248,7 +248,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 366bb15..2a8ed68 100644 > --- a/test/performance/odp_l2fwd.c > +++ b/test/performance/odp_l2fwd.c > @@ -292,6 +292,7 @@ static odp_pktio_t create_pktio(const char *dev, > odp_pool_t pool, > > printf("created pktio %" PRIu64 " (%s)\n", > odp_pktio_to_u64(pktio), dev); > + odp_pktio_start(pktio); /* @todo: move to worker thread */ > > /* no further setup needed for burst mode */ > if (mode == APPL_MODE_PKT_BURST) > diff --git a/test/performance/odp_pktio_perf.c > b/test/performance/odp_pktio_perf.c > index 1552579..5d739bc 100644 > --- a/test/performance/odp_pktio_perf.c > +++ b/test/performance/odp_pktio_perf.c > @@ -709,7 +709,7 @@ static odp_pktio_t create_pktio(const char *iface, int > schedule) > pktio_param.in_mode = ODP_PKTIN_MODE_POLL; > > pktio = odp_pktio_open(iface, pool, &pktio_param); > - > + odp_pktio_start(pktio); /* @todo: move to worker thread */ > return pktio; > } > > diff --git a/test/validation/classification/odp_classification_tests.c > b/test/validation/classification/odp_classification_tests.c > index c44ceb9..0592066 100644 > --- a/test/validation/classification/odp_classification_tests.c > +++ b/test/validation/classification/odp_classification_tests.c > @@ -306,6 +306,7 @@ int classification_suite_init(void) > fprintf(stderr, "unable to destroy pool.\n"); > return -1; > } > + odp_pktio_start(pktio_loop); /* @todo: move to worker thread */ Should be moved after classification config applied. > qparam.sched.prio = ODP_SCHED_PRIO_DEFAULT; > qparam.sched.sync = ODP_SCHED_SYNC_ATOMIC; > qparam.sched.group = ODP_SCHED_GROUP_ALL; > diff --git a/test/validation/pktio/pktio.c b/test/validation/pktio/pktio.c > index e995de7..7f51fd6 100644 > --- a/test/validation/pktio/pktio.c > +++ b/test/validation/pktio/pktio.c > @@ -242,6 +242,7 @@ static odp_pktio_t create_pktio(const char *iface, > odp_queue_type_t q_type, > CU_ASSERT(pktio != ODP_PKTIO_INVALID); > CU_ASSERT(odp_pktio_to_u64(pktio) != > odp_pktio_to_u64(ODP_PKTIO_INVALID)); > + odp_pktio_start(pktio); > > return pktio; > } > -- > 1.9.1 > -- Stuart. _______________________________________________ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp