diff mbox

[API-NEXT,PATCHv2,2/5] linux-generic: internal header file changes to support odp_cls_cos_pool_set() api

Message ID 1448273572-27435-2-git-send-email-bala.manoharan@linaro.org
State New
Headers show

Commit Message

Balasubramanian Manoharan Nov. 23, 2015, 10:12 a.m. UTC
Adds linux-generic internal api's and modify internal structs to support
configuring packet pool to CoS.

Signed-off-by: Balasubramanian Manoharan <bala.manoharan@linaro.org>
---
 platform/linux-generic/include/odp_classification_datamodel.h | 1 +
 platform/linux-generic/include/odp_classification_internal.h  | 3 +++
 platform/linux-generic/include/odp_packet_internal.h          | 8 +++++++-
 platform/linux-generic/include/odp_packet_io_internal.h       | 4 ++++
 platform/linux-generic/include/odp_packet_socket.h            | 2 ++
 5 files changed, 17 insertions(+), 1 deletion(-)

Comments

Bill Fischofer Nov. 24, 2015, 12:33 a.m. UTC | #1
apply-and-build fails for Part 2:

Making all in platform/linux-generic
make[1]: Entering directory
'/home/bill/linaro/check-odp/build/odp-apply/platform/linux-generic'
  CC       odp_barrier.lo
  CC       odp_buffer.lo
  CC       odp_classification.lo
  CC       odp_cpu.lo
  CC       odp_cpumask.lo
  CC       odp_cpumask_task.lo
  CC       odp_crypto.lo
  CC       odp_errno.lo
  CC       odp_event.lo
  CC       odp_hash.lo
  CC       odp_init.lo
  CC       odp_impl.lo
  CC       odp_packet.lo
  CC       odp_packet_flags.lo
  CC       odp_packet_io.lo
odp_packet.c:35:6: error: conflicting types for 'packet_parse_reset'
 void packet_parse_reset(odp_packet_t pkt)
      ^
In file included from odp_packet.c:8:0:
./include/odp_packet_internal.h:248:6: note: previous declaration of
'packet_parse_reset' was here
 void packet_parse_reset(odp_packet_hdr_t *pkt_hdr);
      ^
Makefile:735: recipe for target 'odp_packet.lo' failed
make[1]: *** [odp_packet.lo] Error 1

On Mon, Nov 23, 2015 at 4:12 AM, Balasubramanian Manoharan <
bala.manoharan@linaro.org> wrote:

> Adds linux-generic internal api's and modify internal structs to support

> configuring packet pool to CoS.

>

> Signed-off-by: Balasubramanian Manoharan <bala.manoharan@linaro.org>

> ---

>  platform/linux-generic/include/odp_classification_datamodel.h | 1 +

>  platform/linux-generic/include/odp_classification_internal.h  | 3 +++

>  platform/linux-generic/include/odp_packet_internal.h          | 8 +++++++-

>  platform/linux-generic/include/odp_packet_io_internal.h       | 4 ++++

>  platform/linux-generic/include/odp_packet_socket.h            | 2 ++

>  5 files changed, 17 insertions(+), 1 deletion(-)

>

> diff --git a/platform/linux-generic/include/odp_classification_datamodel.h

> b/platform/linux-generic/include/odp_classification_datamodel.h

> index 4358fca..3569e9c 100644

> --- a/platform/linux-generic/include/odp_classification_datamodel.h

> +++ b/platform/linux-generic/include/odp_classification_datamodel.h

> @@ -67,6 +67,7 @@ Class Of Service

>  struct cos_s {

>         queue_entry_t *queue;           /* Associated Queue */

>         pool_entry_t *pool;             /* Associated Buffer pool */

> +       odp_pool_t pool_id;             /* Associated pool handle */

>         union pmr_u *pmr;               /* Chained PMR */

>         union cos_u *linked_cos;        /* CoS linked with the PMR */

>         uint32_t valid;                 /* validity Flag */

> diff --git a/platform/linux-generic/include/odp_classification_internal.h

> b/platform/linux-generic/include/odp_classification_internal.h

> index 5593280..7e46986 100644

> --- a/platform/linux-generic/include/odp_classification_internal.h

> +++ b/platform/linux-generic/include/odp_classification_internal.h

> @@ -61,6 +61,9 @@ This function calls Classifier module internal functions

> for a given packet and

>  enqueues the packet to specific Queue based on PMR and CoS selected.

>  **/

>  int packet_classifier(odp_pktio_t pktio, odp_packet_t pkt);

> +

> +int _odp_packet_classifier(pktio_entry_t *entry, odp_packet_t pkt);

> +

>  /**

>  Packet IO classifier init

>

> diff --git a/platform/linux-generic/include/odp_packet_internal.h

> b/platform/linux-generic/include/odp_packet_internal.h

> index 6f1521c..12e9cca 100644

> --- a/platform/linux-generic/include/odp_packet_internal.h

> +++ b/platform/linux-generic/include/odp_packet_internal.h

> @@ -28,6 +28,8 @@ extern "C" {

>  #include <odp/crypto.h>

>  #include <odp_crypto_internal.h>

>

> +#define PACKET_JUMBO_LEN       (9 * 1024)

> +

>  /**

>   * Packet input & protocol flags

>   */

> @@ -243,7 +245,7 @@ void packet_parse_l2(odp_packet_hdr_t *pkt_hdr);

>  int packet_parse_full(odp_packet_hdr_t *pkt_hdr);

>

>  /* Reset parser metadata for a new parse */

> -void packet_parse_reset(odp_packet_t pkt);

> +void packet_parse_reset(odp_packet_hdr_t *pkt_hdr);

>

>  /* Convert a packet handle to a buffer handle */

>  odp_buffer_t _odp_packet_to_buffer(odp_packet_t pkt);

> @@ -251,6 +253,10 @@ odp_buffer_t _odp_packet_to_buffer(odp_packet_t pkt);

>  /* Convert a buffer handle to a packet handle */

>  odp_packet_t _odp_packet_from_buffer(odp_buffer_t buf);

>

> +int _odp_parse_common(odp_packet_hdr_t *pkt_hdr, const uint8_t *parseptr);

> +

> +int _odp_cls_parse(odp_packet_hdr_t *pkt_hdr, const uint8_t *parseptr);

> +

>  #ifdef __cplusplus

>  }

