[dpdk-dev] [RFC PATCH 0/5] Introduce low-latency one-shot rx interrupt into DPDK with polling/interrupt switch control example

Zhou, Danny danny.zhou at intel.com
Fri Jan 23 11:16:38 CET 2015


Thanks Ivan for your time spending on reviewing the patchset. Will fix those issues 
When submitting official patchset.

> -----Original Message-----
> From: Ivan Boule [mailto:ivan.boule at 6wind.com]
> Sent: Friday, January 23, 2015 5:22 PM
> To: Zhou, Danny; dev at dpdk.org
> Subject: Re: [dpdk-dev] [RFC PATCH 0/5] Introduce low-latency one-shot rx interrupt into DPDK with polling/interrupt switch
> control example
> 
> Hello Danny,
> 
> 
> On 01/20/2015 10:53 AM, Danny Zhou wrote:
> > DPDK interrupt notification/handling mechanism is based on UIO with
> > below limitation:
> > 1) It is designed to handle LSC interrupt only with inefficient
> > suspended pthread wakeup procedure (e.g. UIO wakes up LSC interrupt
> > handling thread which then wakes up DPDK polling thread). In this way,
> > it introduces non-deterministic wakeup latency for DPDK polling thread
> > as well as packet latency if it is used to handle Rx interrupt.
> > 2) UIO only supports a single interrupt vector which has to been shared
> > by LSC interrupt and interrupts assigned to dedicated rx queues.
> >
> > This patchset includes below features:
> > 1) Enable one-shot rx queue interrupt in ixgbe PMD for PF as well as VF.
> > 2) Build on top of the VFIO mechanism instead of UIO, so it could support
> > up to 64 interrupt vectors for rx queue interrupts.
> > 3) Have 1 DPDK polling thread handle per Rx queue interrupt with a
> > dedicated VFIO eventfd, which eliminates non-deterministic pthread wakeup
> > latency in user space.
> > 4) Demonstrate interrupts control APIs and userspace NAIP-like
> > polling/interrupt switch algorithms in L3fwd-power example.
> 
> In the patch 3/5:
> 
> - the function eal_intr_process_rx_interrupts() systematically returns
> 0. It should be declared as "void" (and get rid of the return 0).
> 
> - the function eal_intr_handle_rx_interrupts() loops again when
> epoll_wait() returns with errno == EINTR.
>    It should also return in this case.
> 
> - the function rte_eal_wait_rx_intr() should not invoke rte_panic() but
> instead return "-errno" upon system call failure.
> 
> With these fixes:
> Acked-By: Ivan Boule <ivan.boule at 6wind.com>
> 
> --
> Ivan Boule
> 6WIND Development Engineer


More information about the dev mailing list