DPDK patches and discussions
 help / color / mirror / Atom feed
From: David Marchand <david.marchand@6wind.com>
To: Cunming Liang <cunming.liang@intel.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH v6 4/8] eal/linux: add per rx queue interrupt handling based on VFIO
Date: Fri, 27 Feb 2015 11:33:59 +0100	[thread overview]
Message-ID: <CALwxeUu2GCzqR+RSgpp1GX=bCDpZTyPcqD4RQzsCx5d48RvBdQ@mail.gmail.com> (raw)
In-Reply-To: <1425012976-10173-5-git-send-email-cunming.liang@intel.com>

I am not really comfortable with this api.

This is just creating something on top of the standard epoll api with
limitations.
In the end, we could just use an external lib that does this already.

So ok, this will work for your limited use case, but this will not be
really useful for anything else.
Not sure it has its place in eal, this is more an example to me.


On Fri, Feb 27, 2015 at 5:56 AM, Cunming Liang <cunming.liang@intel.com>
wrote:

> This patch does below:
>  - Create multiple VFIO eventfd for rx queues.
>  - Handle per rx queue interrupt.
>  - Eliminate unnecessary suspended DPDK polling thread wakeup mechanism
>    for rx interrupt by allowing polling thread epoll_wait rx queue
>    interrupt notification.
>
> Signed-off-by: Danny Zhou <danny.zhou@intel.com>
> Signed-off-by: Cunming Liang <cunming.liang@intel.com>
> ---
> v6 changes
>  - split rte_intr_wait_rx_pkt into two function, wait and set.
>  - rewrite rte_intr_rx_wait/rte_intr_rx_set to remove queue visibility on
> eal.
>  - rte_intr_rx_wait to support multiplexing.
>  - allow epfd as input to support flexible event fd combination.
>
>
>  lib/librte_eal/linuxapp/eal/eal_interrupts.c    | 224
> +++++++++++++++++++-----
>  lib/librte_eal/linuxapp/eal/eal_pci_vfio.c      |  23 ++-
>  lib/librte_eal/linuxapp/eal/rte_eal_version.map |   2 +
>  3 files changed, 201 insertions(+), 48 deletions(-)
>
> diff --git a/lib/librte_eal/linuxapp/eal/eal_interrupts.c
> b/lib/librte_eal/linuxapp/eal/eal_interrupts.c
> index 8c5b834..f90c2b4 100644
> --- a/lib/librte_eal/linuxapp/eal/eal_interrupts.c
> +++ b/lib/librte_eal/linuxapp/eal/eal_interrupts.c
>
>
[snip]


>
> +static void
> +eal_intr_process_rxtx_interrupts(struct rte_intr_handle *intr_handle,
> +                                struct epoll_event *events,
> +                                uint32_t *vec, int nfds)
> +{
> +       int i, bytes_read;
> +       union rte_intr_read_buffer buf;
> +       int fd;
> +
> +       for (i = 0; i < nfds; i++) {
> +               /* set the length to be read for different handle type */
> +               switch (intr_handle->type) {
> +               case RTE_INTR_HANDLE_UIO:
> +                       bytes_read = sizeof(buf.uio_intr_count);
> +                       break;
> +               case RTE_INTR_HANDLE_ALARM:
> +                       bytes_read = sizeof(buf.timerfd_num);
> +                       break;
> +#ifdef VFIO_PRESENT
> +               case RTE_INTR_HANDLE_VFIO_MSIX:
> +               case RTE_INTR_HANDLE_VFIO_MSI:
> +               case RTE_INTR_HANDLE_VFIO_LEGACY:
> +                       bytes_read = sizeof(buf.vfio_intr_count);
> +                       break;
> +#endif
> +               default:
> +                       bytes_read = 1;
> +                       break;
> +               }
> +
> +               /**
> +               * read out to clear the ready-to-be-read flag
> +               * for epoll_wait.
> +               */
> +               vec[i] = events[i].data.u32;
> +               assert(vec[i] < VFIO_MAX_RXTX_INTR_ID);
> +
> +               fd = intr_handle->efds[vec[i]];
> +               bytes_read = read(fd, &buf, bytes_read);
> +               if (bytes_read < 0)
> +                       RTE_LOG(ERR, EAL, "Error reading from file "
> +                               "descriptor %d: %s\n", fd,
> strerror(errno));
> +               else if (bytes_read == 0)
> +                       RTE_LOG(ERR, EAL, "Read nothing from file "
> +                               "descriptor %d\n", fd);
> +       }
> +}
>

Why unconditionnally read ?
You are absorbing events from the application if the application gave you
an external epfd and populated it with its own fds.


