Looks like the issue is that the name change from core_count to cpu_count
went in ahead of this patch.

On Thu, Jan 8, 2015 at 4:55 PM, Bill Fischofer <[email protected]>
wrote:

> This patch does not apply to the current ODP tip:
>
> error: patch failed: example/packet/odp_pktio.c:65
> Hunk #2 succeeded at 77 (offset 1 line).
> Hunk #3 succeeded at 100 (offset 1 line).
> Hunk #4 succeeded at 142 (offset 1 line).
> Hunk #5 succeeded at 219 (offset 1 line).
> Hunk #6 succeeded at 226 (offset 1 line).
> Hunk #7 succeeded at 343 (offset 1 line).
> Hunk #8 succeeded at 359 (offset 1 line).
> Applying patch example/packet/odp_pktio.c with 1 reject...
> Rejected hunk #1.
> Hunk #2 applied cleanly.
> Hunk #3 applied cleanly.
> Hunk #4 applied cleanly.
> Hunk #5 applied cleanly.
> Hunk #6 applied cleanly.
> Hunk #7 applied cleanly.
> Hunk #8 applied cleanly.
> Patch failed at 0001 example: packet: single instance per interface
> The copy of the patch that failed is found in:
>    /home/bill/linaro/stuart/.git/rebase-apply/patch
>
>
> On Thu, Jan 8, 2015 at 10:07 AM, Stuart Haslam <[email protected]>
> wrote:
>
>> Signed-off-by: Stuart Haslam <[email protected]>
>> ---
>>  example/packet/odp_pktio.c | 129
>> +++++++++++++++++----------------------------
>>  1 file changed, 49 insertions(+), 80 deletions(-)
>>
>> diff --git a/example/packet/odp_pktio.c b/example/packet/odp_pktio.c
>> index 0a38ec2..ee84c4a 100644
>> --- a/example/packet/odp_pktio.c
>> +++ b/example/packet/odp_pktio.c
>> @@ -65,11 +65,10 @@
>>   * Parsed command line application arguments
>>   */
>>  typedef struct {
>> -       int core_count;
>> +       int core_count;         /**< Number of cores to use */
>>         int if_count;           /**< Number of interfaces to be used */
>>         char **if_names;        /**< Array of pointers to interface names
>> */
>>         int mode;               /**< Packet IO mode */
>> -       odp_buffer_pool_t pool; /**< Buffer pool for packet IO */
>>  } appl_args_t;
>>
>>  /**
>> @@ -77,7 +76,6 @@ typedef struct {
>>   */
>>  typedef struct {
>>         char *pktio_dev;        /**< Interface name to use */
>> -       odp_buffer_pool_t pool; /**< Buffer pool for packet IO */
>>         int mode;               /**< Thread mode */
>>  } thread_args_t;
>>
>> @@ -101,6 +99,40 @@ static void parse_args(int argc, char *argv[],
>> appl_args_t *appl_args);
>>  static void print_info(char *progname, appl_args_t *appl_args);
>>  static void usage(char *progname);
>>
>> +static odp_pktio_t create_pktio(const char *dev, odp_buffer_pool_t pool)
>> +{
>> +       odp_pktio_t pktio;
>> +       odp_queue_t inq_def;
>> +       odp_queue_param_t qparam;
>> +       char inq_name[ODP_QUEUE_NAME_LEN];
>> +       int ret;
>> +
>> +       /* Open a packet IO instance */
>> +       pktio = odp_pktio_open(dev, pool);
>> +       if (pktio == ODP_PKTIO_INVALID)
>> +               EXAMPLE_ABORT("Error: pktio create failed for %s\n", dev);
>> +
>> +       qparam.sched.prio  = ODP_SCHED_PRIO_DEFAULT;
>> +       qparam.sched.sync  = ODP_SCHED_SYNC_ATOMIC;
>> +       qparam.sched.group = ODP_SCHED_GROUP_DEFAULT;
>> +       snprintf(inq_name, sizeof(inq_name), "%i-pktio_inq_def",
>> (int)pktio);
>> +       inq_name[ODP_QUEUE_NAME_LEN - 1] = '\0';
>> +
>> +       inq_def = odp_queue_create(inq_name, ODP_QUEUE_TYPE_PKTIN,
>> &qparam);
>> +       if (inq_def == ODP_QUEUE_INVALID)
>> +               EXAMPLE_ABORT("Error: pktio inq create failed for %s\n",
>> dev);
>> +
>> +       ret = odp_pktio_inq_setdef(pktio, inq_def);
>> +       if (ret != 0)
>> +               EXAMPLE_ABORT("Error: default input-Q setup for %s\n",
>> dev);
>> +
>> +       printf("  created pktio:%02i, dev:%s, queue mode (ATOMIC
>> queues)\n"
>> +              "  \tdefault pktio%02i-INPUT queue:%u\n",
>> +               pktio, dev, pktio, inq_def);
>> +
>> +       return pktio;
>> +}
>> +
>>  /**
>>   * Packet IO loopback worker thread using ODP queues
>>   *
>> @@ -109,73 +141,27 @@ static void usage(char *progname);
>>  static void *pktio_queue_thread(void *arg)
>>  {
>>         int thr;
>> -       odp_buffer_pool_t pkt_pool;
>>         odp_pktio_t pktio;
>>         thread_args_t *thr_args;
>>         odp_queue_t outq_def;
>> -       odp_queue_t inq_def;
>> -       char inq_name[ODP_QUEUE_NAME_LEN];
>> -       odp_queue_param_t qparam;
>>         odp_packet_t pkt;
>>         odp_buffer_t buf;
>> -       int ret;
>>         unsigned long pkt_cnt = 0;
>>         unsigned long err_cnt = 0;
>> -       int mtu = 0;
>>
>>         thr = odp_thread_id();
>>         thr_args = arg;
>>
>> -       printf("Pktio thread [%02i] starts, pktio_dev:%s\n", thr,
>> -              thr_args->pktio_dev);
>> -
>> -       /* Lookup the packet pool */
>> -       pkt_pool = odp_buffer_pool_lookup("packet_pool");
>> -       if (pkt_pool == ODP_BUFFER_POOL_INVALID || pkt_pool !=
>> thr_args->pool) {
>> -               EXAMPLE_ERR("  [%02i] Error: pkt_pool not found\n", thr);
>> -               return NULL;
>> -       }
>> -
>> -       /* Open a packet IO instance for this thread */
>> -       pktio = odp_pktio_open(thr_args->pktio_dev, pkt_pool);
>> +       pktio = odp_pktio_lookup(thr_args->pktio_dev);
>>         if (pktio == ODP_PKTIO_INVALID) {
>> -               EXAMPLE_ERR("  [%02i] Error: pktio create failed\n", thr);
>> +               EXAMPLE_ERR("  [%02i] Error: lookup of pktio %s failed\n",
>> +                           thr, thr_args->pktio_dev);
>>                 return NULL;
>>         }
>>
>> -       mtu = odp_pktio_mtu(pktio);
>> -       if (mtu > 0)
>> -               printf("PKTIO: %d, dev %s, MTU: %d\n",
>> -                      pktio, thr_args->pktio_dev, mtu);
>> -       else
>> -               EXAMPLE_ERR("odp_pktio_mtu: unable to get MTU\n");
>> -
>> -       /*
>> -        * Create and set the default INPUT queue associated with the
>> 'pktio'
>> -        * resource
>> -        */
>> -       qparam.sched.prio  = ODP_SCHED_PRIO_DEFAULT;
>> -       qparam.sched.sync  = ODP_SCHED_SYNC_ATOMIC;
>> -       qparam.sched.group = ODP_SCHED_GROUP_DEFAULT;
>> -       snprintf(inq_name, sizeof(inq_name), "%i-pktio_inq_def",
>> (int)pktio);
>> -       inq_name[ODP_QUEUE_NAME_LEN - 1] = '\0';
>> -
>> -       inq_def = odp_queue_create(inq_name, ODP_QUEUE_TYPE_PKTIN,
>> &qparam);
>> -       if (inq_def == ODP_QUEUE_INVALID) {
>> -               EXAMPLE_ERR("  [%02i] Error: pktio queue creation
>> failed\n",
>> -                           thr);
>> -               return NULL;
>> -       }
>> -
>> -       ret = odp_pktio_inq_setdef(pktio, inq_def);
>> -       if (ret != 0) {
>> -               EXAMPLE_ERR("  [%02i] Error: default input-Q setup\n",
>> thr);
>> -               return NULL;
>> -       }
>> -
>> -       printf("  [%02i] created pktio:%02i, queue mode (ATOMIC queues)\n"
>> -              "          default pktio%02i-INPUT queue:%u\n",
>> -               thr, pktio, pktio, inq_def);
>> +       printf("  [%02i] looked up pktio:%02i, queue mode (ATOMIC
>> queues)\n"
>> +              "         default pktio%02i-INPUT queue:%u\n",
>> +              thr, pktio, pktio, odp_pktio_inq_getdef(pktio));
>>
>>         /* Loop packets */
>>         for (;;) {
>> @@ -232,7 +218,6 @@ static void *pktio_queue_thread(void *arg)
>>  static void *pktio_ifburst_thread(void *arg)
>>  {
>>         int thr;
>> -       odp_buffer_pool_t pkt_pool;
>>         odp_pktio_t pktio;
>>         thread_args_t *thr_args;
>>         int pkts, pkts_ok;
>> @@ -240,37 +225,18 @@ static void *pktio_ifburst_thread(void *arg)
>>         unsigned long pkt_cnt = 0;
>>         unsigned long err_cnt = 0;
>>         unsigned long tmp = 0;
>> -       int mtu;
>>
>>         thr = odp_thread_id();
>>         thr_args = arg;
>>
>> -       printf("Pktio thread [%02i] starts, pktio_dev:%s\n", thr,
>> -              thr_args->pktio_dev);
>> -
>> -       /* Lookup the packet pool */
>> -       pkt_pool = odp_buffer_pool_lookup("packet_pool");
>> -       if (pkt_pool == ODP_BUFFER_POOL_INVALID || pkt_pool !=
>> thr_args->pool) {
>> -               EXAMPLE_ERR("  [%02i] Error: pkt_pool not found\n", thr);
>> -               return NULL;
>> -       }
>> -
>> -       /* Open a packet IO instance for this thread */
>> -       pktio = odp_pktio_open(thr_args->pktio_dev, pkt_pool);
>> +       pktio = odp_pktio_lookup(thr_args->pktio_dev);
>>         if (pktio == ODP_PKTIO_INVALID) {
>> -               EXAMPLE_ERR("  [%02i] Error: pktio create failed.\n",
>> thr);
>> +               EXAMPLE_ERR("  [%02i] Error: lookup of pktio %s failed\n",
>> +                           thr, thr_args->pktio_dev);
>>                 return NULL;
>>         }
>>
>> -       mtu = odp_pktio_mtu(pktio);
>> -       if (mtu > 0)
>> -               printf("PKTIO: %d, dev %s, MTU: %d\n",
>> -                      pktio, thr_args->pktio_dev, mtu);
>> -       else
>> -               EXAMPLE_ERR("odp_pktio_mtu: unable to get mtu\n");
>> -
>> -       printf("  [%02i] created pktio:%02i, burst mode\n",
>> -              thr, pktio);
>> +       printf("  [%02i] looked up pktio:%02i, burst mode\n", thr, pktio);
>>
>>         /* Loop packets */
>>         for (;;) {
>> @@ -376,6 +342,10 @@ int main(int argc, char *argv[])
>>         }
>>         odp_buffer_pool_print(pool);
>>
>> +       /* Create a pktio instance for each interface */
>> +       for (i = 0; i < args->appl.if_count; ++i)
>> +               create_pktio(args->appl.if_names[i], pool);
>> +
>>         /* Create and init worker threads */
>>         memset(thread_tbl, 0, sizeof(thread_tbl));
>>         for (i = 0; i < num_workers; ++i) {
>> @@ -388,7 +358,6 @@ int main(int argc, char *argv[])
>>                 if_idx = i % args->appl.if_count;
>>
>>                 args->thread[i].pktio_dev = args->appl.if_names[if_idx];
>> -               args->thread[i].pool = pool;
>>                 args->thread[i].mode = args->appl.mode;
>>
>>                 if (args->appl.mode == APPL_MODE_PKT_BURST)
>> --
>> 2.1.1
>>
>>
>>
>> _______________________________________________
>> lng-odp mailing list
>> [email protected]
>> http://lists.linaro.org/mailman/listinfo/lng-odp
>>
>
>
_______________________________________________
lng-odp mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to