Thread (1 message) flat view 1 message, 1 author, 2012-07-20

Re: [PATCH net/for-next V1 1/1] IB/ipoib: break linkage to neighbouring system

From: Or Gerlitz <hidden>
Date: 2012-07-20 15:49:18
Also in: linux-rdma

On Thu, Jul 19, 2012 at 4:18 PM, Or Gerlitz [off-list ref] wrote:
From: Shlomo Pongratz <redacted>

Dave Miller [off-list ref] provided a detailed description of why the
way IPoIB is using neighbours for its own ipoib_neigh struct is buggy:
[...]
This patch aims to solve the race conditions found in the IPoIB driver.

The patch breaks the connection between the core networking neighbour structure
and the ipoib_neigh structure. Except for avoiding the race, it allows to in
under a setup where SKBs carrying IP packets that don't have any associated
neighbour are transmitted through IPoIB.

We add an ipoib_neigh hash table with 1024 buckets. The hash table key is the destin
hardware address. Thus the ipoib_neigh is fetched from the hash table and not
dereferenced from the stashed location at the neighbour structure. The hash table uses
both RCU and reference count mechanisms to guarantee that no ipoib_neigh instance is
ever deleted while in use.

Fetching the ipoib_neigh structure instance from the hash also makes the special
code in ipoib_start_xmit that handles remote and local bonding failover redundant.

Aged ipoib_neigh instances are deleted by a garbage collection task that runs every
30 seconds and deletes every ipoib_neigh instance that was idle for at least 60
seconds. The deletion is safe since the ipoib_neigh instances are protected
using RCU and reference count mechanisms.
Hi Dave, Roland, Eric

So how does this look? in the right direction? anything that need to be fixed?

Or.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help