As this is a change of API, it should probably be tagged [API-NEXT] instead of 
[PATCH].

>From a quick look, all the tests should keep working (several of them are 
>using ODP_CONFIG_PACKET_HEADROOM), but it may be worth adding a new validation 
>test to ensure this new feature works.

This raises an interesting question: who does this headroom belongs to?
We are looking at using it in our implementation (ODP side) to store some 
metadata generated by the HW.
If the user does the same, it could (will?) go horribly wrong.

On 07/15/2015 05:47 PM, Genis Riera wrote:
> A new headroom parameter is added to odp_pool_param_t when the pool is type 
> of ODP_POOL_PACKET, so that headroom size could be configured at pool 
> initialization time (ODP application runtime).
>
> Signed-off-by: Genis Riera Perez <[email protected] 
> <mailto:[email protected]>>
> --
>  include/odp/api/pool.h            |  5 +++++
>  platform/linux-generic/odp_pool.c | 10 +++++++++-
>  2 files changed, 14 insertions(+), 1 deletion(-)
>
> diff --git a/include/odp/api/pool.h b/include/odp/api/pool.h
> index e5061ab..913f510 100644
> --- a/include/odp/api/pool.h
> +++ b/include/odp/api/pool.h
> @@ -82,6 +82,11 @@ typedef struct odp_pool_param_t {
>                         /** User area size in bytes. Specify as 0 if no user
>                             area is needed. */
>                         uint32_t uarea_size;
> +
> +                       /** Packet headroom size in bytes. The maximum and the
> +                           default value is defined by 
> ODP_CONFIG_PACKET_HEADROOM.
> +                           Use 0 for default. */
> +                       uint32_t headroom;
>                 } pkt;
>                 struct {
>                         /** Number of timeouts in the pool */
> diff --git a/platform/linux-generic/odp_pool.c 
> b/platform/linux-generic/odp_pool.c
> index dcbdf07..9359e53 100644
> --- a/platform/linux-generic/odp_pool.c
> +++ b/platform/linux-generic/odp_pool.c
> @@ -201,7 +201,15 @@ odp_pool_t odp_pool_create(const char *name,
>  
>         case ODP_POOL_PACKET:
>                 unseg = 0; /* Packets are always segmented */
> -               headroom = ODP_CONFIG_PACKET_HEADROOM;
> +
> +               /* If headroom is not specified by params,
> +                  set it to the default */
> +               if (params->pkt.headroom <= 0 ||
> +                   params->pkt.headroom > ODP_CONFIG_PACKET_HEADROOM)
> +                       headroom = ODP_CONFIG_PACKET_HEADROOM;
> +               else
> +                       headroom = params->pkt.headroom;
> +
>                 tailroom = ODP_CONFIG_PACKET_TAILROOM;
>                 buf_num = params->pkt.num;
>
>
> Genís Riera Pérez
> Software Engineer at StarFlow Networks
> Edifici K2M, S103 c/ Jordi Girona 31
> 08034 Barcelona
>
> E-mail: [email protected] <mailto:[email protected]>
>
>
> _______________________________________________
> lng-odp mailing list
> [email protected]
> https://lists.linaro.org/mailman/listinfo/lng-odp

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

Reply via email to