Message ID | 1416222221-17496-1-git-send-email-bala.manoharan@linaro.org |
---|---|
State | New |
Headers | show |
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.
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 --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;
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(-)