>  #endif

> diff --git a/platform/linux-generic/include/odp_packet_io_internal.h

> b/platform/linux-generic/include/odp_packet_io_internal.h

> index a46c6fe..1f79f9c 100644

> --- a/platform/linux-generic/include/odp_packet_io_internal.h

> +++ b/platform/linux-generic/include/odp_packet_io_internal.h

> @@ -86,6 +86,7 @@ struct pktio_entry {

>         classifier_t cls;               /**< classifier linked with this

> pktio*/

>         char name[PKTIO_NAME_LEN];      /**< name of pktio provided to

>                                            pktio_open() */

> +       odp_pktio_t id;

>         odp_pktio_param_t param;

>  };

>

> @@ -118,6 +119,9 @@ typedef struct pktio_if_ops {

>         int (*mac_get)(pktio_entry_t *pktio_entry, void *mac_addr);

>  } pktio_if_ops_t;

>

> +int _odp_packet_cls_enq(pktio_entry_t *pktio_entry, uint8_t *base,

> +                       uint16_t buf_len, odp_packet_t *pkt_ret);

> +

>  extern void *pktio_entry_ptr[];

>

>  static inline int pktio_to_id(odp_pktio_t pktio)

> diff --git a/platform/linux-generic/include/odp_packet_socket.h

> b/platform/linux-generic/include/odp_packet_socket.h

> index a5e0eb3..1eaafb7 100644

> --- a/platform/linux-generic/include/odp_packet_socket.h

> +++ b/platform/linux-generic/include/odp_packet_socket.h

> @@ -44,6 +44,8 @@ typedef struct {

>         int sockfd; /**< socket descriptor */

>         odp_pool_t pool; /**< pool to alloc packets from */

>         unsigned char if_mac[ETH_ALEN]; /**< IF eth mac addr */

> +       uint8_t *cache_ptr[ODP_PACKET_SOCKET_MAX_BURST_RX];

> +       odp_shm_t shm;

>  } pkt_sock_t;

>

>  /** packet mmap ring */

> --

> 1.9.1

>

> _______________________________________________

> lng-odp mailing list

> lng-odp@lists.linaro.org

> https://lists.linaro.org/mailman/listinfo/lng-odp

>
Balasubramanian Manoharan Nov. 24, 2015, 5:23 a.m. UTC | #2
Hi Bill,

I just tried the build and it seems to work fine on the latest API-NEXT branch.

Did you mean it is not working after applying only part 2 of the patch
ignoring the rest? All the 5 patches are dependent on each other since
the changes are across two modules classification and pktio.

I can redo the patches to make them individually compilable if it is a
must requirement but I would prefer review comments on this series so
that I can update them together in the next version.

Regards,
Bala

