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