diff options
author | Matias Elo <matias.elo@nokia.com> | 2016-02-15 12:49:49 +0200 |
---|---|---|
committer | Maxim Uvarov <maxim.uvarov@linaro.org> | 2016-03-04 11:15:24 +0300 |
commit | 608c2404d7d91869167256653a728b8c6ba33e7e (patch) | |
tree | d0e68e176307ee89e09850a3e2f1776c0982e9e5 | |
parent | 3766826d658d72f8115f485d8fb72ba06cc71a4b (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.h | 3 | ||||
-rw-r--r-- | platform/linux-generic/odp_packet_io.c | 17 | ||||
-rw-r--r-- | platform/linux-generic/pktio/loop.c | 3 | ||||
-rw-r--r-- | platform/linux-generic/pktio/netmap.c | 3 | ||||
-rw-r--r-- | platform/linux-generic/pktio/pcap.c | 2 | ||||
-rw-r--r-- | platform/linux-generic/pktio/socket.c | 3 | ||||
-rw-r--r-- | platform/linux-generic/pktio/socket_mmap.c | 3 | ||||
-rw-r--r-- | platform/linux-generic/pktio/tap.c | 3 |
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, |