* Re: [dpdk-dev] [PATCH] ethdev: get rxq interrupt fd
2018-09-28 3:43 [dpdk-dev] [PATCH] ethdev: get rxq interrupt fd Xiaoyun Li
@ 2018-09-28 8:33 ` Ferruh Yigit
2018-09-28 9:08 ` Li, Xiaoyun
2018-09-28 10:05 ` [dpdk-dev] [PATCH v2] " Xiaoyun Li
` (2 subsequent siblings)
3 siblings, 1 reply; 9+ messages in thread
From: Ferruh Yigit @ 2018-09-28 8:33 UTC (permalink / raw)
To: Xiaoyun Li, thomas, helin.zhang, damarion, ray.kinsella, dev
On 9/28/2018 4:43 AM, Xiaoyun Li wrote:
> Some users want to use their own epoll instances to control both
> DPDK rxq interrupt fds and their own other fds. So added a function
> to get rxq interrupt fd based on port id and queue id.
>
> Signed-off-by: Xiaoyun Li <xiaoyun.li@intel.com>
<...>
> @@ -2719,6 +2719,9 @@ int rte_eth_dev_rx_intr_ctl(uint16_t port_id, int epfd, int op, void *data);
> int rte_eth_dev_rx_intr_ctl_q(uint16_t port_id, uint16_t queue_id,
> int epfd, int op, void *data);
>
> +int rte_eth_dev_rx_intr_ctl_q_get_fd(uint16_t port_id, uint16_t queue_id,
> + int *fd);
Hi Xiaoyun,
API is missing documentation, please add doxygen comments.
New APIs need to be experimental, at least for one release.
Also can you please add it to .map file otherwise shared lib build will fail
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [dpdk-dev] [PATCH] ethdev: get rxq interrupt fd
2018-09-28 8:33 ` Ferruh Yigit
@ 2018-09-28 9:08 ` Li, Xiaoyun
0 siblings, 0 replies; 9+ messages in thread
From: Li, Xiaoyun @ 2018-09-28 9:08 UTC (permalink / raw)
To: Yigit, Ferruh, thomas, Zhang, Helin, damarion, Kinsella, Ray, dev
OK. Thanks.
> -----Original Message-----
> From: Yigit, Ferruh
> Sent: Friday, September 28, 2018 16:33
> To: Li, Xiaoyun <xiaoyun.li@intel.com>; thomas@monjalon.net; Zhang, Helin
> <helin.zhang@intel.com>; damarion@cisco.com; Kinsella, Ray
> <ray.kinsella@intel.com>; dev@dpdk.org
> Subject: Re: [PATCH] ethdev: get rxq interrupt fd
>
> On 9/28/2018 4:43 AM, Xiaoyun Li wrote:
> > Some users want to use their own epoll instances to control both DPDK
> > rxq interrupt fds and their own other fds. So added a function to get
> > rxq interrupt fd based on port id and queue id.
> >
> > Signed-off-by: Xiaoyun Li <xiaoyun.li@intel.com>
>
> <...>
>
> > @@ -2719,6 +2719,9 @@ int rte_eth_dev_rx_intr_ctl(uint16_t port_id,
> > int epfd, int op, void *data); int rte_eth_dev_rx_intr_ctl_q(uint16_t
> port_id, uint16_t queue_id,
> > int epfd, int op, void *data);
> >
> > +int rte_eth_dev_rx_intr_ctl_q_get_fd(uint16_t port_id, uint16_t
> queue_id,
> > + int *fd);
>
>
> Hi Xiaoyun,
>
> API is missing documentation, please add doxygen comments.
>
> New APIs need to be experimental, at least for one release.
> Also can you please add it to .map file otherwise shared lib build will fail
^ permalink raw reply [flat|nested] 9+ messages in thread
* [dpdk-dev] [PATCH v2] ethdev: get rxq interrupt fd
2018-09-28 3:43 [dpdk-dev] [PATCH] ethdev: get rxq interrupt fd Xiaoyun Li
2018-09-28 8:33 ` Ferruh Yigit
@ 2018-09-28 10:05 ` Xiaoyun Li
2018-09-28 12:46 ` [dpdk-dev] [PATCH] " Stephen Hemminger
2018-09-29 2:12 ` [dpdk-dev] [PATCH v3] " Xiaoyun Li
3 siblings, 0 replies; 9+ messages in thread
From: Xiaoyun Li @ 2018-09-28 10:05 UTC (permalink / raw)
To: ferruh.yigit, thomas, damarion; +Cc: helin.zhang, ray.kinsella, dev, Xiaoyun Li
Some users want to use their own epoll instances to control both
DPDK rxq interrupt fds and their own other fds. So added a function
to get rxq interrupt fd based on port id and queue id.
Signed-off-by: Xiaoyun Li <xiaoyun.li@intel.com>
---
v2:
* Added missing API doxygen comments.
* Set the new API to be experimental and added it in .map file.
---
lib/librte_ethdev/rte_ethdev.c | 37 ++++++++++++++++++++++++
lib/librte_ethdev/rte_ethdev.h | 22 ++++++++++++++
lib/librte_ethdev/rte_ethdev_version.map | 1 +
3 files changed, 60 insertions(+)
diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c
index ef99f7068..7c580ec68 100644
--- a/lib/librte_ethdev/rte_ethdev.c
+++ b/lib/librte_ethdev/rte_ethdev.c
@@ -3433,6 +3433,43 @@ rte_eth_dev_rx_intr_ctl(uint16_t port_id, int epfd, int op, void *data)
return 0;
}
+int __rte_experimental
+rte_eth_dev_rx_intr_ctl_q_get_fd(uint16_t port_id, uint16_t queue_id,
+ int *fd)
+{
+ struct rte_intr_handle *intr_handle;
+ struct rte_eth_dev *dev;
+ unsigned int efd_idx;
+ uint32_t vec;
+
+ RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);
+
+ dev = &rte_eth_devices[port_id];
+
+ if (queue_id >= dev->data->nb_rx_queues) {
+ RTE_ETHDEV_LOG(ERR, "Invalid RX queue_id=%u\n", queue_id);
+ return -EINVAL;
+ }
+
+ if (!dev->intr_handle) {
+ RTE_ETHDEV_LOG(ERR, "RX Intr handle unset\n");
+ return -ENOTSUP;
+ }
+
+ intr_handle = dev->intr_handle;
+ if (!intr_handle->intr_vec) {
+ RTE_ETHDEV_LOG(ERR, "RX Intr vector unset\n");
+ return -EPERM;
+ }
+
+ vec = intr_handle->intr_vec[queue_id];
+ efd_idx = (vec >= RTE_INTR_VEC_RXTX_OFFSET) ?
+ (vec - RTE_INTR_VEC_RXTX_OFFSET) : vec;
+ *fd = intr_handle->efds[efd_idx];
+
+ return 0;
+}
+
const struct rte_memzone *
rte_eth_dma_zone_reserve(const struct rte_eth_dev *dev, const char *ring_name,
uint16_t queue_id, size_t size, unsigned align,
diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
index 012577b0a..8f6a5d08b 100644
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -2719,6 +2719,28 @@ int rte_eth_dev_rx_intr_ctl(uint16_t port_id, int epfd, int op, void *data);
int rte_eth_dev_rx_intr_ctl_q(uint16_t port_id, uint16_t queue_id,
int epfd, int op, void *data);
+/**
+ * @warning
+ * @b EXPERIMENTAL: this API may change without prior notice.
+ *
+ * Get interrupt fd per Rx queue.
+ *
+ * @param port_id
+ * The port identifier of the Ethernet device.
+ * @param queue_id
+ * The index of the receive queue from which to retrieve input packets.
+ * The value must be in the range [0, nb_rx_queue - 1] previously supplied
+ * to rte_eth_dev_configure().
+ * @param fd
+ * The interrupt fd which the requested Rx queue associated to.
+ * @return
+ * - On success, zero.
+ * - On failure, a negative value.
+ */
+int __rte_experimental
+rte_eth_dev_rx_intr_ctl_q_get_fd(uint16_t port_id, uint16_t queue_id,
+ int *fd);
+
/**
* Turn on the LED on the Ethernet device.
* This function turns on the LED on the Ethernet device.
diff --git a/lib/librte_ethdev/rte_ethdev_version.map b/lib/librte_ethdev/rte_ethdev_version.map
index 38f117f01..c98f9fa4a 100644
--- a/lib/librte_ethdev/rte_ethdev_version.map
+++ b/lib/librte_ethdev/rte_ethdev_version.map
@@ -235,6 +235,7 @@ EXPERIMENTAL {
rte_eth_dev_owner_new;
rte_eth_dev_owner_set;
rte_eth_dev_owner_unset;
+ rte_eth_dev_rx_intr_ctl_q_get_fd;
rte_eth_dev_rx_offload_name;
rte_eth_dev_tx_offload_name;
rte_eth_switch_domain_alloc;
--
2.17.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [dpdk-dev] [PATCH] ethdev: get rxq interrupt fd
2018-09-28 3:43 [dpdk-dev] [PATCH] ethdev: get rxq interrupt fd Xiaoyun Li
2018-09-28 8:33 ` Ferruh Yigit
2018-09-28 10:05 ` [dpdk-dev] [PATCH v2] " Xiaoyun Li
@ 2018-09-28 12:46 ` Stephen Hemminger
2018-09-29 1:57 ` Li, Xiaoyun
2018-09-29 2:12 ` [dpdk-dev] [PATCH v3] " Xiaoyun Li
3 siblings, 1 reply; 9+ messages in thread
From: Stephen Hemminger @ 2018-09-28 12:46 UTC (permalink / raw)
To: Li, Xiaoyun
Cc: Ferruh Yigit, Thomas Monjalon, helin.zhang, damarion, ray.kinsella, dev
In general, an API is less error prone if it only does return by value.
What about just returning fd or -1?
On Fri, Sep 28, 2018, 5:55 AM Xiaoyun Li <xiaoyun.li@intel.com> wrote:
> Some users want to use their own epoll instances to control both
> DPDK rxq interrupt fds and their own other fds. So added a function
> to get rxq interrupt fd based on port id and queue id.
>
> Signed-off-by: Xiaoyun Li <xiaoyun.li@intel.com>
> ---
> lib/librte_ethdev/rte_ethdev.c | 37 ++++++++++++++++++++++++++++++++++
> lib/librte_ethdev/rte_ethdev.h | 3 +++
> 2 files changed, 40 insertions(+)
>
> diff --git a/lib/librte_ethdev/rte_ethdev.c
> b/lib/librte_ethdev/rte_ethdev.c
> index ef99f7068..c21124e32 100644
> --- a/lib/librte_ethdev/rte_ethdev.c
> +++ b/lib/librte_ethdev/rte_ethdev.c
> @@ -3433,6 +3433,43 @@ rte_eth_dev_rx_intr_ctl(uint16_t port_id, int epfd,
> int op, void *data)
> return 0;
> }
>
> +int
> +rte_eth_dev_rx_intr_ctl_q_get_fd(uint16_t port_id, uint16_t queue_id,
> + int *fd)
> +{
> + struct rte_intr_handle *intr_handle;
> + struct rte_eth_dev *dev;
> + unsigned int efd_idx;
> + uint32_t vec;
> +
> + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);
> +
> + dev = &rte_eth_devices[port_id];
> +
> + if (queue_id >= dev->data->nb_rx_queues) {
> + RTE_ETHDEV_LOG(ERR, "Invalid RX queue_id=%u\n", queue_id);
> + return -EINVAL;
> + }
> +
> + if (!dev->intr_handle) {
> + RTE_ETHDEV_LOG(ERR, "RX Intr handle unset\n");
> + return -ENOTSUP;
> + }
> +
> + intr_handle = dev->intr_handle;
> + if (!intr_handle->intr_vec) {
> + RTE_ETHDEV_LOG(ERR, "RX Intr vector unset\n");
> + return -EPERM;
> + }
> +
> + vec = intr_handle->intr_vec[queue_id];
> + efd_idx = (vec >= RTE_INTR_VEC_RXTX_OFFSET) ?
> + (vec - RTE_INTR_VEC_RXTX_OFFSET) : vec;
> + *fd = intr_handle->efds[efd_idx];
> +
> + return 0;
> +}
> +
> const struct rte_memzone *
> rte_eth_dma_zone_reserve(const struct rte_eth_dev *dev, const char
> *ring_name,
> uint16_t queue_id, size_t size, unsigned align,
> diff --git a/lib/librte_ethdev/rte_ethdev.h
> b/lib/librte_ethdev/rte_ethdev.h
> index 012577b0a..3670d7249 100644
> --- a/lib/librte_ethdev/rte_ethdev.h
> +++ b/lib/librte_ethdev/rte_ethdev.h
> @@ -2719,6 +2719,9 @@ int rte_eth_dev_rx_intr_ctl(uint16_t port_id, int
> epfd, int op, void *data);
> int rte_eth_dev_rx_intr_ctl_q(uint16_t port_id, uint16_t queue_id,
> int epfd, int op, void *data);
>
> +int rte_eth_dev_rx_intr_ctl_q_get_fd(uint16_t port_id, uint16_t queue_id,
> + int *fd);
> +
> /**
> * Turn on the LED on the Ethernet device.
> * This function turns on the LED on the Ethernet device.
> --
> 2.17.1
>
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [dpdk-dev] [PATCH] ethdev: get rxq interrupt fd
2018-09-28 12:46 ` [dpdk-dev] [PATCH] " Stephen Hemminger
@ 2018-09-29 1:57 ` Li, Xiaoyun
0 siblings, 0 replies; 9+ messages in thread
From: Li, Xiaoyun @ 2018-09-29 1:57 UTC (permalink / raw)
To: Stephen Hemminger
Cc: Yigit, Ferruh, Thomas Monjalon, Zhang, Helin, damarion, Kinsella,
Ray, dev
Sure. Anyway there is an error log to indicate the error.
I will send v3 later. Thanks.
From: Stephen Hemminger [mailto:stephen@networkplumber.org]
Sent: Friday, September 28, 2018 20:47
To: Li, Xiaoyun <xiaoyun.li@intel.com>
Cc: Yigit, Ferruh <ferruh.yigit@intel.com>; Thomas Monjalon <thomas@monjalon.net>; Zhang, Helin <helin.zhang@intel.com>; damarion@cisco.com; Kinsella, Ray <ray.kinsella@intel.com>; dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH] ethdev: get rxq interrupt fd
In general, an API is less error prone if it only does return by value. What about just returning fd or -1?
On Fri, Sep 28, 2018, 5:55 AM Xiaoyun Li <xiaoyun.li@intel.com<mailto:xiaoyun.li@intel.com>> wrote:
Some users want to use their own epoll instances to control both
DPDK rxq interrupt fds and their own other fds. So added a function
to get rxq interrupt fd based on port id and queue id.
Signed-off-by: Xiaoyun Li <xiaoyun.li@intel.com<mailto:xiaoyun.li@intel.com>>
---
lib/librte_ethdev/rte_ethdev.c | 37 ++++++++++++++++++++++++++++++++++
lib/librte_ethdev/rte_ethdev.h | 3 +++
2 files changed, 40 insertions(+)
diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c
index ef99f7068..c21124e32 100644
--- a/lib/librte_ethdev/rte_ethdev.c
+++ b/lib/librte_ethdev/rte_ethdev.c
@@ -3433,6 +3433,43 @@ rte_eth_dev_rx_intr_ctl(uint16_t port_id, int epfd, int op, void *data)
return 0;
}
+int
+rte_eth_dev_rx_intr_ctl_q_get_fd(uint16_t port_id, uint16_t queue_id,
+ int *fd)
+{
+ struct rte_intr_handle *intr_handle;
+ struct rte_eth_dev *dev;
+ unsigned int efd_idx;
+ uint32_t vec;
+
+ RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);
+
+ dev = &rte_eth_devices[port_id];
+
+ if (queue_id >= dev->data->nb_rx_queues) {
+ RTE_ETHDEV_LOG(ERR, "Invalid RX queue_id=%u\n", queue_id);
+ return -EINVAL;
+ }
+
+ if (!dev->intr_handle) {
+ RTE_ETHDEV_LOG(ERR, "RX Intr handle unset\n");
+ return -ENOTSUP;
+ }
+
+ intr_handle = dev->intr_handle;
+ if (!intr_handle->intr_vec) {
+ RTE_ETHDEV_LOG(ERR, "RX Intr vector unset\n");
+ return -EPERM;
+ }
+
+ vec = intr_handle->intr_vec[queue_id];
+ efd_idx = (vec >= RTE_INTR_VEC_RXTX_OFFSET) ?
+ (vec - RTE_INTR_VEC_RXTX_OFFSET) : vec;
+ *fd = intr_handle->efds[efd_idx];
+
+ return 0;
+}
+
const struct rte_memzone *
rte_eth_dma_zone_reserve(const struct rte_eth_dev *dev, const char *ring_name,
uint16_t queue_id, size_t size, unsigned align,
diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
index 012577b0a..3670d7249 100644
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -2719,6 +2719,9 @@ int rte_eth_dev_rx_intr_ctl(uint16_t port_id, int epfd, int op, void *data);
int rte_eth_dev_rx_intr_ctl_q(uint16_t port_id, uint16_t queue_id,
int epfd, int op, void *data);
+int rte_eth_dev_rx_intr_ctl_q_get_fd(uint16_t port_id, uint16_t queue_id,
+ int *fd);
+
/**
* Turn on the LED on the Ethernet device.
* This function turns on the LED on the Ethernet device.
--
2.17.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [dpdk-dev] [PATCH v3] ethdev: get rxq interrupt fd
2018-09-28 3:43 [dpdk-dev] [PATCH] ethdev: get rxq interrupt fd Xiaoyun Li
` (2 preceding siblings ...)
2018-09-28 12:46 ` [dpdk-dev] [PATCH] " Stephen Hemminger
@ 2018-09-29 2:12 ` Xiaoyun Li
2018-10-02 10:48 ` Ferruh Yigit
3 siblings, 1 reply; 9+ messages in thread
From: Xiaoyun Li @ 2018-09-29 2:12 UTC (permalink / raw)
To: ferruh.yigit, thomas, damarion, stephen
Cc: helin.zhang, ray.kinsella, dev, Xiaoyun Li
Some users want to use their own epoll instances to control both
DPDK rxq interrupt fds and their own other fds. So added a function
to get rxq interrupt fd based on port id and queue id.
Signed-off-by: Xiaoyun Li <xiaoyun.li@intel.com>
---
v3:
* Since the API only wants to return fd, return fd or -1.
v2:
* Added missing API doxygen comments.
* Set the new API to be experimental and added it in .map file.
---
lib/librte_ethdev/rte_ethdev.c | 37 ++++++++++++++++++++++++
lib/librte_ethdev/rte_ethdev.h | 20 +++++++++++++
lib/librte_ethdev/rte_ethdev_version.map | 1 +
3 files changed, 58 insertions(+)
diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c
index ef99f7068..4930eb6ff 100644
--- a/lib/librte_ethdev/rte_ethdev.c
+++ b/lib/librte_ethdev/rte_ethdev.c
@@ -3433,6 +3433,43 @@ rte_eth_dev_rx_intr_ctl(uint16_t port_id, int epfd, int op, void *data)
return 0;
}
+int __rte_experimental
+rte_eth_dev_rx_intr_ctl_q_get_fd(uint16_t port_id, uint16_t queue_id)
+{
+ struct rte_intr_handle *intr_handle;
+ struct rte_eth_dev *dev;
+ unsigned int efd_idx;
+ uint32_t vec;
+ int fd;
+
+ RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -1);
+
+ dev = &rte_eth_devices[port_id];
+
+ if (queue_id >= dev->data->nb_rx_queues) {
+ RTE_ETHDEV_LOG(ERR, "Invalid RX queue_id=%u\n", queue_id);
+ return -1;
+ }
+
+ if (!dev->intr_handle) {
+ RTE_ETHDEV_LOG(ERR, "RX Intr handle unset\n");
+ return -1;
+ }
+
+ intr_handle = dev->intr_handle;
+ if (!intr_handle->intr_vec) {
+ RTE_ETHDEV_LOG(ERR, "RX Intr vector unset\n");
+ return -1;
+ }
+
+ vec = intr_handle->intr_vec[queue_id];
+ efd_idx = (vec >= RTE_INTR_VEC_RXTX_OFFSET) ?
+ (vec - RTE_INTR_VEC_RXTX_OFFSET) : vec;
+ fd = intr_handle->efds[efd_idx];
+
+ return fd;
+}
+
const struct rte_memzone *
rte_eth_dma_zone_reserve(const struct rte_eth_dev *dev, const char *ring_name,
uint16_t queue_id, size_t size, unsigned align,
diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
index 012577b0a..f9366f3f0 100644
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -2719,6 +2719,26 @@ int rte_eth_dev_rx_intr_ctl(uint16_t port_id, int epfd, int op, void *data);
int rte_eth_dev_rx_intr_ctl_q(uint16_t port_id, uint16_t queue_id,
int epfd, int op, void *data);
+/**
+ * @warning
+ * @b EXPERIMENTAL: this API may change without prior notice.
+ *
+ * Get interrupt fd per Rx queue.
+ *
+ * @param port_id
+ * The port identifier of the Ethernet device.
+ * @param queue_id
+ * The index of the receive queue from which to retrieve input packets.
+ * The value must be in the range [0, nb_rx_queue - 1] previously supplied
+ * to rte_eth_dev_configure().
+ * @return
+ * - (>=0) the interrupt fd associated to the requested Rx queue if
+ * successful.
+ * - (-1) on error.
+ */
+int __rte_experimental
+rte_eth_dev_rx_intr_ctl_q_get_fd(uint16_t port_id, uint16_t queue_id);
+
/**
* Turn on the LED on the Ethernet device.
* This function turns on the LED on the Ethernet device.
diff --git a/lib/librte_ethdev/rte_ethdev_version.map b/lib/librte_ethdev/rte_ethdev_version.map
index 38f117f01..c98f9fa4a 100644
--- a/lib/librte_ethdev/rte_ethdev_version.map
+++ b/lib/librte_ethdev/rte_ethdev_version.map
@@ -235,6 +235,7 @@ EXPERIMENTAL {
rte_eth_dev_owner_new;
rte_eth_dev_owner_set;
rte_eth_dev_owner_unset;
+ rte_eth_dev_rx_intr_ctl_q_get_fd;
rte_eth_dev_rx_offload_name;
rte_eth_dev_tx_offload_name;
rte_eth_switch_domain_alloc;
--
2.17.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [dpdk-dev] [PATCH v3] ethdev: get rxq interrupt fd
2018-09-29 2:12 ` [dpdk-dev] [PATCH v3] " Xiaoyun Li
@ 2018-10-02 10:48 ` Ferruh Yigit
2018-10-04 15:31 ` Ferruh Yigit
0 siblings, 1 reply; 9+ messages in thread
From: Ferruh Yigit @ 2018-10-02 10:48 UTC (permalink / raw)
To: Xiaoyun Li, thomas, damarion, stephen; +Cc: helin.zhang, ray.kinsella, dev
On 9/29/2018 3:12 AM, Xiaoyun Li wrote:
> Some users want to use their own epoll instances to control both
> DPDK rxq interrupt fds and their own other fds. So added a function
> to get rxq interrupt fd based on port id and queue id.
>
> Signed-off-by: Xiaoyun Li <xiaoyun.li@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [dpdk-dev] [PATCH v3] ethdev: get rxq interrupt fd
2018-10-02 10:48 ` Ferruh Yigit
@ 2018-10-04 15:31 ` Ferruh Yigit
0 siblings, 0 replies; 9+ messages in thread
From: Ferruh Yigit @ 2018-10-04 15:31 UTC (permalink / raw)
To: Xiaoyun Li, thomas, damarion, stephen; +Cc: helin.zhang, ray.kinsella, dev
On 10/2/2018 11:48 AM, Ferruh Yigit wrote:
> On 9/29/2018 3:12 AM, Xiaoyun Li wrote:
>> Some users want to use their own epoll instances to control both
>> DPDK rxq interrupt fds and their own other fds. So added a function
>> to get rxq interrupt fd based on port id and queue id.
>>
>> Signed-off-by: Xiaoyun Li <xiaoyun.li@intel.com>
>
> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Applied to dpdk-next-net/master, thanks.
^ permalink raw reply [flat|nested] 9+ messages in thread