Re: [PATCH v3 10/10] ntb_perf: clear link_is_up flag when the link goes down.

From: Jiang, Dave
Date: Wed Jun 15 2016 - 18:24:45 EST


On Wed, 2016-06-15 at 16:20 -0600, Logan Gunthorpe wrote:
> Hey,
>
> Actually, I have to retract this patch. After some more thorough
> testing
> I'm finding an issue:
>
> When you remove and re-install the ntb_perf module very quickly,
> ntb_perf will occasionally miss the link up event. This is because
> the
> link_cleanup work gets delayed long enough that it gets scheduled
> after
> the link up event gets sent. It then cancels the link work that
> should
> have occurred. Without this patch, it never happens because
> link_is_up
> never returns to false.
>
> I think the correct solution is to just remove the link_cleanup work
> and
> do those actions immediately on receipt of the event. If there's
> agreement on this I can re-spin it again.

I'm ok with that. This is not an issue with ntb_transport?

>
> Thanks,
>
> Logan
>
>
> On 15/06/16 03:33 PM, Jiang, Dave wrote:
> >
> > On Wed, 2016-06-15 at 15:26 -0600, Logan Gunthorpe wrote:
> > >
> > > When the link goes down, the link_is_up flag did not return to
> > > false. This could have caused some subtle corner case bugs
> > > when the link goes up and down quickly.
> > >
> > > Signed-off-by: Logan Gunthorpe <logang@xxxxxxxxxxxx>
> > Acked-by: Dave Jiang <dave.jiang@xxxxxxxxx>
> >
> > And all the other ntb_perf patches since there were no additional
> > changes.Â
> >
> > >
> > > ---
> > > Âdrivers/ntb/test/ntb_perf.c | 2 ++
> > > Â1 file changed, 2 insertions(+)
> > >
> > > diff --git a/drivers/ntb/test/ntb_perf.c
> > > b/drivers/ntb/test/ntb_perf.c
> > > index f0784e5..ae9d1b2 100644
> > > --- a/drivers/ntb/test/ntb_perf.c
> > > +++ b/drivers/ntb/test/ntb_perf.c
> > > @@ -557,6 +557,8 @@ static void perf_link_cleanup(struct
> > > work_struct
> > > *work)
> > > Â
> > > Â if (!perf->link_is_up)
> > > Â cancel_delayed_work_sync(&perf->link_work);
> > > +
> > > + perf->link_is_up = false;
> > > Â}
> > > Â
> > > Âstatic int perf_setup_mw(struct ntb_dev *ntb, struct perf_ctx
> > > *perf)
> > > --Â
> > > 2.1.4