To mix things, api-next introduces queue hashing *within* a CoS. But also there 
you use odp_cls_cos_queues() to get the implementation created queue handles, 
not odp_pktin_event_queue().

-Petri


> -----Original Message-----
> From: Savolainen, Petri (Nokia - FI/Espoo)
> Sent: Friday, November 10, 2017 1:13 PM
> To: 'Liron Himi' <lir...@marvell.com>; Bala Manoharan
> <bala.manoha...@linaro.org>
> Cc: lng-odp@lists.linaro.org
> Subject: RE: [EXT] Re: [lng-odp] classifier with pktio in
> ODP_PKTIN_MODE_QUEUE
> 
> odp_pktin_event_queue() is *not* used when classifier is enabled.
> 
> odp_queue_deq(q)
>   1) if q has events, return an event
>   2) if q does not have events, poll packet input
>      * packet input poll finds a packet
>      * classify the packet
>      * enqueue the packet into an event queue
>      * some later odp_queue_deq() call will find the packet from the queue
> (not necessary q, but the destination queue of the CoS)
> 
> -Petri
> 
> 
> > -----Original Message-----
> > From: Liron Himi [mailto:lir...@marvell.com]
> > Sent: Friday, November 10, 2017 12:23 PM
> > To: Bala Manoharan <bala.manoha...@linaro.org>; Savolainen, Petri (Nokia
> -
> > FI/Espoo) <petri.savolai...@nokia.com>
> > Cc: lng-odp@lists.linaro.org; Liron Himi <lir...@marvell.com>
> > Subject: RE: [EXT] Re: [lng-odp] classifier with pktio in
> > ODP_PKTIN_MODE_QUEUE
> >
> > Hi,
> >
> > I understand what you are saying, but I don't understand (probably I
> miss
> > something here) how classifier is working in PKTIO in a
> > ODP_PKTIN_MODE_QUEUE mode.
> > Application create its own queues, associate them to the cos and connect
> > them to the classifier.
> > In order to receive packets, application will call ' odp_queue_deq()'.
> But
> > how the packets will be enqueued to this queue?
> > Who will call ' odp_pktin_recv' to receive the packets, as in the
> schedule
> > mode case?
> >
> > Consider the following scenario and let me know if it is acceptable:
> > Application wants to configure classifier but doesn't want to use the
> odp-
> > schedule. So,
> > - PKTIO is configure with ' ODP_PKTIN_MODE_QUEUE' mode and classifier
> > enable.
> > - application will call ' odp_pktin_event_queue' to get all pktio's
> event
> > queues.
> > - application will associate those queues in the desired cos and
> configure
> > the classifier with them.
> > - application will call ' odp_queue_deq()' and as a result the '
> > odp_pktin_recv' will be triggered (as it is a PKTIO's event queue).
> >     Implementation should not set the 'dst_queue' in this mode and
> > as a result the packet will be return to originated queue.
> >
> > Liron
> >
> > -----Original Message-----
> > From: Bala Manoharan [mailto:bala.manoha...@linaro.org]
> > Sent: Friday, November 10, 2017 11:27
> > To: Liron Himi <lir...@marvell.com>
> > Cc: lng-odp@lists.linaro.org
> > Subject: Re: [EXT] Re: [lng-odp] classifier with pktio in
> > ODP_PKTIN_MODE_QUEUE
> >
> > Comments inline...
> >
> > On 10 November 2017 at 12:01, Liron Himi <lir...@marvell.com> wrote:
> > > Hi Bala,
> > >
> > > According to the documentation, classifier can be operate with
> > PKTIN_QUEUE_MODE.
> > >         /** Enable classifier
> > >           *
> > >           * * 0: Classifier is disabled (default)
> > >           * * 1: Classifier is enabled. Use classifier to direct
> > incoming
> > >           *      packets into pktin event queues. Classifier can be
> > enabled
> > >           *      only in ODP_PKTIN_MODE_SCHED and ODP_PKTIN_MODE_QUEUE
> > modes.
> > >           *      Both classifier and hashing cannot be enabled
> > simultaneously
> > >           *      ('hash_enable' must be 0). */
> > >         odp_bool_t classifier_enable;
> > >
> > > So, Is there a mistake in the documentation or this combination should
> > be supported?
> >
> > odp_pktin_event_queue() can only be used when hashing is enabled since
> > when you connect more than one queue to pktio you need some mechanism to
> > spread the traffic. This configuration is given using
> > odp_pktin_hash_proto_t which is valid only when hashing is enabled.
> >
> > Since classifier and hashing are orthogonal you cannot use
> classification
> > and get packets using event queues configured using
> > odp_pktin_event_queue().
> > Packets delivered after classification can be received by application
> > either using odp_queue_deq() or odp_schedule() function depending upon
> the
> > dst_queue configured with CoS.
> >
> > Regards,
> > Bala
> >
> > >
> > > Liron
> > >
> > > -----Original Message-----
> > > From: Bala Manoharan [mailto:bala.manoha...@linaro.org]
> > > Sent: Friday, November 10, 2017 07:18
> > > To: Liron Himi <lir...@marvell.com>
> > > Cc: lng-odp@lists.linaro.org
> > > Subject: [EXT] Re: [lng-odp] classifier with pktio in
> > > ODP_PKTIN_MODE_QUEUE
> > >
> > > External Email
> > >
> > > ----------------------------------------------------------------------
> > > Hi,
> > >
> > > Both these modes cannot co-exist.
> > >
> > > There is a parameter 'classifier_enable' and 'hash_enable' as part of
> > odp_pktin_queue_param_t which is used to identify whether classifier or
> > hashing is enabled for a particular pktio interface.
> > > Both classifier and hash configuration are orthogonal and only one of
> > the two can be enabled at any time. When you configure classification on
> > the pktio interface then the packets will be routed only through
> > classifier 'dst_queue' and not through event queues configured with the
> > pktio interface and vice versa for 'hash_enable'.
> > >
> > > odp_pktin_event_queue() API is useful only for platforms which do not
> > support classifier system. This is mainly targetted for HWs which only
> > have RSS configured on the pktio and does not support flow-based
> > classification. The same is documented in odp_pktin_queue_param_t
> > structure pls check the documentation and let us know if you find any
> > discrepancy.
> > >
> > > Hope this clarifies,
> > > Bala
> > >
> > >
> > > On 9 November 2017 at 23:04, Liron Himi <lir...@marvell.com> wrote:
> > >> Hi,
> > >>
> > >> I'm trying to understand how odp-classifier can work with PKTIO in
> > ODP_PKTIN_MODE_QUEUE mode, as this combination is allow in the API.
> > >> When configuring PKTIO in ODP_PKTIN_MODE_QUEUE then application
> should
> > call 'odp_pktin_event_queue' to retrieve the odp-queues.
> > >> When application create a cos, to be used for classification, does it
> > needs to create new odp-queue or used the pktio's ones?
> > >> When application wants to receive packets from this PKTIO, it needs
> to
> > call 'odp_queue_deq_multi' on one of the PKTIO's queues,right?
> > >> As a result of a received packet, the matched cos is being selected
> and
> > it's queue is being set as the dst_queue of the packet.
> > >> Then the 'pktin_recv_buf' function will enqueuer this packet to the
> > 'dst_queue' if it was set.
> > >> So finally the packet will be located at the cos's queue and not at
> > >> the PKTIO's queue and the application will get zero packets from
> > 'odp_queue_deq_multi'.
> > >> So, either this mode isn't supported with classifier or if this mode
> is
> > set then the 'dst_queue' shouldn't be set and the packets will be
> located
> > at the PKTIO's queue.
> > >>
> > >> Regards,
> > >> Liron
> > >>

Reply via email to