aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatias Elo <matias.elo@nokia.com>2016-02-15 12:49:49 +0200
committerMaxim Uvarov <maxim.uvarov@linaro.org>2016-03-04 11:15:24 +0300
commit608c2404d7d91869167256653a728b8c6ba33e7e (patch)
treed0e68e176307ee89e09850a3e2f1776c0982e9e5
parent3766826d658d72f8115f485d8fb72ba06cc71a4b (diff)
linux-generic: pktio: add separate functions for global and local init
Add separate functions for performing global and local pktio device initialization. Patch adds check if pktio init_global() for any pktio fails odp then odp_init_global will also return failure and odp app will be stopped. Signed-off-by: Matias Elo <matias.elo@nokia.com> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
-rw-r--r--platform/linux-generic/include/odp_packet_io_internal.h3
-rw-r--r--platform/linux-generic/odp_packet_io.c17
-rw-r--r--platform/linux-generic/pktio/loop.c3
-rw-r--r--platform/linux-generic/pktio/netmap.c3
-rw-r--r--platform/linux-generic/pktio/pcap.c2
-rw-r--r--platform/linux-generic/pktio/socket.c3
-rw-r--r--platform/linux-generic/pktio/socket_mmap.c3
-rw-r--r--platform/linux-generic/pktio/tap.c3
8 files changed, 29 insertions, 8 deletions
diff --git a/platform/linux-generic/include/odp_packet_io_internal.h b/platform/linux-generic/include/odp_packet_io_internal.h
index 87e55f3ed..628361775 100644
--- a/platform/linux-generic/include/odp_packet_io_internal.h
+++ b/platform/linux-generic/include/odp_packet_io_internal.h
@@ -133,7 +133,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 38d0a3edb..683152b76 100644
--- a/platform/linux-generic/odp_packet_io.c
+++ b/platform/linux-generic/odp_packet_io.c
@@ -80,10 +80,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;
@@ -91,6 +93,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/loop.c b/platform/linux-generic/pktio/loop.c
index 34d769e3f..d5fce90a7 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 168b76a78..9ed54eb39 100644
--- a/platform/linux-generic/pktio/netmap.c
+++ b/platform/linux-generic/pktio/netmap.c
@@ -858,7 +858,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 ef42c112c..56e603c97 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 be539007d..610d7f284 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 da2682c33..07d7c1e61 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 14cc600a6..47b21789a 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,