Signed-off-by: Maxim Uvarov <maxim.uva...@linaro.org>
---
 .../linux-generic/include/odp_packet_io_internal.h |  6 ++++
 platform/linux-generic/odp_packet_io.c             | 34 ++++++++++++++++++++++
 2 files changed, 40 insertions(+)

diff --git a/platform/linux-generic/include/odp_packet_io_internal.h 
b/platform/linux-generic/include/odp_packet_io_internal.h
index 5ae3718..f56d100 100644
--- a/platform/linux-generic/include/odp_packet_io_internal.h
+++ b/platform/linux-generic/include/odp_packet_io_internal.h
@@ -50,6 +50,10 @@ struct pktio_entry {
                pkt_sock_mmap_t pkt_sock_mmap;  /**< using socket mmap
                                                 *   API for IO */
        };
+       enum {
+               STATE_START = 0,
+               STATE_STOP
+       } state;
        classifier_t cls;               /**< classifier linked with this pktio*/
        char name[IF_NAMESIZE];         /**< name of pktio provided to
                                           pktio_open() */
@@ -72,6 +76,8 @@ typedef struct pktio_if_ops {
        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);
+       int (*start)(pktio_entry_t *pktio_entry);
+       int (*stop)(pktio_entry_t *pktio_entry);
        int (*recv)(pktio_entry_t *pktio_entry, odp_packet_t pkt_table[],
                    unsigned len);
        int (*send)(pktio_entry_t *pktio_entry, odp_packet_t pkt_table[],
diff --git a/platform/linux-generic/odp_packet_io.c 
b/platform/linux-generic/odp_packet_io.c
index 135e84f..532c264 100644
--- a/platform/linux-generic/odp_packet_io.c
+++ b/platform/linux-generic/odp_packet_io.c
@@ -289,6 +289,40 @@ int odp_pktio_close(odp_pktio_t id)
        return 0;
 }
 
+int odp_pktio_start(odp_pktio_t id)
+{
+       pktio_entry_t *entry;
+       int res = 0;
+
+       entry = get_pktio_entry(id);
+       if (!entry)
+               return -1;
+
+       lock_entry(entry);
+       if (entry->s.ops->start)
+               res = entry->s.ops->start(entry);
+       unlock_entry(entry);
+
+       return res;
+}
+
+int odp_pktio_stop(odp_pktio_t id)
+{
+       pktio_entry_t *entry;
+       int res = 0;
+
+       entry = get_pktio_entry(id);
+       if (!entry)
+               return -1;
+
+       lock_entry(entry);
+       if (entry->s.ops->stop)
+               res = entry->s.ops->stop(entry);
+       unlock_entry(entry);
+
+       return res;
+}
+
 odp_pktio_t odp_pktio_lookup(const char *dev)
 {
        odp_pktio_t id = ODP_PKTIO_INVALID;
-- 
1.9.1

_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to