On 24 November 2015 at 06:03, Bill Fischofer <bill.fischofer@linaro.org> wrote:
> apply-and-build fails for Part 2:
>
> Making all in platform/linux-generic
> make[1]: Entering directory
> '/home/bill/linaro/check-odp/build/odp-apply/platform/linux-generic'
>   CC       odp_barrier.lo
>   CC       odp_buffer.lo
>   CC       odp_classification.lo
>   CC       odp_cpu.lo
>   CC       odp_cpumask.lo
>   CC       odp_cpumask_task.lo
>   CC       odp_crypto.lo
>   CC       odp_errno.lo
>   CC       odp_event.lo
>   CC       odp_hash.lo
>   CC       odp_init.lo
>   CC       odp_impl.lo
>   CC       odp_packet.lo
>   CC       odp_packet_flags.lo
>   CC       odp_packet_io.lo
> odp_packet.c:35:6: error: conflicting types for 'packet_parse_reset'
>  void packet_parse_reset(odp_packet_t pkt)
>       ^
> In file included from odp_packet.c:8:0:
> ./include/odp_packet_internal.h:248:6: note: previous declaration of
> 'packet_parse_reset' was here
>  void packet_parse_reset(odp_packet_hdr_t *pkt_hdr);
>       ^
> Makefile:735: recipe for target 'odp_packet.lo' failed
> make[1]: *** [odp_packet.lo] Error 1
>
> On Mon, Nov 23, 2015 at 4:12 AM, Balasubramanian Manoharan
> <bala.manoharan@linaro.org> wrote:
>>
>> Adds linux-generic internal api's and modify internal structs to support
>> configuring packet pool to CoS.
>>
>> Signed-off-by: Balasubramanian Manoharan <bala.manoharan@linaro.org>
>> ---
>>  platform/linux-generic/include/odp_classification_datamodel.h | 1 +
>>  platform/linux-generic/include/odp_classification_internal.h  | 3 +++
>>  platform/linux-generic/include/odp_packet_internal.h          | 8
>> +++++++-
>>  platform/linux-generic/include/odp_packet_io_internal.h       | 4 ++++
>>  platform/linux-generic/include/odp_packet_socket.h            | 2 ++
>>  5 files changed, 17 insertions(+), 1 deletion(-)
>>
>> diff --git a/platform/linux-generic/include/odp_classification_datamodel.h
>> b/platform/linux-generic/include/odp_classification_datamodel.h
>> index 4358fca..3569e9c 100644
>> --- a/platform/linux-generic/include/odp_classification_datamodel.h
>> +++ b/platform/linux-generic/include/odp_classification_datamodel.h
>> @@ -67,6 +67,7 @@ Class Of Service
>>  struct cos_s {
>>         queue_entry_t *queue;           /* Associated Queue */
>>         pool_entry_t *pool;             /* Associated Buffer pool */
>> +       odp_pool_t pool_id;             /* Associated pool handle */
>>         union pmr_u *pmr;               /* Chained PMR */
>>         union cos_u *linked_cos;        /* CoS linked with the PMR */
>>         uint32_t valid;                 /* validity Flag */
>> diff --git a/platform/linux-generic/include/odp_classification_internal.h
>> b/platform/linux-generic/include/odp_classification_internal.h
>> index 5593280..7e46986 100644
>> --- a/platform/linux-generic/include/odp_classification_internal.h
>> +++ b/platform/linux-generic/include/odp_classification_internal.h
>> @@ -61,6 +61,9 @@ This function calls Classifier module internal functions
>> for a given packet and
>>  enqueues the packet to specific Queue based on PMR and CoS selected.
>>  **/
>>  int packet_classifier(odp_pktio_t pktio, odp_packet_t pkt);
>> +
>> +int _odp_packet_classifier(pktio_entry_t *entry, odp_packet_t pkt);
>> +
>>  /**
>>  Packet IO classifier init
>>
>> diff --git a/platform/linux-generic/include/odp_packet_internal.h
>> b/platform/linux-generic/include/odp_packet_internal.h
>> index 6f1521c..12e9cca 100644
>> --- a/platform/linux-generic/include/odp_packet_internal.h
>> +++ b/platform/linux-generic/include/odp_packet_internal.h
>> @@ -28,6 +28,8 @@ extern "C" {
>>  #include <odp/crypto.h>
>>  #include <odp_crypto_internal.h>
>>
>> +#define PACKET_JUMBO_LEN       (9 * 1024)
>> +
>>  /**
>>   * Packet input & protocol flags
>>   */
>> @@ -243,7 +245,7 @@ void packet_parse_l2(odp_packet_hdr_t *pkt_hdr);
>>  int packet_parse_full(odp_packet_hdr_t *pkt_hdr);
>>
>>  /* Reset parser metadata for a new parse */
>> -void packet_parse_reset(odp_packet_t pkt);
>> +void packet_parse_reset(odp_packet_hdr_t *pkt_hdr);
>>
>>  /* Convert a packet handle to a buffer handle */
>>  odp_buffer_t _odp_packet_to_buffer(odp_packet_t pkt);
>> @@ -251,6 +253,10 @@ odp_buffer_t _odp_packet_to_buffer(odp_packet_t pkt);
>>  /* Convert a buffer handle to a packet handle */
>>  odp_packet_t _odp_packet_from_buffer(odp_buffer_t buf);
>>
>> +int _odp_parse_common(odp_packet_hdr_t *pkt_hdr, const uint8_t
>> *parseptr);
>> +
>> +int _odp_cls_parse(odp_packet_hdr_t *pkt_hdr, const uint8_t *parseptr);
>> +
>>  #ifdef __cplusplus
>>  }
>>  #endif
>> diff --git a/platform/linux-generic/include/odp_packet_io_internal.h
>> b/platform/linux-generic/include/odp_packet_io_internal.h
>> index a46c6fe..1f79f9c 100644
>> --- a/platform/linux-generic/include/odp_packet_io_internal.h
>> +++ b/platform/linux-generic/include/odp_packet_io_internal.h
>> @@ -86,6 +86,7 @@ struct pktio_entry {
>>         classifier_t cls;               /**< classifier linked with this
>> pktio*/
>>         char name[PKTIO_NAME_LEN];      /**< name of pktio provided to
>>                                            pktio_open() */
>> +       odp_pktio_t id;
>>         odp_pktio_param_t param;
>>  };
>>
>> @@ -118,6 +119,9 @@ typedef struct pktio_if_ops {
>>         int (*mac_get)(pktio_entry_t *pktio_entry, void *mac_addr);
>>  } pktio_if_ops_t;
>>
>> +int _odp_packet_cls_enq(pktio_entry_t *pktio_entry, uint8_t *base,
>> +                       uint16_t buf_len, odp_packet_t *pkt_ret);
>> +
>>  extern void *pktio_entry_ptr[];
>>
>>  static inline int pktio_to_id(odp_pktio_t pktio)
>> diff --git a/platform/linux-generic/include/odp_packet_socket.h
>> b/platform/linux-generic/include/odp_packet_socket.h
>> index a5e0eb3..1eaafb7 100644
>> --- a/platform/linux-generic/include/odp_packet_socket.h
>> +++ b/platform/linux-generic/include/odp_packet_socket.h
>> @@ -44,6 +44,8 @@ typedef struct {
>>         int sockfd; /**< socket descriptor */
>>         odp_pool_t pool; /**< pool to alloc packets from */
>>         unsigned char if_mac[ETH_ALEN]; /**< IF eth mac addr */
>> +       uint8_t *cache_ptr[ODP_PACKET_SOCKET_MAX_BURST_RX];
>> +       odp_shm_t shm;
>>  } pkt_sock_t;
>>
>>  /** packet mmap ring */
>> --
>> 1.9.1
>>
>> _______________________________________________
>> lng-odp mailing list
>> lng-odp@lists.linaro.org
>> https://lists.linaro.org/mailman/listinfo/lng-odp
>
>
Bill Fischofer Nov. 24, 2015, 9:38 a.m. UTC | #3
I ran the ./apply-and-build.sh script in check_odp, which, among other
things, tests whether the patch series is properly organized such that the
result is buildable and the validation tests pass after each part is
applied sequentially (necessary for biscectabilty of a patch series).  It
reports that Part 1 is OK, but the build fails after Part 2, implying that
Part 2 is incomplete and requires items only found in subsequent parts.

