On 15/02/16 10:49, Matias Elo wrote:
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;

This fixes a separate issue, so at least please mention it in the commit message. Also, are we sure we want to do this? I mean, even if a particular pktio fails to init we might want to keep up running. Maxim?


+                       }
        }

        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,

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

Reply via email to