> +
> +static int init_tls_epfd(void)
> +{
> +       int pfd = epoll_create(1);
> +       if (pfd < 0) {
> +               RTE_LOG(ERR, EAL,
> +                       "Cannot create epoll instance\n");
> +               return -1;
> +       }
> +       return pfd;
> +}
> +
> +int
> +rte_intr_rx_wait(struct rte_intr_handle *intr_handle, int epfd,
> +                uint32_t *vec, uint16_t num)
> +{
>

In the end, this "rx" does not mean anything to eal.


+#define MAX_EVENTS      8
> +       struct epoll_event events[MAX_EVENTS];
> +       int ret, nfds = 0;
> +
> +       if (!intr_handle || !vec) {
> +               RTE_LOG(ERR, EAL, "invalid input parameter\n");
> +               return -1;
> +       }
> +
> +       if (intr_handle->type != RTE_INTR_HANDLE_VFIO_MSIX) {
> +               RTE_LOG(ERR, EAL, "intr type should be VFIO_MSIX\n");
> +               return -1;
> +       }
> +
> +       if (epfd == RTE_EPOLL_FD_ANY) {
> +               /* using per thread epoll fd */
> +               if (unlikely(RTE_PER_LCORE(_epfd) == -1))
> +                       RTE_PER_LCORE(_epfd) = init_tls_epfd();
> +               epfd = RTE_PER_LCORE(_epfd);
> +       }
>

Rather than testing every time, this should be set by the caller, i.e. epfd
is always valid.
If application does not want to create a epfd, then it calls
 rte_intr_rx_wait with RTE_EPOLL_FD_ANY (this name is not well chosen) that
is a macro wrapped to RTE_PER_LCORE(_epfd).

init_tls_epfd() should be called only once at init time.
No need to check every time.

+
> +       do {
> +               ret = epoll_wait(epfd, events,
> +                                RTE_MIN(num, MAX_EVENTS),
> +                                EAL_INTR_EPOLL_WAIT_FOREVER);
> +               if (unlikely(ret < 0)) {
> +                       /* epoll_wait fail */
> +                       RTE_LOG(ERR, EAL, "epoll_wait returns with
> fail\n");
> +                       return -1;
> +               } else if (ret > 0) {
> +                       /* epoll_wait has at least one fd ready to read */
> +                       eal_intr_process_rxtx_interrupts(intr_handle,
> events,
> +                                                        vec, ret);
> +                       num -= ret;
> +                       vec += ret;
> +                       nfds += ret;
> +               } else if (nfds > 0)
> +                       break;
> +       } while (num > 0);
> +
> +       return nfds;
> +}
>

You are blocking unless all fds have been set, so you are serialising all
events.

+
> +int
> +rte_intr_rx_set(struct rte_intr_handle *intr_handle, int epfd,
> +               int op, uint32_t vec)
> +{
> +       struct epoll_event ev;
> +
> +       if (!intr_handle || vec >= VFIO_MAX_RXTX_INTR_ID) {
> +               RTE_LOG(ERR, EAL, "invalid input parameter\n");
> +               return -1;
> +       }
> +
> +       if (intr_handle->type != RTE_INTR_HANDLE_VFIO_MSIX) {
> +               RTE_LOG(ERR, EAL, "intr type should be VFIO_MSIX\n");
> +               return -1;
> +       }
> +
> +       switch (op) {
> +       case RTE_INTR_EVENT_ADD:
> +               op = EPOLL_CTL_ADD;
> +               break;
> +       case RTE_INTR_EVENT_DEL:
> +               op = EPOLL_CTL_DEL;
> +               break;
> +       default:
> +               RTE_LOG(ERR, EAL, "event op type mismatch\n");
> +               return -1;
> +       }
> +
> +       if (epfd == RTE_EPOLL_FD_ANY) {
> +               /* using per thread epoll fd */
> +               if (RTE_PER_LCORE(_epfd) == -1)
> +                       RTE_PER_LCORE(_epfd) = init_tls_epfd();
> +               epfd = RTE_PER_LCORE(_epfd);
> +       }
> +
> +       ev.data.u32 = vec;
> +       ev.events = EPOLLIN | EPOLLPRI;
> +       if (epoll_ctl(epfd, op, intr_handle->efds[vec], &ev) < 0) {
> +               RTE_LOG(ERR, EAL, "Error op %d fd %d epoll_ctl, %s\n",
> +                       op, intr_handle->efds[vec], strerror(errno));
> +               return -1;
> +       }
> +
> +       return 0;
> +}
>



> diff --git a/lib/librte_eal/linuxapp/eal/eal_pci_vfio.c
> b/lib/librte_eal/linuxapp/eal/eal_pci_vfio.c
> index ee9660f..d90d23c 100644
> --- a/lib/librte_eal/linuxapp/eal/eal_pci_vfio.c
> +++ b/lib/librte_eal/linuxapp/eal/eal_pci_vfio.c
> @@ -38,6 +38,7 @@
>  #include <sys/socket.h>
>  #include <sys/ioctl.h>
>  #include <sys/mman.h>
> +#include <sys/epoll.h>
>
>  #include <rte_log.h>
>  #include <rte_pci.h>
> @@ -274,16 +275,18 @@ pci_vfio_setup_interrupts(struct rte_pci_device
> *dev, int vfio_dev_fd)
>                 ret = ioctl(vfio_dev_fd, VFIO_DEVICE_GET_IRQ_INFO, &irq);
>                 if (ret < 0) {
>                         RTE_LOG(ERR, EAL, "  cannot get IRQ info, "
> -                                       "error %i (%s)\n", errno,
> strerror(errno));
> +                               "error %i (%s)\n", errno, strerror(errno));
>                         return -1;
>                 }
>

Garbage, this has nothing to do with the patch.