On Mon, Nov 23, 2015 at 11:23 PM, Bala Manoharan <bala.manoharan@linaro.org>
wrote:

> Hi Bill,

>

> I just tried the build and it seems to work fine on the latest API-NEXT

> branch.

>

> Did you mean it is not working after applying only part 2 of the patch

> ignoring the rest? All the 5 patches are dependent on each other since

> the changes are across two modules classification and pktio.

>

> I can redo the patches to make them individually compilable if it is a

> must requirement but I would prefer review comments on this series so

> that I can update them together in the next version.

>

> Regards,

> Bala

>

> On 24 November 2015 at 06:03, Bill Fischofer <bill.fischofer@linaro.org>

> wrote:

> > apply-and-build fails for Part 2:

> >

> > Making all in platform/linux-generic

> > make[1]: Entering directory

> > '/home/bill/linaro/check-odp/build/odp-apply/platform/linux-generic'

> >   CC       odp_barrier.lo

> >   CC       odp_buffer.lo

> >   CC       odp_classification.lo

> >   CC       odp_cpu.lo

> >   CC       odp_cpumask.lo

> >   CC       odp_cpumask_task.lo

> >   CC       odp_crypto.lo

> >   CC       odp_errno.lo

> >   CC       odp_event.lo

> >   CC       odp_hash.lo

> >   CC       odp_init.lo

> >   CC       odp_impl.lo

> >   CC       odp_packet.lo

> >   CC       odp_packet_flags.lo

> >   CC       odp_packet_io.lo

> > odp_packet.c:35:6: error: conflicting types for 'packet_parse_reset'

> >  void packet_parse_reset(odp_packet_t pkt)

> >       ^

> > In file included from odp_packet.c:8:0:

> > ./include/odp_packet_internal.h:248:6: note: previous declaration of

> > 'packet_parse_reset' was here

> >  void packet_parse_reset(odp_packet_hdr_t *pkt_hdr);

> >       ^

> > Makefile:735: recipe for target 'odp_packet.lo' failed

> > make[1]: *** [odp_packet.lo] Error 1

> >

> > On Mon, Nov 23, 2015 at 4:12 AM, Balasubramanian Manoharan

> > <bala.manoharan@linaro.org> wrote:

> >>

> >> Adds linux-generic internal api's and modify internal structs to support

> >> configuring packet pool to CoS.

> >>

> >> Signed-off-by: Balasubramanian Manoharan <bala.manoharan@linaro.org>

> >> ---

> >>  platform/linux-generic/include/odp_classification_datamodel.h | 1 +

> >>  platform/linux-generic/include/odp_classification_internal.h  | 3 +++

> >>  platform/linux-generic/include/odp_packet_internal.h          | 8

> >> +++++++-

> >>  platform/linux-generic/include/odp_packet_io_internal.h       | 4 ++++

> >>  platform/linux-generic/include/odp_packet_socket.h            | 2 ++

> >>  5 files changed, 17 insertions(+), 1 deletion(-)

> >>

> >> diff --git

> a/platform/linux-generic/include/odp_classification_datamodel.h

> >> b/platform/linux-generic/include/odp_classification_datamodel.h

> >> index 4358fca..3569e9c 100644

> >> --- a/platform/linux-generic/include/odp_classification_datamodel.h

> >> +++ b/platform/linux-generic/include/odp_classification_datamodel.h

> >> @@ -67,6 +67,7 @@ Class Of Service

