diff mbox

[API-NEXT,PATCHv2,1/7] linux-generic: add pktio_start and pktio_stop

Message ID 1439550184-28383-2-git-send-email-maxim.uvarov@linaro.org
State Superseded
Headers show

Commit Message

Maxim Uvarov Aug. 14, 2015, 11:02 a.m. UTC
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
---
 .../linux-generic/include/odp_packet_io_internal.h |  6 ++++
 platform/linux-generic/odp_packet_io.c             | 34 ++++++++++++++++++++++
 2 files changed, 40 insertions(+)

Comments

Mike Holmes Aug. 18, 2015, 12:09 p.m. UTC | #1
Ping - we would like to merge this for 1.3 this week, any comments ?

On 14 August 2015 at 07:02, Maxim Uvarov <maxim.uvarov@linaro.org> wrote:

> Signed-off-by: Maxim Uvarov <maxim.uvarov@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
>
diff mbox

Patch

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;