diff mbox

[ODP/PATCHv1,1/3] Move pktio static inline functions into header file

Message ID 1416222221-17496-1-git-send-email-bala.manoharan@linaro.org
State New
Headers show

Commit Message

Balasubramanian Manoharan Nov. 17, 2014, 11:03 a.m. UTC
This patch moves static inlines functions in odp_packet_io.c file into header file
This patch adds classifier object inside pktio struct

Signed-off-by: Balasubramanian Manoharan <bala.manoharan@linaro.org>
---
 .../linux-generic/include/odp_packet_io_internal.h | 17 +++++++++++
 platform/linux-generic/odp_packet_io.c             | 34 ++++++----------------
 2 files changed, 26 insertions(+), 25 deletions(-)

Comments

Stuart Haslam Nov. 18, 2014, 1:53 p.m. UTC | #1
On Mon, Nov 17, 2014 at 11:03:39AM +0000, Balasubramanian Manoharan wrote:
> This patch moves static inlines functions in odp_packet_io.c file into header file
> This patch adds classifier object inside pktio struct
> 
> Signed-off-by: Balasubramanian Manoharan <bala.manoharan@linaro.org>
> ---
>  .../linux-generic/include/odp_packet_io_internal.h | 17 +++++++++++
>  platform/linux-generic/odp_packet_io.c             | 34 ++++++----------------
>  2 files changed, 26 insertions(+), 25 deletions(-)
> 
> diff --git a/platform/linux-generic/include/odp_packet_io_internal.h b/platform/linux-generic/include/odp_packet_io_internal.h
> index 23633ed..cc43cac 100644
> --- a/platform/linux-generic/include/odp_packet_io_internal.h
> +++ b/platform/linux-generic/include/odp_packet_io_internal.h
> @@ -20,6 +20,7 @@ extern "C" {
>  
>  #include <odp_spinlock.h>
>  #include <odp_packet_socket.h>
> +#include <odp_classification_internal.h>
>  
>  /**
>   * Packet IO types
> @@ -38,6 +39,7 @@ struct pktio_entry {
>  	odp_pktio_type_t type;		/**< pktio type */
>  	pkt_sock_t pkt_sock;		/**< using socket API for IO */
>  	pkt_sock_mmap_t pkt_sock_mmap;	/**< using socket mmap API for IO */
> +	classifier_t cls;
>  };
>  
>  typedef union {
> @@ -45,6 +47,21 @@ typedef union {
>  	uint8_t pad[ODP_CACHE_LINE_SIZE_ROUNDUP(sizeof(struct pktio_entry))];
>  } pktio_entry_t;
>  
> +typedef struct {
> +	pktio_entry_t entries[ODP_CONFIG_PKTIO_ENTRIES];
> +} pktio_table_t;
> +
> +static pktio_table_t *pktio_tbl;

Need to drop the static. As it is each file that includes the header
gets a separate copy of the variable, so it's uninitialised in the
classifier and packet_classifier() blows up.
Balasubramanian Manoharan Nov. 18, 2014, 3:08 p.m. UTC | #2
Yes. I only need get_pktio_entry() function to be available in header file
in-order to be able to call the same from classifier.
Will incorporate the change in next version.

Regards,
Bala

On 18 November 2014 19:23, Stuart Haslam <stuart.haslam@arm.com> wrote:

> On Mon, Nov 17, 2014 at 11:03:39AM +0000, Balasubramanian Manoharan wrote:
> > This patch moves static inlines functions in odp_packet_io.c file into
> header file
> > This patch adds classifier object inside pktio struct
> >
> > Signed-off-by: Balasubramanian Manoharan <bala.manoharan@linaro.org>
> > ---
> >  .../linux-generic/include/odp_packet_io_internal.h | 17 +++++++++++
> >  platform/linux-generic/odp_packet_io.c             | 34
> ++++++----------------
> >  2 files changed, 26 insertions(+), 25 deletions(-)
> >
> > diff --git a/platform/linux-generic/include/odp_packet_io_internal.h
> b/platform/linux-generic/include/odp_packet_io_internal.h
> > index 23633ed..cc43cac 100644
> > --- a/platform/linux-generic/include/odp_packet_io_internal.h
> > +++ b/platform/linux-generic/include/odp_packet_io_internal.h
> > @@ -20,6 +20,7 @@ extern "C" {
> >
> >  #include <odp_spinlock.h>
> >  #include <odp_packet_socket.h>
> > +#include <odp_classification_internal.h>
> >
> >  /**
> >   * Packet IO types
> > @@ -38,6 +39,7 @@ struct pktio_entry {
> >       odp_pktio_type_t type;          /**< pktio type */
> >       pkt_sock_t pkt_sock;            /**< using socket API for IO */
> >       pkt_sock_mmap_t pkt_sock_mmap;  /**< using socket mmap API for IO
> */
> > +     classifier_t cls;
> >  };
> >
> >  typedef union {
> > @@ -45,6 +47,21 @@ typedef union {
> >       uint8_t pad[ODP_CACHE_LINE_SIZE_ROUNDUP(sizeof(struct
> pktio_entry))];
> >  } pktio_entry_t;
> >
> > +typedef struct {
> > +     pktio_entry_t entries[ODP_CONFIG_PKTIO_ENTRIES];
> > +} pktio_table_t;
> > +
> > +static pktio_table_t *pktio_tbl;
>
> Need to drop the static. As it is each file that includes the header
> gets a separate copy of the variable, so it's uninitialised in the
> classifier and packet_classifier() blows up.
>
> --
> Stuart.
>
>
diff mbox

Patch

diff --git a/platform/linux-generic/include/odp_packet_io_internal.h b/platform/linux-generic/include/odp_packet_io_internal.h
index 23633ed..cc43cac 100644
--- a/platform/linux-generic/include/odp_packet_io_internal.h
+++ b/platform/linux-generic/include/odp_packet_io_internal.h
@@ -20,6 +20,7 @@  extern "C" {
 
 #include <odp_spinlock.h>
 #include <odp_packet_socket.h>
+#include <odp_classification_internal.h>
 
 /**
  * Packet IO types
@@ -38,6 +39,7 @@  struct pktio_entry {
 	odp_pktio_type_t type;		/**< pktio type */
 	pkt_sock_t pkt_sock;		/**< using socket API for IO */
 	pkt_sock_mmap_t pkt_sock_mmap;	/**< using socket mmap API for IO */
+	classifier_t cls;
 };
 
 typedef union {
@@ -45,6 +47,21 @@  typedef union {
 	uint8_t pad[ODP_CACHE_LINE_SIZE_ROUNDUP(sizeof(struct pktio_entry))];
 } pktio_entry_t;
 
+typedef struct {
+	pktio_entry_t entries[ODP_CONFIG_PKTIO_ENTRIES];
+} pktio_table_t;
+
+static pktio_table_t *pktio_tbl;
+
+
+static inline pktio_entry_t *get_pktio_entry(odp_pktio_t id)
+{
+	if (odp_unlikely(id == ODP_PKTIO_INVALID ||
+			 id > ODP_CONFIG_PKTIO_ENTRIES))
+		return NULL;
+
+	return &pktio_tbl->entries[id - 1];
+}
 #ifdef __cplusplus
 }
 #endif
diff --git a/platform/linux-generic/odp_packet_io.c b/platform/linux-generic/odp_packet_io.c
index f35193f..bbfb9be 100644
--- a/platform/linux-generic/odp_packet_io.c
+++ b/platform/linux-generic/odp_packet_io.c
@@ -21,22 +21,6 @@ 
 
 #include <string.h>
 
-typedef struct {
-	pktio_entry_t entries[ODP_CONFIG_PKTIO_ENTRIES];
-} pktio_table_t;
-
-static pktio_table_t *pktio_tbl;
-
-
-static pktio_entry_t *get_entry(odp_pktio_t id)
-{
-	if (odp_unlikely(id == ODP_PKTIO_INVALID ||
-			 id > ODP_CONFIG_PKTIO_ENTRIES))
-		return NULL;
-
-	return &pktio_tbl->entries[id - 1];
-}
-
 int odp_pktio_init_global(void)
 {
 	char name[ODP_QUEUE_NAME_LEN];
@@ -57,7 +41,7 @@  int odp_pktio_init_global(void)
 	memset(pktio_tbl, 0, sizeof(pktio_table_t));
 
 	for (id = 1; id <= ODP_CONFIG_PKTIO_ENTRIES; ++id) {
-		pktio_entry = get_entry(id);
+		pktio_entry = get_pktio_entry(id);
 
 		odp_spinlock_init(&pktio_entry->s.lock);
 
@@ -139,7 +123,7 @@  static odp_pktio_t alloc_lock_pktio_entry(void)
 
 static int free_pktio_entry(odp_pktio_t id)
 {
-	pktio_entry_t *entry = get_entry(id);
+	pktio_entry_t *entry = get_pktio_entry(id);
 
 	if (entry == NULL)
 		return -1;
@@ -163,7 +147,7 @@  odp_pktio_t odp_pktio_open(const char *dev, odp_buffer_pool_t pool)
 	}
 	/* if successful, alloc_pktio_entry() returns with the entry locked */
 
-	pktio_entry = get_entry(id);
+	pktio_entry = get_pktio_entry(id);
 
 	ODP_DBG("ODP_PKTIO_USE_FANOUT: %d\n", fanout);
 	if (getenv("ODP_PKTIO_DISABLE_SOCKET_MMAP") == NULL) {
@@ -212,7 +196,7 @@  int odp_pktio_close(odp_pktio_t id)
 	pktio_entry_t *entry;
 	int res = -1;
 
-	entry = get_entry(id);
+	entry = get_pktio_entry(id);
 	if (entry == NULL)
 		return -1;
 
@@ -251,7 +235,7 @@  odp_pktio_t odp_pktio_get_input(odp_packet_t pkt)
 
 int odp_pktio_recv(odp_pktio_t id, odp_packet_t pkt_table[], unsigned len)
 {
-	pktio_entry_t *pktio_entry = get_entry(id);
+	pktio_entry_t *pktio_entry = get_pktio_entry(id);
 	int pkts;
 	int i;
 
@@ -289,7 +273,7 @@  int odp_pktio_recv(odp_pktio_t id, odp_packet_t pkt_table[], unsigned len)
 
 int odp_pktio_send(odp_pktio_t id, odp_packet_t pkt_table[], unsigned len)
 {
-	pktio_entry_t *pktio_entry = get_entry(id);
+	pktio_entry_t *pktio_entry = get_pktio_entry(id);
 	int pkts;
 
 	if (pktio_entry == NULL)
@@ -319,7 +303,7 @@  int odp_pktio_send(odp_pktio_t id, odp_packet_t pkt_table[], unsigned len)
 
 int odp_pktio_inq_setdef(odp_pktio_t id, odp_queue_t queue)
 {
-	pktio_entry_t *pktio_entry = get_entry(id);
+	pktio_entry_t *pktio_entry = get_pktio_entry(id);
 	queue_entry_t *qentry = queue_to_qentry(queue);
 
 	if (pktio_entry == NULL || qentry == NULL)
@@ -349,7 +333,7 @@  int odp_pktio_inq_remdef(odp_pktio_t id)
 
 odp_queue_t odp_pktio_inq_getdef(odp_pktio_t id)
 {
-	pktio_entry_t *pktio_entry = get_entry(id);
+	pktio_entry_t *pktio_entry = get_pktio_entry(id);
 
 	if (pktio_entry == NULL)
 		return ODP_QUEUE_INVALID;
@@ -359,7 +343,7 @@  odp_queue_t odp_pktio_inq_getdef(odp_pktio_t id)
 
 odp_queue_t odp_pktio_outq_getdef(odp_pktio_t id)
 {
-	pktio_entry_t *pktio_entry = get_entry(id);
+	pktio_entry_t *pktio_entry = get_pktio_entry(id);
 
 	if (pktio_entry == NULL)
 		return ODP_QUEUE_INVALID;