> >>  struct cos_s {

> >>         queue_entry_t *queue;           /* Associated Queue */

> >>         pool_entry_t *pool;             /* Associated Buffer pool */

> >> +       odp_pool_t pool_id;             /* Associated pool handle */

> >>         union pmr_u *pmr;               /* Chained PMR */

> >>         union cos_u *linked_cos;        /* CoS linked with the PMR */

> >>         uint32_t valid;                 /* validity Flag */

> >> diff --git

> a/platform/linux-generic/include/odp_classification_internal.h

> >> b/platform/linux-generic/include/odp_classification_internal.h

> >> index 5593280..7e46986 100644

> >> --- a/platform/linux-generic/include/odp_classification_internal.h

> >> +++ b/platform/linux-generic/include/odp_classification_internal.h

> >> @@ -61,6 +61,9 @@ This function calls Classifier module internal

> functions

> >> for a given packet and

> >>  enqueues the packet to specific Queue based on PMR and CoS selected.

> >>  **/

> >>  int packet_classifier(odp_pktio_t pktio, odp_packet_t pkt);

> >> +

> >> +int _odp_packet_classifier(pktio_entry_t *entry, odp_packet_t pkt);

> >> +

> >>  /**

> >>  Packet IO classifier init

> >>

> >> diff --git a/platform/linux-generic/include/odp_packet_internal.h

> >> b/platform/linux-generic/include/odp_packet_internal.h

> >> index 6f1521c..12e9cca 100644

> >> --- a/platform/linux-generic/include/odp_packet_internal.h

> >> +++ b/platform/linux-generic/include/odp_packet_internal.h

> >> @@ -28,6 +28,8 @@ extern "C" {

> >>  #include <odp/crypto.h>

> >>  #include <odp_crypto_internal.h>

> >>

> >> +#define PACKET_JUMBO_LEN       (9 * 1024)

> >> +

> >>  /**

> >>   * Packet input & protocol flags

> >>   */

> >> @@ -243,7 +245,7 @@ void packet_parse_l2(odp_packet_hdr_t *pkt_hdr);

> >>  int packet_parse_full(odp_packet_hdr_t *pkt_hdr);

> >>

> >>  /* Reset parser metadata for a new parse */

> >> -void packet_parse_reset(odp_packet_t pkt);

> >> +void packet_parse_reset(odp_packet_hdr_t *pkt_hdr);

> >>

> >>  /* Convert a packet handle to a buffer handle */

> >>  odp_buffer_t _odp_packet_to_buffer(odp_packet_t pkt);

> >> @@ -251,6 +253,10 @@ odp_buffer_t _odp_packet_to_buffer(odp_packet_t

> pkt);

> >>  /* Convert a buffer handle to a packet handle */

> >>  odp_packet_t _odp_packet_from_buffer(odp_buffer_t buf);

> >>

> >> +int _odp_parse_common(odp_packet_hdr_t *pkt_hdr, const uint8_t

> >> *parseptr);

> >> +

> >> +int _odp_cls_parse(odp_packet_hdr_t *pkt_hdr, const uint8_t *parseptr);

> >> +

> >>  #ifdef __cplusplus

> >>  }

> >>  #endif

> >> diff --git a/platform/linux-generic/include/odp_packet_io_internal.h

> >> b/platform/linux-generic/include/odp_packet_io_internal.h

> >> index a46c6fe..1f79f9c 100644

> >> --- a/platform/linux-generic/include/odp_packet_io_internal.h

> >> +++ b/platform/linux-generic/include/odp_packet_io_internal.h

> >> @@ -86,6 +86,7 @@ struct pktio_entry {

> >>         classifier_t cls;               /**< classifier linked with this

> >> pktio*/

> >>         char name[PKTIO_NAME_LEN];      /**< name of pktio provided to

> >>                                            pktio_open() */

> >> +       odp_pktio_t id;

> >>         odp_pktio_param_t param;

> >>  };

> >>

> >> @@ -118,6 +119,9 @@ typedef struct pktio_if_ops {

> >>         int (*mac_get)(pktio_entry_t *pktio_entry, void *mac_addr);

> >>  } pktio_if_ops_t;

> >>

> >> +int _odp_packet_cls_enq(pktio_entry_t *pktio_entry, uint8_t *base,

> >> +                       uint16_t buf_len, odp_packet_t *pkt_ret);

> >> +

> >>  extern void *pktio_entry_ptr[];

> >>

> >>  static inline int pktio_to_id(odp_pktio_t pktio)

> >> diff --git a/platform/linux-generic/include/odp_packet_socket.h

> >> b/platform/linux-generic/include/odp_packet_socket.h

> >> index a5e0eb3..1eaafb7 100644

> >> --- a/platform/linux-generic/include/odp_packet_socket.h

> >> +++ b/platform/linux-generic/include/odp_packet_socket.h

> >> @@ -44,6 +44,8 @@ typedef struct {

> >>         int sockfd; /**< socket descriptor */

> >>         odp_pool_t pool; /**< pool to alloc packets from */

> >>         unsigned char if_mac[ETH_ALEN]; /**< IF eth mac addr */

> >> +       uint8_t *cache_ptr[ODP_PACKET_SOCKET_MAX_BURST_RX];

> >> +       odp_shm_t shm;

> >>  } pkt_sock_t;

