]> www.infradead.org Git - users/jedix/linux-maple.git/commit
net/rds: Implement ARP flushing correctly
authorHåkon Bugge <Haakon.Bugge@oracle.com>
Thu, 21 Jun 2018 11:06:30 +0000 (13:06 +0200)
committerBrian Maly <brian.maly@oracle.com>
Thu, 5 Jul 2018 19:14:51 +0000 (15:14 -0400)
commit699d07facdc1f5cffa6055dd7d47c8b07defc067
tree0eeca9428d9396c4aab2e0288fc04c6b92f118a1
parent556a3ad9f9e165946baa7c51970cac1cc4b3ffe8
net/rds: Implement ARP flushing correctly

If a remote peer has moved its IP address from one port to the other,
the local node may have an incorrect ARP entry in its cache. During
connection management, we will then get back a route-error-event from
the CM.

Current code attempts to flush the ARP entry from the cache. However,
1) it does not check for return values, 2) it does not supply the
device name, 3) it does not iterate over all possible device names,
and 4) its doesn't supply the correct flags.

Due to 2-4 above, the flushing doesn't work.

This commit fixes this.

On a system with a single CX-3 and 16 VFs, fail-over just after a
fail-back is reduced from ~60 seconds down to ~10 seconds with the fix
(1156 RDS connections).

Orabug: 28219857

Signed-off-by: Håkon Bugge <haakon.bugge@oracle.com>
Reviewed-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
---

V1 -> V2:
- Move NOTE section down as suggested by Santosh
- Remove unnecessary initialization of ret
- Fix a nit in the commit message (2-4 instead of 1-4)
- Use pr_err() instead of printk() as suggested by Yuval
- Use sizeof(*r) as suggested by Yuval

NOTE:
* The uek-4-QU7 version of this bug has an approved exception from
  Greg Marsden, that it can be merged first in uek-4-QU7, before
  uek5/master-next.

Signed-off-by: Brian Maly <brian.maly@oracle.com>
net/rds/ib.c
net/rds/ib.h
net/rds/rdma_transport.c