Add separate functions for performing global and local
pktio device initialization.

Signed-off-by: Matias Elo <[email protected]>
---
 platform/linux-generic/include/odp_packet_io_internal.h |  3 ++-
 platform/linux-generic/odp_packet_io.c                  | 17 +++++++++++++++--
 platform/linux-generic/pktio/ipc.c                      |  3 ++-
 platform/linux-generic/pktio/loop.c                     |  3 ++-
 platform/linux-generic/pktio/netmap.c                   |  3 ++-
 platform/linux-generic/pktio/pcap.c                     |  2 ++
 platform/linux-generic/pktio/socket.c                   |  3 ++-
 platform/linux-generic/pktio/socket_mmap.c              |  3 ++-
 platform/linux-generic/pktio/tap.c                      |  3 ++-
 9 files changed, 31 insertions(+), 9 deletions(-)

diff --git a/platform/linux-generic/include/odp_packet_io_internal.h 
b/platform/linux-generic/include/odp_packet_io_internal.h
index 03128f1..eb7efa9 100644
--- a/platform/linux-generic/include/odp_packet_io_internal.h
+++ b/platform/linux-generic/include/odp_packet_io_internal.h
@@ -169,7 +169,8 @@ int is_free(pktio_entry_t *entry);
 
 typedef struct pktio_if_ops {
        const char *name;
-       int (*init)(void);
+       int (*init_global)(void);
+       int (*init_local)(void);
        int (*term)(void);
        int (*open)(odp_pktio_t pktio, pktio_entry_t *pktio_entry,
                    const char *devname, odp_pool_t pool);
diff --git a/platform/linux-generic/odp_packet_io.c 
b/platform/linux-generic/odp_packet_io.c
index a8c1d87..7d53a8e 100644
--- a/platform/linux-generic/odp_packet_io.c
+++ b/platform/linux-generic/odp_packet_io.c
@@ -81,10 +81,12 @@ int odp_pktio_init_global(void)
        }
 
        for (pktio_if = 0; pktio_if_ops[pktio_if]; ++pktio_if) {
-               if (pktio_if_ops[pktio_if]->init)
-                       if (pktio_if_ops[pktio_if]->init())
+               if (pktio_if_ops[pktio_if]->init_global)
+                       if (pktio_if_ops[pktio_if]->init_global()) {
                                ODP_ERR("failed to initialized pktio type %d",
                                        pktio_if);
+                               return -1;
+                       }
        }
 
        return 0;
@@ -92,6 +94,17 @@ int odp_pktio_init_global(void)
 
 int odp_pktio_init_local(void)
 {
+       int pktio_if;
+
+       for (pktio_if = 0; pktio_if_ops[pktio_if]; ++pktio_if) {
+               if (pktio_if_ops[pktio_if]->init_local)
+                       if (pktio_if_ops[pktio_if]->init_local()) {
+                               ODP_ERR("failed to initialized pktio type %d",
+                                       pktio_if);
+                               return -1;
+                       }
+       }
+
        return 0;
 }
 
diff --git a/platform/linux-generic/pktio/ipc.c 
b/platform/linux-generic/pktio/ipc.c
index 52d3c8c..08a7934 100644
--- a/platform/linux-generic/pktio/ipc.c
+++ b/platform/linux-generic/pktio/ipc.c
@@ -713,7 +713,8 @@ static int ipc_close(pktio_entry_t *pktio_entry)
 }
 
 const pktio_if_ops_t ipc_pktio_ops = {
-       .init = NULL,
+       .init_global = NULL,
+       .init_local = NULL,
        .term = NULL,
        .open = ipc_pktio_open,
        .close = ipc_close,
diff --git a/platform/linux-generic/pktio/loop.c 
b/platform/linux-generic/pktio/loop.c
index 34d769e..d5fce90 100644
--- a/platform/linux-generic/pktio/loop.c
+++ b/platform/linux-generic/pktio/loop.c
@@ -155,7 +155,8 @@ static int loopback_stats_reset(pktio_entry_t *pktio_entry 
ODP_UNUSED)
 
 const pktio_if_ops_t loopback_pktio_ops = {
        .name = "loop",
-       .init = NULL,
+       .init_global = NULL,
+       .init_local = NULL,
        .term = NULL,
        .open = loopback_open,
        .close = loopback_close,
diff --git a/platform/linux-generic/pktio/netmap.c 
b/platform/linux-generic/pktio/netmap.c
index 7009b97..27a5582 100644
--- a/platform/linux-generic/pktio/netmap.c
+++ b/platform/linux-generic/pktio/netmap.c
@@ -856,7 +856,8 @@ static int netmap_stats_reset(pktio_entry_t *pktio_entry)
 
 const pktio_if_ops_t netmap_pktio_ops = {
        .name = "netmap",
-       .init = NULL,
+       .init_global = NULL,
+       .init_local = NULL,
        .term = NULL,
        .open = netmap_open,
        .close = netmap_close,
diff --git a/platform/linux-generic/pktio/pcap.c 
b/platform/linux-generic/pktio/pcap.c
index ef42c11..56e603c 100644
--- a/platform/linux-generic/pktio/pcap.c
+++ b/platform/linux-generic/pktio/pcap.c
@@ -393,6 +393,8 @@ static int pcapif_stats(pktio_entry_t *pktio_entry,
 
 const pktio_if_ops_t pcap_pktio_ops = {
        .name = "pcap",
+       .init_global = NULL,
+       .init_local = NULL,
        .open = pcapif_init,
        .close = pcapif_close,
        .stats = pcapif_stats,
diff --git a/platform/linux-generic/pktio/socket.c 
b/platform/linux-generic/pktio/socket.c
index be53900..610d7f2 100644
--- a/platform/linux-generic/pktio/socket.c
+++ b/platform/linux-generic/pktio/socket.c
@@ -839,7 +839,8 @@ static int sock_stats_reset(pktio_entry_t *pktio_entry)
 
 const pktio_if_ops_t sock_mmsg_pktio_ops = {
        .name = "socket",
-       .init = NULL,
+       .init_global = NULL,
+       .init_local = NULL,
        .term = NULL,
        .open = sock_mmsg_open,
        .close = sock_close,
diff --git a/platform/linux-generic/pktio/socket_mmap.c 
b/platform/linux-generic/pktio/socket_mmap.c
index da2682c..07d7c1e 100644
--- a/platform/linux-generic/pktio/socket_mmap.c
+++ b/platform/linux-generic/pktio/socket_mmap.c
@@ -608,7 +608,8 @@ static int sock_mmap_stats_reset(pktio_entry_t *pktio_entry)
 
 const pktio_if_ops_t sock_mmap_pktio_ops = {
        .name = "socket_mmap",
-       .init = NULL,
+       .init_global = NULL,
+       .init_local = NULL,
        .term = NULL,
        .open = sock_mmap_open,
        .close = sock_mmap_close,
diff --git a/platform/linux-generic/pktio/tap.c 
b/platform/linux-generic/pktio/tap.c
index 14cc600..47b2178 100644
--- a/platform/linux-generic/pktio/tap.c
+++ b/platform/linux-generic/pktio/tap.c
@@ -310,7 +310,8 @@ static int tap_mac_addr_get(pktio_entry_t *pktio_entry, 
void *mac_addr)
 }
 
 const pktio_if_ops_t tap_pktio_ops = {
-       .init = NULL,
+       .init_global = NULL,
+       .init_local = NULL,
        .term = NULL,
        .open = tap_pktio_open,
        .close = tap_pktio_close,
-- 
1.9.1

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

Reply via email to