aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Uvarov <maxim.uvarov@linaro.org>2015-07-29 13:59:18 +0300
committerMaxim Uvarov <maxim.uvarov@linaro.org>2015-07-29 13:59:18 +0300
commit1a7daf45862ab3a8785b9f5e6d6950eff6637c63 (patch)
tree403c1b6163628905fabc3cbebbcd0aba612e5898
parentb723ba1effc6c5a258e9924ce56329ff97768086 (diff)
parent89dc8af475d8cbdadb0efac6a1396d74a525dc30 (diff)
Merge branch 'master' into api-next
-rw-r--r--platform/linux-generic/include/odp_packet_io_internal.h2
-rw-r--r--platform/linux-generic/odp_packet_io.c16
-rw-r--r--platform/linux-generic/pktio/loop.c2
-rw-r--r--platform/linux-generic/pktio/socket.c4
-rw-r--r--platform/linux-generic/pktio/socket_mmap.c2
5 files changed, 26 insertions, 0 deletions
diff --git a/platform/linux-generic/include/odp_packet_io_internal.h b/platform/linux-generic/include/odp_packet_io_internal.h
index 0b94c8d..5ae3718 100644
--- a/platform/linux-generic/include/odp_packet_io_internal.h
+++ b/platform/linux-generic/include/odp_packet_io_internal.h
@@ -67,6 +67,8 @@ typedef struct {
} pktio_table_t;
typedef struct pktio_if_ops {
+ int (*init)(void);
+ int (*term)(void);
int (*open)(odp_pktio_t pktio, pktio_entry_t *pktio_entry,
const char *devname, odp_pool_t pool);
int (*close)(pktio_entry_t *pktio_entry);
diff --git a/platform/linux-generic/odp_packet_io.c b/platform/linux-generic/odp_packet_io.c
index 3ee9e1a..135e84f 100644
--- a/platform/linux-generic/odp_packet_io.c
+++ b/platform/linux-generic/odp_packet_io.c
@@ -37,6 +37,7 @@ int odp_pktio_init_global(void)
odp_queue_t qid;
int id;
odp_shm_t shm;
+ int pktio_if;
shm = odp_shm_reserve("odp_pktio_entries",
sizeof(pktio_table_t),
@@ -72,6 +73,13 @@ int odp_pktio_init_global(void)
queue_entry->s.pktout = _odp_cast_scalar(odp_pktio_t, id);
}
+ 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())
+ ODP_ERR("failed to initialized pktio type %d",
+ pktio_if);
+ }
+
return 0;
}
@@ -80,6 +88,14 @@ int odp_pktio_term_global(void)
pktio_entry_t *pktio_entry;
int ret = 0;
int id;
+ int pktio_if;
+
+ for (pktio_if = 0; pktio_if_ops[pktio_if]; ++pktio_if) {
+ if (pktio_if_ops[pktio_if]->term)
+ if (pktio_if_ops[pktio_if]->term())
+ ODP_ERR("failed to terminate pktio type %d",
+ pktio_if);
+ }
for (id = 1; id <= ODP_CONFIG_PKTIO_ENTRIES; ++id) {
pktio_entry = &pktio_tbl->entries[id - 1];
diff --git a/platform/linux-generic/pktio/loop.c b/platform/linux-generic/pktio/loop.c
index 0e7313f..188a9ee 100644
--- a/platform/linux-generic/pktio/loop.c
+++ b/platform/linux-generic/pktio/loop.c
@@ -104,6 +104,8 @@ static int loopback_promisc_mode_get(pktio_entry_t *pktio_entry)
}
const pktio_if_ops_t loopback_pktio_ops = {
+ .init = NULL,
+ .term = NULL,
.open = loopback_open,
.close = loopback_close,
.recv = loopback_recv,
diff --git a/platform/linux-generic/pktio/socket.c b/platform/linux-generic/pktio/socket.c
index 400897d..202608a 100644
--- a/platform/linux-generic/pktio/socket.c
+++ b/platform/linux-generic/pktio/socket.c
@@ -532,6 +532,8 @@ static int sock_promisc_mode_get(pktio_entry_t *pktio_entry)
}
const pktio_if_ops_t sock_basic_pktio_ops = {
+ .init = NULL,
+ .term = NULL,
.open = sock_basic_open,
.close = sock_close,
.recv = sock_basic_recv,
@@ -543,6 +545,8 @@ const pktio_if_ops_t sock_basic_pktio_ops = {
};
const pktio_if_ops_t sock_mmsg_pktio_ops = {
+ .init = NULL,
+ .term = NULL,
.open = sock_mmsg_open,
.close = sock_close,
.recv = sock_mmsg_recv,
diff --git a/platform/linux-generic/pktio/socket_mmap.c b/platform/linux-generic/pktio/socket_mmap.c
index 62f95f3..7d42678 100644
--- a/platform/linux-generic/pktio/socket_mmap.c
+++ b/platform/linux-generic/pktio/socket_mmap.c
@@ -536,6 +536,8 @@ static int sock_mmap_promisc_mode_get(pktio_entry_t *pktio_entry)
}
const pktio_if_ops_t sock_mmap_pktio_ops = {
+ .init = NULL,
+ .term = NULL,
.open = sock_mmap_open,
.close = sock_mmap_close,
.recv = sock_mmap_recv,