From: Doug Ledford <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Erez Shitrit <erezsh-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
Cc: Or Gerlitz <gerlitz.or-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Erez Shitrit <erezsh-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
"linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: [PATCH rdma-rc 2/7] IB/IPoIB: Don't update neigh validity for unresolved entries
Date: Tue, 7 Jun 2016 10:43:56 -0400 [thread overview]
Message-ID: <5fc6bf69-ff7e-d94f-fbfe-46a42ee1e22d@redhat.com> (raw)
In-Reply-To: <CAAk-MO-wPkMtyCsCBEo5yKktKitsh4EQG2m=naenSuzc+EjoSg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
[-- Attachment #1.1: Type: text/plain, Size: 3239 bytes --]
On 6/7/2016 10:32 AM, Erez Shitrit wrote:
> On Tue, Jun 7, 2016 at 4:48 PM, Doug Ledford <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> wrote:
>> On 6/7/2016 2:01 AM, Erez Shitrit wrote:
>>> On Tue, Jun 7, 2016 at 2:59 AM, Doug Ledford <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> wrote:
>>>> On 6/5/2016 5:10 PM, Or Gerlitz wrote:
>>>>
>>>>>> - neigh->alive = jiffies;
>>>>>> +
>>>>>> + if (likely(skb_queue_len(&neigh->queue) < IPOIB_MAX_PATH_REC_QUEUE))
>>>>>> + neigh->alive = jiffies;
>>>>>
>>>>> why testing the queue len makes things right?
>>>>
>>>> I'm with Or on this one. This test doesn't make sense unless you assume
>>>> that the neighbor is being hit with a steady stream of packets. If
>>>> someone just runs ping -c 1 to a dead neighbor, this test will fail.
>>>> The idea of the patch is OK, but the test needs to be reworked for
>>>> situations other than a blasting stream of data.
>>>>
>>>
>>> I will try to explain the idea behind that test, and why it works (I
>>> hope I'll make it clear this time :))
>>>
>>> there are 2 objects that are taking place here, the garbage-collector
>>> that removes neigh if was not used for defined time, and the
>>> path-query for each neigh.
>>> if the path-query failed the packets for specific neigh are kept in
>>> the neigh queue, but only if there are no more than
>>> IPOIB_MAX_PATH_REC_QUEUE, and the neigh is still kept for ever (let's
>>> assume CM connected that was stopped without any notification with
>>> DREQ etc.)
>>> The only way to know that there is an unresolved neigh is by checking
>>> its queue, if it is full we can assume that this is an unresolved
>>> neigh otherwise it is resolved.
>>
>> That's not true. Reread what I wrote above (I was specific when I
>> picked that command). Ping -c 1 will only send one ping. It will not
>> trip this test. As I said, your test relies on a stream of packets, a
>> single packet to a gone neighbor will never cause it to get deleted.
>
> If you ping one time (ping -c 1) there is no problem at all, the neigh
> will be deleted by the GC anyway, because no (unresolved) packet
> updates the neigh validity and the GC will check the last time it was
> refreshed and since only one ping refreshed it long ago, it will be
> deleted. (the GC always running)
>
> the problem is when there are non stop traffic to that neigh. IMHO
> that test works for that.
Ok, that makes sense.
>> You need a timeout on the queue and then if the packet in the queue
>> times out, regardless of whether the queue is full or not, then you mark
>> the neighbor for garbage collection and drop the packet(s).
>>
>>> So, the test doesn't take any assumption on the shape of the traffic,
>>> even in a ping requests once a second it will failed after 3 times the
>>> request was sent, and the neigh time will not be updated which will
>>> leave it to the garbage-collector to delete it, that gives the driver
>>> the possibility to recreate the neigh and to update its ah/pr,
>>> otherwise the driver will try over and over to resend to that
>>> unresolved neigh.
>>>
>>>>
>>
>>
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 884 bytes --]
next prev parent reply other threads:[~2016-06-07 14:43 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-04 12:15 [PATCH rdma-rc 0/7] IPoIB and IB core fixes for 4.7 Leon Romanovsky
[not found] ` <1465042524-25852-1-git-send-email-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2016-06-04 12:15 ` [PATCH rdma-rc 1/7] IB/core: Fix query port failure in RoCE Leon Romanovsky
[not found] ` <1465042524-25852-2-git-send-email-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2016-06-06 15:43 ` Steve Wise
[not found] ` <CALq1K=LuBvTEygAeUW1wuwzQLffGHn=+KWtnx67op+nj9ybegw@mail.gmail.com>
[not found] ` <CALq1K=LuBvTEygAeUW1wuwzQLffGHn=+KWtnx67op+nj9ybegw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-06-07 7:22 ` Leon Romanovsky
2016-06-04 12:15 ` [PATCH rdma-rc 2/7] IB/IPoIB: Don't update neigh validity for unresolved entries Leon Romanovsky
[not found] ` <1465042524-25852-3-git-send-email-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2016-06-05 21:10 ` Or Gerlitz
[not found] ` <CAJ3xEMgYKnVh4JECrCSBUYmyCr4s-zxWhMywMVTQPZswLvF61A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-06-06 23:59 ` Doug Ledford
[not found] ` <42668994-5666-f5b3-8d38-4c452f0cc70f-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-06-07 6:01 ` Erez Shitrit
[not found] ` <CAAk-MO9gUtqZHKq+7xaHLkJRM_T-DgF0wOCFuykre9=0VUBbQw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-06-07 13:48 ` Doug Ledford
[not found] ` <27852e30-765c-012a-b54b-f5ba096121d4-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-06-07 14:32 ` Erez Shitrit
[not found] ` <CAAk-MO-wPkMtyCsCBEo5yKktKitsh4EQG2m=naenSuzc+EjoSg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-06-07 14:43 ` Doug Ledford [this message]
[not found] ` <5fc6bf69-ff7e-d94f-fbfe-46a42ee1e22d-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-06-07 14:50 ` Doug Ledford
[not found] ` <99eb8d42-95f2-6899-b427-b6258db5e44b-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-06-07 16:20 ` Leon Romanovsky
2016-06-04 12:15 ` [PATCH rdma-rc 3/7] IB/IPoIB: Fix race between ipoib_remove_one to sysfs functions Leon Romanovsky
[not found] ` <1465042524-25852-4-git-send-email-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2016-06-07 7:31 ` Or Gerlitz
[not found] ` <CAJ3xEMh_Pg2Kkp6yHx2OUJMokn0HX8Jd9Q0bcsB50KfTAcP1Gw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-06-07 10:45 ` Erez Shitrit
[not found] ` <CAAk-MO_9P2vVJS_RXrqUPx224Re9sjifug+hfxVGN4Ze5tYhSg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-06-07 20:22 ` Or Gerlitz
[not found] ` <CAJ3xEMj-5Aet518M6N=3fGRT06YXWPSm-vDVL5iqRbiiRTbH-Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-06-08 7:01 ` Erez Shitrit
[not found] ` <CAAk-MO-idYZ9fCGY6GYhDavTQSGh+BhOpBjzgGX5Jw7KDtLecQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-06-08 7:29 ` Or Gerlitz
2016-06-04 12:15 ` [PATCH rdma-rc 4/7] IB/core: Fix removal of default GID cache entry Leon Romanovsky
2016-06-04 12:15 ` [PATCH rdma-rc 5/7] IB/IPoIB: Disable bottom half when dealing with device address Leon Romanovsky
2016-06-04 12:15 ` [PATCH rdma-rc 6/7] IB/core: Fix incorrect array allocation Leon Romanovsky
[not found] ` <1465042524-25852-7-git-send-email-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2016-06-06 23:53 ` Doug Ledford
[not found] ` <85e56121-5911-37f4-2ac3-a1af561d5a7a-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-06-07 7:16 ` Leon Romanovsky
[not found] ` <20160607071621.GB3663-2ukJVAZIZ/Y@public.gmane.org>
2016-06-07 13:43 ` Doug Ledford
[not found] ` <97ef54ca-d3c4-f294-4bb7-4422ae25dde4-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-06-07 16:23 ` Leon Romanovsky
2016-06-07 8:26 ` Mark Bloch
[not found] ` <VI1PR05MB1391BC017005F864E1DAE3C0D25D0-79XLn2atqDP8GeyK7vyn2tqRiQSDpxhJvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2016-06-07 13:46 ` Doug Ledford
[not found] ` <14b30d87-6f70-a7bb-14ea-e5152ce545bf-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-06-07 13:56 ` Mark Bloch
2016-06-04 12:15 ` [PATCH rdma-rc 7/7] IB/core: Initialize sysfs attributes before sysfs create group Leon Romanovsky
2016-06-07 0:02 ` [PATCH rdma-rc 0/7] IPoIB and IB core fixes for 4.7 Doug Ledford
[not found] ` <302ea695-7b9f-7c94-4930-acdb77ae8649-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-06-07 7:18 ` Leon Romanovsky
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=5fc6bf69-ff7e-d94f-fbfe-46a42ee1e22d@redhat.com \
--to=dledford-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
--cc=erezsh-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org \
--cc=erezsh-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=gerlitz.or-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
/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