On Wed, Dec 17, 2014 at 01:56:56PM +0000, Maxim Uvarov wrote:
> odp_pktio_inq_remdef() calls odp_pktio_inq_setdef() with
> ODP_QUEUE_INVALID. odp_pktio_inq_setdef should set up
> ODP_QUEUE_INVALID to pktio instead of returning with error.
> 
> Signed-off-by: Maxim Uvarov <[email protected]>
> ---
>  platform/linux-generic/odp_packet_io.c | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/platform/linux-generic/odp_packet_io.c 
> b/platform/linux-generic/odp_packet_io.c
> index 3ca8100..4e54658 100644
> --- a/platform/linux-generic/odp_packet_io.c
> +++ b/platform/linux-generic/odp_packet_io.c
> @@ -367,9 +367,16 @@ int odp_pktio_inq_setdef(odp_pktio_t id, odp_queue_t 
> queue)
>       pktio_entry_t *pktio_entry = get_pktio_entry(id);
>       queue_entry_t *qentry;
>  
> -     if (pktio_entry == NULL || queue == ODP_QUEUE_INVALID)
> +     if (pktio_entry == NULL)
>               return -1;
>  
> +     if (queue == ODP_QUEUE_INVALID) {
> +             lock_entry(pktio_entry);
> +             pktio_entry->s.inq_default = ODP_QUEUE_INVALID;
> +             unlock_entry(pktio_entry);

You could've avoided this duplicated chunk of code by just shuffling the
existing code around and adding an early return for an INVALID queue.

> +             return 0;
> +     }
> +
>       qentry = queue_to_qentry(queue);
>  
>       if (qentry->s.type != ODP_QUEUE_TYPE_PKTIN)
> -- 
> 1.8.5.1.163.gd7aced9
> 

My main concern though is that setdef and remdef are not symmetric.
setdef not only sets the queue as the default for the pktio (which is
only used when the application calls getdef) but also sets the pktin for
the queue and schedules it. With this change, after calling remdef the
previous default inq is still being scheduled, is that what the caller
expected and how do they now remove it from the scheduler if required?

-- 
Stuart.


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

Reply via email to