> >>

> >>  /** packet mmap ring */

> >> --

> >> 1.9.1

> >>

> >> _______________________________________________

> >> lng-odp mailing list

> >> lng-odp@lists.linaro.org

> >> https://lists.linaro.org/mailman/listinfo/lng-odp

> >

> >

>
Balasubramanian Manoharan Nov. 24, 2015, 2:33 p.m. UTC | #4
Hi Bill,

As you have noted above, when all the 5 patches are applied together
they will compile fine but patch 2 depends on patch 3 and it does not
compile in parts as of now.

I would like to get review on the patches in this setup and before
upstreaming I will merge these patches to make sure they compile
individually.
Pls let me know your opinion on this

Regards,
Bala

On 24 November 2015 at 15:08, Bill Fischofer <bill.fischofer@linaro.org> wrote:
> I ran the ./apply-and-build.sh script in check_odp, which, among other
> things, tests whether the patch series is properly organized such that the
> result is buildable and the validation tests pass after each part is applied
> sequentially (necessary for biscectabilty of a patch series).  It reports
> that Part 1 is OK, but the build fails after Part 2, implying that Part 2 is
> incomplete and requires items only found in subsequent parts.
>
> On Mon, Nov 23, 2015 at 11:23 PM, Bala Manoharan <bala.manoharan@linaro.org>
> wrote:
>>
>> Hi Bill,
>>
>> I just tried the build and it seems to work fine on the latest API-NEXT
>> branch.
>>
>> Did you mean it is not working after applying only part 2 of the patch
>> ignoring the rest? All the 5 patches are dependent on each other since
>> the changes are across two modules classification and pktio.
>>
>> I can redo the patches to make them individually compilable if it is a
>> must requirement but I would prefer review comments on this series so
>> that I can update them together in the next version.
>>
>> Regards,
>> Bala
>>
>> On 24 November 2015 at 06:03, Bill Fischofer <bill.fischofer@linaro.org>
>> wrote:
>> > apply-and-build fails for Part 2:
>> >
>> > Making all in platform/linux-generic
>> > make[1]: Entering directory
>> > '/home/bill/linaro/check-odp/build/odp-apply/platform/linux-generic'
>> >   CC       odp_barrier.lo
>> >   CC       odp_buffer.lo
>> >   CC       odp_classification.lo
>> >   CC       odp_cpu.lo
>> >   CC       odp_cpumask.lo
>> >   CC       odp_cpumask_task.lo
>> >   CC       odp_crypto.lo
>> >   CC       odp_errno.lo
>> >   CC       odp_event.lo
>> >   CC       odp_hash.lo
>> >   CC       odp_init.lo
>> >   CC       odp_impl.lo
>> >   CC       odp_packet.lo
>> >   CC       odp_packet_flags.lo
>> >   CC       odp_packet_io.lo
>> > odp_packet.c:35:6: error: conflicting types for 'packet_parse_reset'
>> >  void packet_parse_reset(odp_packet_t pkt)
>> >       ^
>> > In file included from odp_packet.c:8:0:
>> > ./include/odp_packet_internal.h:248:6: note: previous declaration of
>> > 'packet_parse_reset' was here
>> >  void packet_parse_reset(odp_packet_hdr_t *pkt_hdr);
>> >       ^
>> > Makefile:735: recipe for target 'odp_packet.lo' failed
>> > make[1]: *** [odp_packet.lo] Error 1
>> >
>> > On Mon, Nov 23, 2015 at 4:12 AM, Balasubramanian Manoharan
>> > <bala.manoharan@linaro.org> wrote:
>> >>
>> >> Adds linux-generic internal api's and modify internal structs to
>> >> support
>> >> configuring packet pool to CoS.
>> >>
>> >> Signed-off-by: Balasubramanian Manoharan <bala.manoharan@linaro.org>
>> >> ---
>> >>  platform/linux-generic/include/odp_classification_datamodel.h | 1 +
>> >>  platform/linux-generic/include/odp_classification_internal.h  | 3 +++
>> >>  platform/linux-generic/include/odp_packet_internal.h          | 8
>> >> +++++++-
>> >>  platform/linux-generic/include/odp_packet_io_internal.h       | 4 ++++
>> >>  platform/linux-generic/include/odp_packet_socket.h            | 2 ++
>> >>  5 files changed, 17 insertions(+), 1 deletion(-)
>> >>
>> >> diff --git
>> >> a/platform/linux-generic/include/odp_classification_datamodel.h
>> >> b/platform/linux-generic/include/odp_classification_datamodel.h
>> >> index 4358fca..3569e9c 100644
>> >> --- a/platform/linux-generic/include/odp_classification_datamodel.h
>> >> +++ b/platform/linux-generic/include/odp_classification_datamodel.h
>> >> @@ -67,6 +67,7 @@ Class Of Service
>> >>  struct cos_s {
>> >>         queue_entry_t *queue;           /* Associated Queue */
>> >>         pool_entry_t *pool;             /* Associated Buffer pool */
>> >> +       odp_pool_t pool_id;             /* Associated pool handle */
>> >>         union pmr_u *pmr;               /* Chained PMR */
>> >>         union cos_u *linked_cos;        /* CoS linked with the PMR */
>> >>         uint32_t valid;                 /* validity Flag */
>> >> diff --git
>> >> a/platform/linux-generic/include/odp_classification_internal.h
>> >> b/platform/linux-generic/include/odp_classification_internal.h
>> >> index 5593280..7e46986 100644
>> >> --- a/platform/linux-generic/include/odp_classification_internal.h
>> >> +++ b/platform/linux-generic/include/odp_classification_internal.h
>> >> @@ -61,6 +61,9 @@ This function calls Classifier module internal
>> >> functions
>> >> for a given packet and
>> >>  enqueues the packet to specific Queue based on PMR and CoS selected.
>> >>  **/
>> >>  int packet_classifier(odp_pktio_t pktio, odp_packet_t pkt);
>> >> +
>> >> +int _odp_packet_classifier(pktio_entry_t *entry, odp_packet_t pkt);
>> >> +
>> >>  /**
>> >>  Packet IO classifier init
>> >>
>> >> diff --git a/platform/linux-generic/include/odp_packet_internal.h
>> >> b/platform/linux-generic/include/odp_packet_internal.h
>> >> index 6f1521c..12e9cca 100644
>> >> --- a/platform/linux-generic/include/odp_packet_internal.h
>> >> +++ b/platform/linux-generic/include/odp_packet_internal.h
>> >> @@ -28,6 +28,8 @@ extern "C" {
>> >>  #include <odp/crypto.h>
>> >>  #include <odp_crypto_internal.h>
>> >>
>> >> +#define PACKET_JUMBO_LEN       (9 * 1024)
>> >> +
>> >>  /**
>> >>   * Packet input & protocol flags
>> >>   */
>> >> @@ -243,7 +245,7 @@ void packet_parse_l2(odp_packet_hdr_t *pkt_hdr);
>> >>  int packet_parse_full(odp_packet_hdr_t *pkt_hdr);
>> >>
>> >>  /* Reset parser metadata for a new parse */
>> >> -void packet_parse_reset(odp_packet_t pkt);
>> >> +void packet_parse_reset(odp_packet_hdr_t *pkt_hdr);
>> >>
>> >>  /* Convert a packet handle to a buffer handle */
>> >>  odp_buffer_t _odp_packet_to_buffer(odp_packet_t pkt);
>> >> @@ -251,6 +253,10 @@ odp_buffer_t _odp_packet_to_buffer(odp_packet_t
>> >> pkt);
>> >>  /* Convert a buffer handle to a packet handle */
>> >>  odp_packet_t _odp_packet_from_buffer(odp_buffer_t buf);
>> >>
>> >> +int _odp_parse_common(odp_packet_hdr_t *pkt_hdr, const uint8_t
>> >> *parseptr);
>> >> +
>> >> +int _odp_cls_parse(odp_packet_hdr_t *pkt_hdr, const uint8_t
>> >> *parseptr);
>> >> +
>> >>  #ifdef __cplusplus
>> >>  }
>> >>  #endif
>> >> diff --git a/platform/linux-generic/include/odp_packet_io_internal.h
>> >> b/platform/linux-generic/include/odp_packet_io_internal.h
>> >> index a46c6fe..1f79f9c 100644
>> >> --- a/platform/linux-generic/include/odp_packet_io_internal.h
>> >> +++ b/platform/linux-generic/include/odp_packet_io_internal.h
>> >> @@ -86,6 +86,7 @@ struct pktio_entry {
>> >>         classifier_t cls;               /**< classifier linked with
>> >> this
>> >> pktio*/
>> >>         char name[PKTIO_NAME_LEN];      /**< name of pktio provided to
>> >>                                            pktio_open() */
>> >> +       odp_pktio_t id;
>> >>         odp_pktio_param_t param;
>> >>  };
>> >>
>> >> @@ -118,6 +119,9 @@ typedef struct pktio_if_ops {
>> >>         int (*mac_get)(pktio_entry_t *pktio_entry, void *mac_addr);
>> >>  } pktio_if_ops_t;
>> >>
>> >> +int _odp_packet_cls_enq(pktio_entry_t *pktio_entry, uint8_t *base,
>> >> +                       uint16_t buf_len, odp_packet_t *pkt_ret);
>> >> +
>> >>  extern void *pktio_entry_ptr[];
>> >>
>> >>  static inline int pktio_to_id(odp_pktio_t pktio)
>> >> diff --git a/platform/linux-generic/include/odp_packet_socket.h
>> >> b/platform/linux-generic/include/odp_packet_socket.h
>> >> index a5e0eb3..1eaafb7 100644
>> >> --- a/platform/linux-generic/include/odp_packet_socket.h
>> >> +++ b/platform/linux-generic/include/odp_packet_socket.h
>> >> @@ -44,6 +44,8 @@ typedef struct {
>> >>         int sockfd; /**< socket descriptor */
>> >>         odp_pool_t pool; /**< pool to alloc packets from */
>> >>         unsigned char if_mac[ETH_ALEN]; /**< IF eth mac addr */
>> >> +       uint8_t *cache_ptr[ODP_PACKET_SOCKET_MAX_BURST_RX];
>> >> +       odp_shm_t shm;
>> >>  } pkt_sock_t;
>> >>
>> >>  /** packet mmap ring */
>> >> --
>> >> 1.9.1
>> >>
>> >> _______________________________________________
>> >> lng-odp mailing list
>> >> lng-odp@lists.linaro.org
>> >> https://lists.linaro.org/mailman/listinfo/lng-odp
>> >
>> >
>
>
diff mbox