>
>                 /* if this vector cannot be used with eventfd, fail if we
> explicitly
>                  * specified interrupt type, otherwise continue */
>                 if ((irq.flags & VFIO_IRQ_INFO_EVENTFD) == 0) {
> -                       if (internal_config.vfio_intr_mode !=
> RTE_INTR_MODE_NONE) {
> +                       if (internal_config.vfio_intr_mode !=
> +                           RTE_INTR_MODE_NONE) {
>                                 RTE_LOG(ERR, EAL,
> -                                               "  interrupt vector does
> not support eventfd!\n");
> +                                       "  interrupt vector "
> +                                       "does not support eventfd!\n");
>                                 return -1;
>                         } else
>                                 continue;
>

Idem.



> @@ -293,17 +296,27 @@ pci_vfio_setup_interrupts(struct rte_pci_device
> *dev, int vfio_dev_fd)
>                 fd = eventfd(0, 0);
>                 if (fd < 0) {
>                         RTE_LOG(ERR, EAL, "  cannot set up eventfd, "
> -                                       "error %i (%s)\n", errno,
> strerror(errno));
> +                               "error %i (%s)\n", errno, strerror(errno));
>

Idem.


>                         return -1;
>                 }
>
>                 dev->intr_handle.fd = fd;
>                 dev->intr_handle.vfio_dev_fd = vfio_dev_fd;
> -
>

Idem.


>                 switch (i) {
>                 case VFIO_PCI_MSIX_IRQ_INDEX:
>                         internal_config.vfio_intr_mode =
> RTE_INTR_MODE_MSIX;
>                         dev->intr_handle.type = RTE_INTR_HANDLE_VFIO_MSIX;
> +                       for (i = 0; i < VFIO_MAX_RXTX_INTR_ID; i++) {
> +                               fd = eventfd(0, 0);
> +                               if (fd < 0) {
> +                                       RTE_LOG(ERR, EAL,
> +                                               "cannot setup eventfd,"
> +                                               "error %i (%s)\n",
> +                                               errno, strerror(errno));
> +                                       return -1;
> +                               }
> +                               dev->intr_handle.efds[i] = fd;
> +                       }
>                         break;
>                 case VFIO_PCI_MSI_IRQ_INDEX:
>                         internal_config.vfio_intr_mode = RTE_INTR_MODE_MSI;
> diff --git a/lib/librte_eal/linuxapp/eal/rte_eal_version.map
> b/lib/librte_eal/linuxapp/eal/rte_eal_version.map
> index 5f1857d..892a452 100644
> --- a/lib/librte_eal/linuxapp/eal/rte_eal_version.map
> +++ b/lib/librte_eal/linuxapp/eal/rte_eal_version.map
> @@ -64,6 +64,8 @@ DPDK_2.0 {
>         rte_intr_callback_unregister;
>         rte_intr_disable;
>         rte_intr_enable;
> +       rte_intr_rx_set;
> +       rte_intr_rx_wait;
>         rte_log;
>         rte_log_add_in_history;
>         rte_log_cur_msg_loglevel;
> --
> 1.8.1.4
>




-- 
David Marchand

  reply	other threads:[~2015-02-27 10:33 UTC|newest]

Thread overview: 242+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-23 16:55 [dpdk-dev] [PATCH v5 0/6] Interrupt mode PMD Zhou Danny
2015-02-23 16:55 ` [dpdk-dev] [PATCH v5 1/6] ethdev: add rx interrupt enable/disable functions Zhou Danny
2015-02-23 16:59   ` Stephen Hemminger
2015-02-23 17:17     ` Zhou, Danny
2015-05-11 14:10       ` [dpdk-dev] [PATCH] lib: syntax cleanup Ferruh Yigit
2015-06-23 14:28         ` Thomas Monjalon
2015-02-23 16:55 ` [dpdk-dev] [PATCH v5 2/6] eal: add rx queue interrupt FDs to intr handle struct Zhou Danny
2015-02-23 16:55 ` [dpdk-dev] [PATCH v5 3/6] ixgbe: enable rx queue interrupts for both PF and VF Zhou Danny
2015-02-23 16:55 ` [dpdk-dev] [PATCH v5 4/6] igb: enable rx queue interrupts for PF Zhou Danny
2015-02-23 16:55 ` [dpdk-dev] [PATCH v5 5/6] eal: add per rx queue interrupt handling based on VFIO Zhou Danny
2015-02-24 10:42   ` David Marchand
2015-02-25  6:58     ` Zhou, Danny
2015-02-25 10:22       ` David Marchand
2015-02-25 15:29         ` Zhou, Danny
2015-02-25 15:44           ` Thomas Monjalon
2015-02-25 15:52           ` David Marchand
2015-02-23 16:55 ` [dpdk-dev] [PATCH v5 6/6] l3fwd-power: enable one-shot rx interrupt and polling/interrupt mode switch Zhou Danny
2015-02-27  4:56 ` [dpdk-dev] [PATCH v6 0/8] Interrupt mode PMD Cunming Liang
2015-02-27  4:56   ` [dpdk-dev] [PATCH v6 1/8] eal: declare new interrupt api Cunming Liang
2015-02-27  4:56   ` [dpdk-dev] [PATCH v6 2/8] eal/linux: add rx queue interrupt FDs to intr handle struct Cunming Liang
2015-02-27 10:33     ` David Marchand
2015-02-27 11:28       ` Liang, Cunming
2015-02-27 14:42         ` Thomas Monjalon
2015-02-27 14:52         ` Thomas Monjalon
2015-02-28  0:32           ` Liang, Cunming
2015-02-27  4:56   ` [dpdk-dev] [PATCH v6 3/8] eal/bsd: dummy for new intr definition Cunming Liang
2015-02-27  9:59     ` David Marchand
2015-02-27 11:21       ` Liang, Cunming
2015-02-27 14:22         ` Thomas Monjalon
2015-02-28  0:37           ` Liang, Cunming
2015-02-27  4:56   ` [dpdk-dev] [PATCH v6 4/8] eal/linux: add per rx queue interrupt handling based on VFIO Cunming Liang
2015-02-27 10:33     ` David Marchand [this message]
2015-02-27 12:22       ` Liang, Cunming
2015-02-27 14:13         ` Thomas Monjalon
2015-02-28  1:45           ` Liang, Cunming
2015-02-27  4:56   ` [dpdk-dev] [PATCH v6 5/8] ethdev: add rx interrupt enable/disable functions Cunming Liang
2015-02-27  4:56   ` [dpdk-dev] [PATCH v6 6/8] ixgbe: enable rx queue interrupts for both PF and VF Cunming Liang
2015-02-27  4:56   ` [dpdk-dev] [PATCH v6 7/8] igb: enable rx queue interrupts for PF Cunming Liang
2015-03-20 20:51     ` Stephen Hemminger
2015-05-11  5:16       ` Liang, Cunming
2015-02-27  4:56   ` [dpdk-dev] [PATCH v6 8/8] l3fwd-power: enable one-shot rx interrupt and polling/interrupt mode switch Cunming Liang
2015-02-28 22:57     ` Stephen Hemminger
2015-02-28 23:00     ` Stephen Hemminger
2015-02-27  8:00   ` [dpdk-dev] [PATCH v6 0/8] Interrupt mode PMD Liu, Yong
2015-02-27 10:38   ` David Marchand
2015-02-28 22:38     ` Stephen Hemminger
2015-03-04  0:52     ` Stephen Hemminger
2015-03-04  3:20       ` Liang, Cunming
2015-05-05  5:39   ` [dpdk-dev] From: Cunming Liang <cunming.liang@intel.com> Cunming Liang
2015-05-05  5:39     ` [dpdk-dev] [PATCH v7 01/10] eal/linux: add interrupt vectors support in intr_handle Cunming Liang
2015-05-05  5:39     ` [dpdk-dev] [PATCH v7 02/10] eal/linux: add rte_epoll_wait/ctl support Cunming Liang
2015-05-08  2:57       ` Stephen Hemminger
2015-05-11  3:32         ` Liang, Cunming
2015-05-05  5:39     ` [dpdk-dev] [PATCH v7 03/10] eal/linux: add API to set rx interrupt event monitor Cunming Liang
2015-05-05 18:34       ` Stephen Hemminger
2015-05-07  6:29         ` Liang, Cunming
2015-05-08  2:58       ` Stephen Hemminger
2015-05-05  5:39     ` [dpdk-dev] [PATCH v7 04/10] eal/bsd: dummy for new intr definition Cunming Liang
2015-05-05  5:39     ` [dpdk-dev] [PATCH v7 05/10] eal/linux: fix comments typo on vfio msi Cunming Liang
2015-05-05  5:39     ` [dpdk-dev] [PATCH v7 06/10] eal/linux: add interrupt vectors handling on VFIO Cunming Liang
2015-05-05 18:38       ` Stephen Hemminger
2015-05-07  6:29         ` Liang, Cunming
2015-05-05  5:39     ` [dpdk-dev] [PATCH v7 07/10] ethdev: add rx intr enable, disable and ctl functions Cunming Liang
2015-05-05  5:39     ` [dpdk-dev] [PATCH v7 08/10] ixgbe: enable rx queue interrupts for both PF and VF Cunming Liang
2015-05-05 18:36       ` Stephen Hemminger
2015-05-11  5:31         ` Liang, Cunming
2015-05-11 15:00           ` Stephen Hemminger
2015-05-12  1:07             ` Liang, Cunming
2015-05-05  5:39     ` [dpdk-dev] [PATCH v7 09/10] igb: enable rx queue interrupts for PF Cunming Liang
2015-05-05 23:16       ` Stephen Hemminger
2015-05-11  5:05         ` Liang, Cunming
2015-05-28 21:25       ` Stephen Hemminger
2015-05-05  5:39     ` [dpdk-dev] [PATCH v7 10/10] l3fwd-power: enable one-shot rx interrupt and polling/interrupt mode switch Cunming Liang
2015-05-21  8:55     ` [dpdk-dev] [PATCH v8 00/11] Interrupt mode PMD Cunming Liang
2015-05-21  8:55       ` [dpdk-dev] [PATCH v8 01/11] eal/linux: add interrupt vectors support in intr_handle Cunming Liang
2015-05-21 10:32         ` Neil Horman
     [not found]           ` <20150521104300.00757b4e@urahara>
2015-05-21 17:58             ` Neil Horman
2015-05-21 18:21               ` Stephen Hemminger
     [not found]               ` <20150521111400.2a04a196@urahara>
2015-05-22  0:05                 ` Neil Horman
     [not found]                 ` <40594e9e6e0543afa11e4dbd90e59b22@BRMWP-EXMB11.corp.brocade.com>
2015-05-22 16:52                   ` Stephen Hemminger
2015-05-27 10:33                     ` Neil Horman
2015-05-29  8:56               ` Liang, Cunming
2015-05-21  8:55       ` [dpdk-dev] [PATCH v8 02/11] eal/linux: add rte_epoll_wait/ctl support Cunming Liang
2015-05-21 18:22         ` Stephen Hemminger
     [not found]         ` <20150521111704.727cf3a1@urahara>
2015-05-22  2:08           ` Liang, Cunming
2015-05-21  8:55       ` [dpdk-dev] [PATCH v8 03/11] eal/linux: add API to set rx interrupt event monitor Cunming Liang
2015-05-21  8:55       ` [dpdk-dev] [PATCH v8 04/11] eal/linux: fix comments typo on vfio msi Cunming Liang
2015-05-21  8:55       ` [dpdk-dev] [PATCH v8 05/11] eal/linux: add interrupt vectors handling on VFIO Cunming Liang
2015-05-22 20:21         ` Stephen Hemminger
2015-05-27  9:00           ` Liang, Cunming
2015-05-21  8:55       ` [dpdk-dev] [PATCH v8 06/11] eal/linux: standalone intr event fd create support Cunming Liang
2015-05-21  8:55       ` [dpdk-dev] [PATCH v8 07/11] eal/bsd: dummy for new intr definition Cunming Liang
2015-05-21  8:56       ` [dpdk-dev] [PATCH v8 08/11] ethdev: add rx intr enable, disable and ctl functions Cunming Liang
2015-05-21 18:22         ` Stephen Hemminger
2015-05-21 18:22         ` Stephen Hemminger
     [not found]         ` <20150521112030.4d31a0e4@urahara>
2015-05-22  2:17           ` Liang, Cunming
2015-05-21  8:56       ` [dpdk-dev] [PATCH v8 09/11] ixgbe: enable rx queue interrupts for both PF and VF Cunming Liang
2015-05-21  8:56       ` [dpdk-dev] [PATCH v8 10/11] igb: enable rx queue interrupts for PF Cunming Liang
2015-05-21  8:56       ` [dpdk-dev] [PATCH v8 11/11] l3fwd-power: enable one-shot rx interrupt and polling/interrupt mode switch Cunming Liang
2015-05-29  8:45       ` [dpdk-dev] [PATCH v9 00/12] Interrupt mode PMD Cunming Liang
2015-05-29  8:45         ` [dpdk-dev] [PATCH v9 01/12] eal/linux: add interrupt vectors support in intr_handle Cunming Liang
2015-06-02  5:27           ` Liu, Yong
2015-05-29  8:45         ` [dpdk-dev] [PATCH v9 02/12] eal/linux: add rte_epoll_wait/ctl support Cunming Liang
2015-05-29  8:45         ` [dpdk-dev] [PATCH v9 03/12] eal/linux: add API to set rx interrupt event monitor Cunming Liang
2015-05-29  8:45         ` [dpdk-dev] [PATCH v9 04/12] eal/linux: fix comments typo on vfio msi Cunming Liang
2015-05-29  8:45         ` [dpdk-dev] [PATCH v9 05/12] eal/linux: add interrupt vectors handling on VFIO Cunming Liang
2015-05-29  8:45         ` [dpdk-dev] [PATCH v9 06/12] eal/linux: standalone intr event fd create support Cunming Liang
2015-05-29  8:45         ` [dpdk-dev] [PATCH v9 07/12] eal/bsd: dummy for new intr definition Cunming Liang
2015-05-29  8:45         ` [dpdk-dev] [PATCH v9 08/12] ethdev: add rx intr enable, disable and ctl functions Cunming Liang
2015-05-29  8:45         ` [dpdk-dev] [PATCH v9 09/12] ixgbe: enable rx queue interrupts for both PF and VF Cunming Liang
2015-05-29 15:57           ` Stephen Hemminger
2015-05-29  8:45         ` [dpdk-dev] [PATCH v9 10/12] igb: enable rx queue interrupts for PF Cunming Liang
2015-05-29  8:45         ` [dpdk-dev] [PATCH v9 11/12] l3fwd-power: enable one-shot rx interrupt and polling/interrupt mode switch Cunming Liang
2015-05-29  8:45         ` [dpdk-dev] [PATCH v9 12/12] abi: fix v2.1 abi broken issue Cunming Liang
2015-05-29 15:27           ` Stephen Hemminger
2015-06-01  8:48             ` Liang, Cunming
2015-06-01 13:27               ` Stephen Hemminger
2015-06-02  2:14                 ` Liang, Cunming
2015-05-29 15:36           ` Vincent JARDIN
2015-06-01 14:11           ` Stephen Hemminger
2015-06-01 14:18             ` Stephen Hemminger
2015-06-02  6:53         ` [dpdk-dev] [PATCH v10 00/13] Interrupt mode PMD Cunming Liang
2015-06-02  6:53           ` [dpdk-dev] [PATCH v10 01/13] eal/linux: add interrupt vectors support in intr_handle Cunming Liang
2015-06-02  6:53           ` [dpdk-dev] [PATCH v10 02/13] eal/linux: add rte_epoll_wait/ctl support Cunming Liang
2015-06-02 16:21             ` Stephen Hemminger
2015-06-03  7:16               ` Liang, Cunming
2015-06-02  6:53           ` [dpdk-dev] [PATCH v10 03/13] eal/linux: add API to set rx interrupt event monitor Cunming Liang
2015-06-02 16:23             ` Stephen Hemminger
2015-06-02 16:24             ` Stephen Hemminger
2015-06-03  7:19               ` Liang, Cunming
2015-06-02  6:53           ` [dpdk-dev] [PATCH v10 04/13] eal/linux: fix comments typo on vfio msi Cunming Liang
2015-06-02  6:53           ` [dpdk-dev] [PATCH v10 05/13] eal/linux: add interrupt vectors handling on VFIO Cunming Liang
2015-06-02  6:53           ` [dpdk-dev] [PATCH v10 06/13] eal/linux: standalone intr event fd create support Cunming Liang
2015-06-02 16:27             ` Stephen Hemminger
2015-06-03  7:17               ` Liang, Cunming
2015-06-02  6:53           ` [dpdk-dev] [PATCH v10 07/13] eal/linux: fix lsc read error in uio_pci_generic Cunming Liang
2015-06-02  6:53           ` [dpdk-dev] [PATCH v10 08/13] eal/bsd: dummy for new intr definition Cunming Liang
2015-06-02  6:53           ` [dpdk-dev] [PATCH v10 09/13] ethdev: add rx intr enable, disable and ctl functions Cunming Liang
2015-06-02  6:53           ` [dpdk-dev] [PATCH v10 10/13] ixgbe: enable rx queue interrupts for both PF and VF Cunming Liang
2015-06-02  6:53           ` [dpdk-dev] [PATCH v10 11/13] igb: enable rx queue interrupts for PF Cunming Liang
2015-06-02  6:53           ` [dpdk-dev] [PATCH v10 12/13] l3fwd-power: enable one-shot rx interrupt and polling/interrupt mode switch Cunming Liang
2015-06-02  6:53           ` [dpdk-dev] [PATCH v10 13/13] abi: fix v2.1 abi broken issue Cunming Liang
2015-06-05  8:19           ` [dpdk-dev] [PATCH v11 00/13] Interrupt mode PMD Cunming Liang
2015-06-05  8:19             ` [dpdk-dev] [PATCH v11 01/13] eal/linux: add interrupt vectors support in intr_handle Cunming Liang
2015-06-05  8:19             ` [dpdk-dev] [PATCH v11 02/13] eal/linux: add rte_epoll_wait/ctl support Cunming Liang
2015-06-05  8:20             ` [dpdk-dev] [PATCH v11 03/13] eal/linux: add API to set rx interrupt event monitor Cunming Liang
2015-06-05  8:20             ` [dpdk-dev] [PATCH v11 04/13] eal/linux: fix comments typo on vfio msi Cunming Liang
2015-06-05  8:20             ` [dpdk-dev] [PATCH v11 05/13] eal/linux: add interrupt vectors handling on VFIO Cunming Liang
2015-06-05  8:20             ` [dpdk-dev] [PATCH v11 06/13] eal/linux: standalone intr event fd create support Cunming Liang
2015-06-05  8:20             ` [dpdk-dev] [PATCH v11 07/13] eal/linux: fix lsc read error in uio_pci_generic Cunming Liang
2015-06-05  8:20             ` [dpdk-dev] [PATCH v11 08/13] eal/bsd: dummy for new intr definition Cunming Liang
2015-06-05  8:20             ` [dpdk-dev] [PATCH v11 09/13] ethdev: add rx intr enable, disable and ctl functions Cunming Liang
2015-06-05  8:20             ` [dpdk-dev] [PATCH v11 10/13] ixgbe: enable rx queue interrupts for both PF and VF Cunming Liang
2015-06-05  8:20             ` [dpdk-dev] [PATCH v11 11/13] igb: enable rx queue interrupts for PF Cunming Liang
2015-06-05  8:20             ` [dpdk-dev] [PATCH v11 12/13] l3fwd-power: enable one-shot rx interrupt and polling/interrupt mode switch Cunming Liang
2015-06-05  8:20             ` [dpdk-dev] [PATCH v11 13/13] abi: fix v2.1 abi broken issue Cunming Liang
2015-06-05  8:59             ` [dpdk-dev] [PATCH v11 00/13] Interrupt mode PMD Zhou, Danny
2015-06-08  5:28             ` [dpdk-dev] [PATCH v12 00/14] " Cunming Liang
2015-06-08  5:28               ` [dpdk-dev] [PATCH v12 01/14] eal/linux: add interrupt vectors support in intr_handle Cunming Liang
2015-06-08  5:28               ` [dpdk-dev] [PATCH v12 02/14] eal/linux: add rte_epoll_wait/ctl support Cunming Liang
2015-06-08  5:29               ` [dpdk-dev] [PATCH v12 03/14] eal/linux: add API to set rx interrupt event monitor Cunming Liang
2015-06-08  5:29               ` [dpdk-dev] [PATCH v12 04/14] eal/linux: fix comments typo on vfio msi Cunming Liang
2015-06-08  5:29               ` [dpdk-dev] [PATCH v12 05/14] eal/linux: add interrupt vectors handling on VFIO Cunming Liang
2015-06-08  5:29               ` [dpdk-dev] [PATCH v12 06/14] eal/linux: standalone intr event fd create support Cunming Liang
2015-06-08  5:29               ` [dpdk-dev] [PATCH v12 07/14] eal/linux: fix lsc read error in uio_pci_generic Cunming Liang
2015-06-08  5:29               ` [dpdk-dev] [PATCH v12 08/14] eal/bsd: dummy for new intr definition Cunming Liang
2015-06-08  5:29               ` [dpdk-dev] [PATCH v12 09/14] eal/bsd: fix inappropriate linuxapp referred in bsd Cunming Liang
2015-06-08  5:29               ` [dpdk-dev] [PATCH v12 10/14] ethdev: add rx intr enable, disable and ctl functions Cunming Liang
2015-06-08  5:29               ` [dpdk-dev] [PATCH v12 11/14] ixgbe: enable rx queue interrupts for both PF and VF Cunming Liang
2015-06-08  5:29               ` [dpdk-dev] [PATCH v12 12/14] igb: enable rx queue interrupts for PF Cunming Liang
2015-06-08  5:29               ` [dpdk-dev] [PATCH v12 13/14] l3fwd-power: enable one-shot rx interrupt and polling/interrupt mode switch Cunming Liang
2015-06-08  5:29               ` [dpdk-dev] [PATCH v12 14/14] abi: fix v2.1 abi broken issue Cunming Liang
2015-06-09 23:59               ` [dpdk-dev] [PATCH v12 00/14] Interrupt mode PMD Stephen Hemminger
2015-06-19  4:00               ` [dpdk-dev] [PATCH v13 " Cunming Liang
2015-06-19  4:00                 ` [dpdk-dev] [PATCH v13 01/14] eal/linux: add interrupt vectors support in intr_handle Cunming Liang
2015-07-13 16:40                   ` Thomas Monjalon
2015-07-17  5:27                     ` Liang, Cunming
2015-06-19  4:00                 ` [dpdk-dev] [PATCH v13 02/14] eal/linux: add rte_epoll_wait/ctl support Cunming Liang
2015-07-13 16:46                   ` Thomas Monjalon
2015-07-17  5:27                     ` Liang, Cunming
2015-07-13 16:56                   ` Thomas Monjalon
2015-07-17  5:47                     ` Liang, Cunming
2015-06-19  4:00                 ` [dpdk-dev] [PATCH v13 03/14] eal/linux: add API to set rx interrupt event monitor Cunming Liang
2015-06-19  4:00                 ` [dpdk-dev] [PATCH v13 04/14] eal/linux: fix comments typo on vfio msi Cunming Liang
2015-06-19  4:00                 ` [dpdk-dev] [PATCH v13 05/14] eal/linux: add interrupt vectors handling on VFIO Cunming Liang
2015-06-19  4:00                 ` [dpdk-dev] [PATCH v13 06/14] eal/linux: standalone intr event fd create support Cunming Liang
2015-07-13 17:01                   ` Thomas Monjalon
2015-07-17  5:49                     ` Liang, Cunming
2015-06-19  4:00                 ` [dpdk-dev] [PATCH v13 07/14] eal/linux: fix lsc read error in uio_pci_generic Cunming Liang
2015-06-19  4:00                 ` [dpdk-dev] [PATCH v13 08/14] eal/bsd: dummy for new intr definition Cunming Liang
2015-07-13 17:06                   ` Thomas Monjalon
2015-07-17  5:58                     ` Liang, Cunming
2015-06-19  4:00                 ` [dpdk-dev] [PATCH v13 09/14] eal/bsd: fix inappropriate linuxapp referred in bsd Cunming Liang
2015-06-19  4:00                 ` [dpdk-dev] [PATCH v13 10/14] ethdev: add rx intr enable, disable and ctl functions Cunming Liang
2015-06-19  4:00                 ` [dpdk-dev] [PATCH v13 11/14] ixgbe: enable rx queue interrupts for both PF and VF Cunming Liang
2015-06-19  4:00                 ` [dpdk-dev] [PATCH v13 12/14] igb: enable rx queue interrupts for PF Cunming Liang
2015-06-19  4:00                 ` [dpdk-dev] [PATCH v13 13/14] l3fwd-power: enable one-shot rx interrupt and polling/interrupt mode switch Cunming Liang
2015-07-13 17:12                   ` Thomas Monjalon
2015-07-17  5:59                     ` Liang, Cunming
2015-06-19  4:00                 ` [dpdk-dev] [PATCH v13 14/14] abi: fix v2.1 abi broken issue Cunming Liang
2015-07-09 13:58                 ` [dpdk-dev] [PATCH v13 00/14] Interrupt mode PMD David Marchand
2015-07-17  6:04                   ` Liang, Cunming
2015-07-17  6:16                 ` [dpdk-dev] [PATCH v14 00/13] " Cunming Liang
2015-07-17  6:16                   ` [dpdk-dev] [PATCH v14 01/13] eal/linux: add interrupt vectors support in intr_handle Cunming Liang
2015-07-19 23:31                     ` Thomas Monjalon
2015-07-20  2:02                       ` Liang, Cunming
2015-07-17  6:16                   ` [dpdk-dev] [PATCH v14 02/13] eal/linux: add rte_epoll_wait/ctl support Cunming Liang
2015-07-17  6:16                   ` [dpdk-dev] [PATCH v14 03/13] eal/linux: add API to set rx interrupt event monitor Cunming Liang
2015-07-17  6:16                   ` [dpdk-dev] [PATCH v14 04/13] eal/linux: fix comments typo on vfio msi Cunming Liang
2015-07-17  6:16                   ` [dpdk-dev] [PATCH v14 05/13] eal/linux: map eventfd to VFIO MSI-X intr vector Cunming Liang
2015-07-17  6:16                   ` [dpdk-dev] [PATCH v14 06/13] eal/linux: standalone intr event fd create support Cunming Liang
2015-07-19 23:35                     ` Thomas Monjalon
2015-07-19 23:39                       ` Thomas Monjalon
2015-07-20  2:08                         ` Liang, Cunming
2015-07-17  6:16                   ` [dpdk-dev] [PATCH v14 07/13] eal/linux: fix lsc read error in uio_pci_generic Cunming Liang
2015-07-17  6:16                   ` [dpdk-dev] [PATCH v14 08/13] eal/bsd: dummy for new intr definition Cunming Liang
2015-07-17  6:16                   ` [dpdk-dev] [PATCH v14 09/13] eal/bsd: fix inappropriate linuxapp referred in bsd Cunming Liang
2015-07-17  6:16                   ` [dpdk-dev] [PATCH v14 10/13] ethdev: add rx intr enable, disable and ctl functions Cunming Liang
2015-07-17 21:40                     ` Stephen Hemminger
2015-07-20  2:11                       ` Liang, Cunming
2015-07-17  6:16                   ` [dpdk-dev] [PATCH v14 11/13] ixgbe: enable rx queue interrupts for both PF and VF Cunming Liang
2015-07-17  6:16                   ` [dpdk-dev] [PATCH v14 12/13] igb: enable rx queue interrupts for PF Cunming Liang
2015-07-17  6:16                   ` [dpdk-dev] [PATCH v14 13/13] l3fwd-power: enable one-shot rx interrupt and polling/interrupt mode switch Cunming Liang
2015-07-20  3:02                   ` [dpdk-dev] [PATCH v15 00/13] Interrupt mode PMD Cunming Liang
2015-07-20  3:02                     ` [dpdk-dev] [PATCH v15 01/13] eal/linux: add interrupt vectors support in intr_handle Cunming Liang
2015-07-20  3:02                     ` [dpdk-dev] [PATCH v15 02/13] eal/linux: add rte_epoll_wait/ctl support Cunming Liang
2015-07-20  3:02                     ` [dpdk-dev] [PATCH v15 03/13] eal/linux: add API to set rx interrupt event monitor Cunming Liang
2015-07-20  3:02                     ` [dpdk-dev] [PATCH v15 04/13] eal/linux: fix comments typo on vfio msi Cunming Liang
2015-07-20  3:02                     ` [dpdk-dev] [PATCH v15 05/13] eal/linux: map eventfd to VFIO MSI-X intr vector Cunming Liang
2015-07-20  3:02                     ` [dpdk-dev] [PATCH v15 06/13] eal/linux: standalone intr event fd create support Cunming Liang
2015-07-20  3:02                     ` [dpdk-dev] [PATCH v15 07/13] eal/linux: fix lsc read error in uio_pci_generic Cunming Liang
2015-07-20  3:02                     ` [dpdk-dev] [PATCH v15 08/13] eal/bsd: dummy for new intr definition Cunming Liang
2015-07-27 21:17                       ` Thomas Monjalon
2015-07-20  3:02                     ` [dpdk-dev] [PATCH v15 09/13] eal/bsd: fix inappropriate linuxapp referred in bsd Cunming Liang
2015-07-20  3:02                     ` [dpdk-dev] [PATCH v15 10/13] ethdev: add rx intr enable, disable and ctl functions Cunming Liang
2015-07-20  3:02                     ` [dpdk-dev] [PATCH v15 11/13] ixgbe: enable rx queue interrupts for both PF and VF Cunming Liang
2015-07-20  3:02                     ` [dpdk-dev] [PATCH v15 12/13] igb: enable rx queue interrupts for PF Cunming Liang
2015-07-20  3:02                     ` [dpdk-dev] [PATCH v15 13/13] l3fwd-power: enable one-shot rx interrupt and polling/interrupt mode switch Cunming Liang
2015-07-27 16:50                       ` Thomas Monjalon
2015-07-23 14:18                     ` [dpdk-dev] [PATCH v15 00/13] Interrupt mode PMD Liang, Cunming
2015-07-27 21:34                       ` Thomas Monjalon
2015-05-05  5:53   ` [dpdk-dev] [PATCH v7 00/10] " Cunming Liang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CALwxeUu2GCzqR+RSgpp1GX=bCDpZTyPcqD4RQzsCx5d48RvBdQ@mail.gmail.com' \
    --to=david.marchand@6wind.com \
    --cc=cunming.liang@intel.com \
    --cc=dev@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).