On Fri, Nov 28, 2014 at 09:48:29AM +0000, Alexandru Badicioiu wrote:
> 
> 
> On 27 November 2014 at 18:56, Stuart Haslam 
> <[email protected]<mailto:[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.
> 

Behaviour needs to be consistent across implementations so if there are
valid use cases for enqueue to a pktio inq, and they can be supported,
we need to define the semantics as it's currently not clear.

Taras, I see the keystone implementation currently doesn't support
enqueue to a pktio inq, is that because the platform doesn't support it
or it's just not implemented?

--
Stuart.

> 
> Signed-off-by: Stuart Haslam 
> <[email protected]<mailto:[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

-- 
Stuart.


_______________________________________________
lng-odp mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to