Patch

diff --git a/platform/linux-generic/include/odp_classification_datamodel.h b/platform/linux-generic/include/odp_classification_datamodel.h
index 4358fca..3569e9c 100644
--- a/platform/linux-generic/include/odp_classification_datamodel.h
+++ b/platform/linux-generic/include/odp_classification_datamodel.h
@@ -67,6 +67,7 @@  Class Of Service
 struct cos_s {
 	queue_entry_t *queue;		/* Associated Queue */
 	pool_entry_t *pool;		/* Associated Buffer pool */
+	odp_pool_t pool_id;		/* Associated pool handle */
 	union pmr_u *pmr;		/* Chained PMR */
 	union cos_u *linked_cos;	/* CoS linked with the PMR */
 	uint32_t valid;			/* validity Flag */
diff --git a/platform/linux-generic/include/odp_classification_internal.h b/platform/linux-generic/include/odp_classification_internal.h
index 5593280..7e46986 100644
--- a/platform/linux-generic/include/odp_classification_internal.h
+++ b/platform/linux-generic/include/odp_classification_internal.h
@@ -61,6 +61,9 @@  This function calls Classifier module internal functions for a given packet and
 enqueues the packet to specific Queue based on PMR and CoS selected.
 **/
 int packet_classifier(odp_pktio_t pktio, odp_packet_t pkt);
+
+int _odp_packet_classifier(pktio_entry_t *entry, odp_packet_t pkt);
+
 /**
 Packet IO classifier init
 
diff --git a/platform/linux-generic/include/odp_packet_internal.h b/platform/linux-generic/include/odp_packet_internal.h
index 6f1521c..12e9cca 100644
--- a/platform/linux-generic/include/odp_packet_internal.h
+++ b/platform/linux-generic/include/odp_packet_internal.h
@@ -28,6 +28,8 @@  extern "C" {
 #include <odp/crypto.h>
 #include <odp_crypto_internal.h>
 
+#define PACKET_JUMBO_LEN	(9 * 1024)
+
 /**
  * Packet input & protocol flags
  */
@@ -243,7 +245,7 @@  void packet_parse_l2(odp_packet_hdr_t *pkt_hdr);
 int packet_parse_full(odp_packet_hdr_t *pkt_hdr);
 
 /* Reset parser metadata for a new parse */
-void packet_parse_reset(odp_packet_t pkt);
+void packet_parse_reset(odp_packet_hdr_t *pkt_hdr);
 
 /* Convert a packet handle to a buffer handle */
 odp_buffer_t _odp_packet_to_buffer(odp_packet_t pkt);
@@ -251,6 +253,10 @@  odp_buffer_t _odp_packet_to_buffer(odp_packet_t pkt);
 /* Convert a buffer handle to a packet handle */
 odp_packet_t _odp_packet_from_buffer(odp_buffer_t buf);
 
+int _odp_parse_common(odp_packet_hdr_t *pkt_hdr, const uint8_t *parseptr);
+
+int _odp_cls_parse(odp_packet_hdr_t *pkt_hdr, const uint8_t *parseptr);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/platform/linux-generic/include/odp_packet_io_internal.h b/platform/linux-generic/include/odp_packet_io_internal.h
index a46c6fe..1f79f9c 100644
--- a/platform/linux-generic/include/odp_packet_io_internal.h
+++ b/platform/linux-generic/include/odp_packet_io_internal.h
@@ -86,6 +86,7 @@  struct pktio_entry {
 	classifier_t cls;		/**< classifier linked with this pktio*/
 	char name[PKTIO_NAME_LEN];	/**< name of pktio provided to
 					   pktio_open() */
+	odp_pktio_t id;
 	odp_pktio_param_t param;
 };
 
@@ -118,6 +119,9 @@  typedef struct pktio_if_ops {
 	int (*mac_get)(pktio_entry_t *pktio_entry, void *mac_addr);
 } pktio_if_ops_t;
 
+int _odp_packet_cls_enq(pktio_entry_t *pktio_entry, uint8_t *base,
+			uint16_t buf_len, odp_packet_t *pkt_ret);
+
 extern void *pktio_entry_ptr[];
 
 static inline int pktio_to_id(odp_pktio_t pktio)
diff --git a/platform/linux-generic/include/odp_packet_socket.h b/platform/linux-generic/include/odp_packet_socket.h
index a5e0eb3..1eaafb7 100644
--- a/platform/linux-generic/include/odp_packet_socket.h
+++ b/platform/linux-generic/include/odp_packet_socket.h
@@ -44,6 +44,8 @@  typedef struct {
 	int sockfd; /**< socket descriptor */
 	odp_pool_t pool; /**< pool to alloc packets from */
 	unsigned char if_mac[ETH_ALEN];	/**< IF eth mac addr */
+	uint8_t *cache_ptr[ODP_PACKET_SOCKET_MAX_BURST_RX];
+	odp_shm_t shm;
 } pkt_sock_t;
 
 /** packet mmap ring */