On 27 November 2014 at 18:56, Stuart Haslam <[email protected]> wrote:

> Attempts to enq to a pktin queue or deq from a pktout queue are
> programming errors, so abort.
> [Alex] Is this an ODP convention valid for all implementations? I f we
> talk about HW I think these are debatable and SoC dependent.

In the most general case a queue may have multiple producers and multiple
> consumers. For example FSL DPAA does not impose any restriction on enqueue
> - any accelerator(port) or core can enqueue on any queue by placing
> commands to Queue manager block.  However, on dequeue, for pktout queues
> (assumed to be consumed by a  singleTx port) only the port can dequeue.




> Signed-off-by: Stuart Haslam <[email protected]>
> ---
> (This code contribution is provided under the terms of agreement
> LES-LTM-21309)
>
>  platform/linux-generic/odp_packet_io.c | 22 ++++++++++++++++++----
>  1 file changed, 18 insertions(+), 4 deletions(-)
>
> diff --git a/platform/linux-generic/odp_packet_io.c
> b/platform/linux-generic/odp_packet_io.c
> index f527e45..161f2ce 100644
> --- a/platform/linux-generic/odp_packet_io.c
> +++ b/platform/linux-generic/odp_packet_io.c
> @@ -384,6 +384,9 @@ int pktout_enqueue(queue_entry_t *qentry,
> odp_buffer_hdr_t *buf_hdr)
>  odp_buffer_hdr_t *pktout_dequeue(queue_entry_t *qentry)
>  {
>         (void)qentry;
> +
> +       ODP_ABORT("attempted dequeue from a pktout queue");
> +
>         return NULL;
>  }
>
> @@ -408,13 +411,19 @@ int pktout_deq_multi(queue_entry_t *qentry,
> odp_buffer_hdr_t *buf_hdr[],
>         (void)buf_hdr;
>         (void)num;
>
> +       ODP_ABORT("attempted dequeue from a pktout queue");
> +
>         return 0;
>  }
>
>  int pktin_enqueue(queue_entry_t *qentry, odp_buffer_hdr_t *buf_hdr)
>  {
> -       /* Use default action */
> -       return queue_enq(qentry, buf_hdr);
> +       (void)qentry;
> +       (void)buf_hdr;
> +
> +       ODP_ABORT("attempted enqueue to a pktin queue");
> +
> +       return -1;
>  }
>
>  odp_buffer_hdr_t *pktin_dequeue(queue_entry_t *qentry)
> @@ -445,8 +454,13 @@ odp_buffer_hdr_t *pktin_dequeue(queue_entry_t *qentry)
>
>  int pktin_enq_multi(queue_entry_t *qentry, odp_buffer_hdr_t *buf_hdr[],
> int num)
>  {
> -       /* Use default action */
> -       return queue_enq_multi(qentry, buf_hdr, num);
> +       (void)qentry;
> +       (void)buf_hdr;
> +       (void)num;
> +
> +       ODP_ABORT("attempted enqueue to a pktin queue");
> +
> +       return 0;
>  }
>
>  int pktin_deq_multi(queue_entry_t *qentry, odp_buffer_hdr_t *buf_hdr[],
> int num)
> --
> 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