From: Olivier Matz <olivier.matz@6wind.com>
To: "Nélio Laranjeiro" <nelio.laranjeiro@6wind.com>
Cc: dev@dpdk.org, Adrien Mazarguil <adrien.mazarguil@6wind.com>,
Yongseok Koh <yskoh@mellanox.com>,
stable@dpdk.org
Subject: Re: [dpdk-dev] [PATCH 1/2] net/mlx5: fix return value of start operation
Date: Fri, 19 Jan 2018 09:43:14 +0100 [thread overview]
Message-ID: <20180119084314.uvjbhtveuq7wfpj3@platinum> (raw)
In-Reply-To: <20180119083501.osf4rnd4y4lwujwn@laranjeiro-vm.dev.6wind.com>
On Fri, Jan 19, 2018 at 09:35:01AM +0100, Nélio Laranjeiro wrote:
> On Thu, Jan 18, 2018 at 05:13:08PM +0100, Olivier Matz wrote:
> > On Thu, Jan 18, 2018 at 05:04:27PM +0100, Nélio Laranjeiro wrote:
> > > On Thu, Jan 18, 2018 at 02:00:42PM +0100, Olivier Matz wrote:
> > > > On error, mlx5_dev_start() does not return a negative value
> > > > as it is supposed to do. The consequence is that the application
> > > > (ex: testpmd) does not notice that the port is not started
> > > > and begins the rxtx on an uninitialized port, which crashes.
> > > >
> > > > Fixes: e1016cb73383 ("net/mlx5: fix Rx interrupts management")
> > > > Cc: stable@dpdk.org
> > > >
> > > > Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
> > > > ---
> > > > drivers/net/mlx5/mlx5_trigger.c | 4 +++-
> > > > 1 file changed, 3 insertions(+), 1 deletion(-)
> > > >
> > > > diff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c
> > > > index 1a20967a2..44f702daa 100644
> > > > --- a/drivers/net/mlx5/mlx5_trigger.c
> > > > +++ b/drivers/net/mlx5/mlx5_trigger.c
> > > > @@ -166,6 +166,7 @@ mlx5_dev_start(struct rte_eth_dev *dev)
> > > > ERROR("%p: an error occurred while configuring control flows:"
> > > > " %s",
> > > > (void *)priv, strerror(err));
> > > > + err = -err;
> > > > goto error;
> > > > }
> > > > err = priv_flow_start(priv, &priv->flows);
> > > > @@ -173,6 +174,7 @@ mlx5_dev_start(struct rte_eth_dev *dev)
> > > > ERROR("%p: an error occurred while configuring flows:"
> > > > " %s",
> > > > (void *)priv, strerror(err));
> > > > + err = -err;
> > > > goto error;
> > > > }
> > > > err = priv_rx_intr_vec_enable(priv);
> > > > @@ -196,7 +198,7 @@ mlx5_dev_start(struct rte_eth_dev *dev)
> > > > priv_rxq_stop(priv);
> > > > priv_flow_delete_drop_queue(priv);
> > > > priv_unlock(priv);
> > > > - return -err;
> > > > + return err;
> > > > }
> > > >
> > > > /**
> > >
> > > err in the function is handled with positives errno's, adding only those
> > > two and returning err will make the other positive.
> >
> > I tried to check the return value of all functions called by mlx5_dev_start()
> > (negative or positive). Do you see something wrong?
>
> What I mean is priv_flow_start() is returning a positive errno as all
> other functions priv_*() that's the main reason for the final rteurn -err;
>
> Internally MLX5 driver only works with positives errnos as lot of them
> are retuning the values from ioctl directly. Only the public ones are
> returning negatives.
So, what should I modify in this patch for v2?
Do you agree that there is a bug regarding the return value of mlx5_dev_start()?
It can be reproduced easily by starting testpmd on a dual-socket machine,
use the core and memory from socket 0, and have the mlx device on socket 1.
Then start traffic forwarding, it will crash.
next prev parent reply other threads:[~2018-01-19 8:43 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-18 13:00 Olivier Matz
2018-01-18 13:00 ` [dpdk-dev] [PATCH 2/2] net/mlx5: fix allocation when no memory on device NUMA node Olivier Matz
2018-01-18 16:19 ` Nélio Laranjeiro
2018-01-18 16:04 ` [dpdk-dev] [PATCH 1/2] net/mlx5: fix return value of start operation Nélio Laranjeiro
2018-01-18 16:13 ` Olivier Matz
2018-01-19 6:28 ` Yongseok Koh
2018-01-19 8:35 ` Nélio Laranjeiro
2018-01-19 8:43 ` Olivier Matz [this message]
2018-01-19 13:30 ` Olivier Matz
2018-01-19 13:43 ` Nélio Laranjeiro
2018-01-19 14:18 ` Nélio Laranjeiro
2018-01-19 13:42 ` Olivier Matz
2018-01-19 16:25 ` [dpdk-dev] [PATCH v2 " Olivier Matz
2018-01-19 16:25 ` [dpdk-dev] [PATCH v2 2/2] net/mlx5: fix allocation when no memory on device NUMA node Olivier Matz
2018-01-21 6:58 ` [dpdk-dev] [dpdk-stable] " Shahaf Shuler
2018-01-22 8:20 ` Olivier Matz
2018-01-22 12:33 ` [dpdk-dev] [PATCH v3 1/2] net/mlx5: fix return value of start operation Olivier Matz
2018-01-22 12:33 ` [dpdk-dev] [PATCH v3 2/2] net/mlx5: fix allocation when no memory on device NUMA node Olivier Matz
2018-01-22 20:27 ` [dpdk-dev] [dpdk-stable] [PATCH v3 1/2] net/mlx5: fix return value of start operation Shahaf Shuler
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=20180119084314.uvjbhtveuq7wfpj3@platinum \
--to=olivier.matz@6wind.com \
--cc=adrien.mazarguil@6wind.com \
--cc=dev@dpdk.org \
--cc=nelio.laranjeiro@6wind.com \
--cc=stable@dpdk.org \
--cc=yskoh@mellanox.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 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).