From: Ferruh Yigit <ferruh.yigit@intel.com>
To: Raslan Darawsheh <rasland@mellanox.com>,
"keith.wiles@intel.com" <keith.wiles@intel.com>
Cc: Thomas Monjalon <thomas@monjalon.net>,
"dev@dpdk.org" <dev@dpdk.org>,
Shahaf Shuler <shahafs@mellanox.com>,
Ori Kam <orika@mellanox.com>
Subject: Re: [PATCH v4 1/2] net/tap: change queue fd to be pointers to process private
Date: Wed, 3 Oct 2018 18:59:09 +0100 [thread overview]
Message-ID: <c943c2c1-724e-d22c-da4e-cb1ef06f9f30@intel.com> (raw)
In-Reply-To: <1538476438-20891-1-git-send-email-rasland@mellanox.com>
On 10/2/2018 11:34 AM, Raslan Darawsheh wrote:
> change the fds for the queues to be pointers and add new process private
> structure and make the queue fds point to it.
>
> Signed-off-by: Raslan Darawsheh <rasland@mellanox.com>
> ---
> drivers/net/tap/rte_eth_tap.c | 63 ++++++++++++++++++++++++-------------------
> drivers/net/tap/rte_eth_tap.h | 9 +++++--
> drivers/net/tap/tap_intr.c | 4 +--
> 3 files changed, 44 insertions(+), 32 deletions(-)
>
> diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c
> index ad5ae98..8cc4552 100644
> --- a/drivers/net/tap/rte_eth_tap.c
> +++ b/drivers/net/tap/rte_eth_tap.c
> @@ -64,6 +64,7 @@
>
> static struct rte_vdev_driver pmd_tap_drv;
> static struct rte_vdev_driver pmd_tun_drv;
> +static struct pmd_process_private *process_private;
This is the handlers for eth_dev queues, this should be _per eth_dev_, you can't
have a single global variable for this, we will see the problems below.
<...>
> @@ -1633,6 +1634,10 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name,
> goto error_exit_nodev;
> }
>
> + process_private = (struct pmd_process_private *)
> + rte_zmalloc_socket(tap_name, sizeof(struct pmd_process_private),
> + RTE_CACHE_LINE_SIZE, dev->device->numa_node);
For each tap device, you overwrite the "process_private",
- So it has the address of last created tap device, we will come back this one
- and problem is how to free this back if an eth_dev removed? We lost references
except last one.
> +
> pmd = dev->data->dev_private;
> pmd->dev = dev;
> snprintf(pmd->name, sizeof(pmd->name), "%s", tap_name);
> @@ -1669,8 +1674,10 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name,
> /* Presetup the fds to -1 as being not valid */
> pmd->ka_fd = -1;
> for (i = 0; i < RTE_PMD_TAP_MAX_QUEUES; i++) {
> - pmd->rxq[i].fd = -1;
> - pmd->txq[i].fd = -1;
> + process_private->rxq_fds[i] = -1;
> + process_private->txq_fds[i] = -1;
> + pmd->rxq[i].fd = &process_private->rxq_fds[i];
> + pmd->txq[i].fd = &process_private->txq_fds[i];
for eth_dev, dev->data->dev_private->rxq[i].fd points to a memory address,
and remember "dev->data->dev_private" is shared between primary and secondary,
when secondary updates its rxq[i].fd to point its memory block, won't it corrupt
the primary???
I think redirection is not helping here, I am not sure to the this within the
shared memory, you need a not shared area.
next prev parent reply other threads:[~2018-10-03 17:59 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-07 12:29 [RFC] net/tap: add queues when attaching from secondary process Raslan Darawsheh
2018-06-07 19:09 ` Wiles, Keith
2018-06-07 23:24 ` Raslan Darawsheh
2018-06-08 2:52 ` Wiles, Keith
2018-06-12 12:46 ` Wiles, Keith
2018-06-12 13:21 ` Raslan Darawsheh
2018-07-20 10:57 ` [PATCH v2] " Thomas Monjalon
2018-09-27 11:19 ` [PATCH v3 1/2] net/tap: change queue fd to be pointers to process private Raslan Darawsheh
2018-09-27 11:19 ` [PATCH v3 2/2] net/tap: add queues when attaching from secondary process Raslan Darawsheh
2018-09-27 13:04 ` Wiles, Keith
2018-09-27 18:53 ` Thomas Monjalon
2018-10-02 10:34 ` [PATCH v4 1/2] net/tap: change queue fd to be pointers to process private Raslan Darawsheh
2018-10-02 10:34 ` [PATCH v4 2/2] net/tap: add queues when attaching from secondary process Raslan Darawsheh
2018-10-02 10:41 ` Thomas Monjalon
2018-10-02 10:50 ` Raslan Darawsheh
2018-10-02 11:38 ` Thomas Monjalon
2018-10-03 16:28 ` Ferruh Yigit
2018-10-02 10:43 ` Thomas Monjalon
2018-10-03 16:31 ` Ferruh Yigit
2018-10-03 18:00 ` Ferruh Yigit
2018-10-03 17:59 ` Ferruh Yigit [this message]
2018-09-27 13:17 ` [PATCH v3 1/2] net/tap: change queue fd to be pointers to process private Wiles, Keith
2018-10-02 10:30 ` Raslan Darawsheh
2018-10-02 12:58 ` Wiles, Keith
2018-10-03 17:27 ` Ferruh Yigit
2018-07-20 11:15 ` [PATCH v3] net/tap: add queues when attaching from secondary process Thomas Monjalon
2018-07-20 15:35 ` Wiles, Keith
2018-07-20 21:51 ` Thomas Monjalon
2018-07-21 13:44 ` Wiles, Keith
2018-08-23 11:51 ` Ferruh Yigit
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=c943c2c1-724e-d22c-da4e-cb1ef06f9f30@intel.com \
--to=ferruh.yigit@intel.com \
--cc=dev@dpdk.org \
--cc=keith.wiles@intel.com \
--cc=orika@mellanox.com \
--cc=rasland@mellanox.com \
--cc=shahafs@mellanox.com \
--cc=thomas@monjalon.net \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.