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
