From: Thomas Monjalon <thomas@monjalon.net>
To: SteveX Yang <stevex.yang@intel.com>
Cc: dev@dpdk.org, qiming.yang@intel.com, beilei.xing@intel.com,
jingjing.wu@intel.com, Qi Zhang <qi.z.zhang@intel.com>,
ferruh.yigit@intel.com
Subject: Re: [dpdk-dev] [PATCH] net/iavf: release port upon close
Date: Mon, 14 Sep 2020 00:25:39 +0200 [thread overview]
Message-ID: <9724451.1XQYmnX9Yp@thomas> (raw)
In-Reply-To: <2832850.hRueZzFlNT@thomas>
As you may notice, I have included a slightly modified version
of this patch in my series in order to cover the full picture:
https://patches.dpdk.org/patch/77559/
Feel free to continue improving your patch in this thread or the other,
as you prefer, as long as the secondary process issue is adressed.
Thanks
13/09/2020 10:53, Thomas Monjalon:
> Hi,
>
> SteveX Yang <stevex.yang@intel.com> wrote:
> > Set RTE_ETH_DEV_CLOSE_REMOVE upon probe so all the private resources
> > for the port can be freed by rte_eth_dev_close().
> >
> > Signed-off-by: SteveX Yang <stevex.yang@intel.com>
>
> I guess the X is not part of your name.
>
> [...]
> > -static int
> > -iavf_dev_uninit(struct rte_eth_dev *dev)
> > -{
> > - struct iavf_info *vf = IAVF_DEV_PRIVATE_TO_VF(dev->data->dev_private);
> > -
> > - if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> > - return -EPERM;
>
> All the code below is moved from iavf_dev_uninit() where it was
> restricted to the primary process, to iavf_dev_close() which can be
> called from the primary process.
> It looks inconsistent.
>
> >
> > dev->dev_ops = NULL;
> > dev->rx_pkt_burst = NULL;
> > dev->tx_pkt_burst = NULL;
> >
> > - iavf_dev_close(dev);
> > +
> > + if (vf->vf_res->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_RSS_PF) {
> > + if (vf->rss_lut) {
> > + rte_free(vf->rss_lut);
> > + vf->rss_lut = NULL;
> > + }
> > + if (vf->rss_key) {
> > + rte_free(vf->rss_key);
> > + vf->rss_key = NULL;
> > + }
> > + }
> >
> > rte_free(vf->vf_res);
> > vf->vsi_res = NULL;
> >
> > @@ -1449,15 +1456,15 @@ iavf_dev_uninit(struct rte_eth_dev *dev)
> >
> > rte_free(vf->aq_resp);
> > vf->aq_resp = NULL;
> >
> > +}
> >
> > - if (vf->rss_lut) {
> > - rte_free(vf->rss_lut);
> > - vf->rss_lut = NULL;
> > - }
> > - if (vf->rss_key) {
> > - rte_free(vf->rss_key);
> > - vf->rss_key = NULL;
> > - }
> > +static int
> > +iavf_dev_uninit(struct rte_eth_dev *dev)
> > +{
> > + if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> > + return -EPERM;
> > +
> > + iavf_dev_close(dev);
>
> Are you sure about what should be freed in the secondary process?
> If iavf_dev_close() should not be called by the secondary process,
> you should move the check inside the function,
> because iavf_dev_close() is also called by rte_eth_dev_close().
>
> >
> > return 0;
> >
> > }
prev parent reply other threads:[~2020-09-13 22:25 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-11 7:27 [dpdk-dev] [PATCH] net/iavf: release port upon close SteveX Yang
2020-09-03 12:30 ` Zhang, Qi Z
2020-09-13 8:53 ` Thomas Monjalon
2020-09-13 22:25 ` Thomas Monjalon [this message]
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=9724451.1XQYmnX9Yp@thomas \
--to=thomas@monjalon.net \
--cc=beilei.xing@intel.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@intel.com \
--cc=jingjing.wu@intel.com \
--cc=qi.z.zhang@intel.com \
--cc=qiming.yang@intel.com \
--cc=stevex.yang@intel.com \
/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.