Skip to content

Let IB core distribute cache update events

Leon Romanovsky linux-rdma 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest2 patches 9 repliesIn review

Changelog from the cover letter

v0->v1: https://lore.kernel.org/linux-rdma/[email protected]
- Instead of conditionally notifying event in wq, always use WQ This will allow to simplify the IB core and ULPs to get rid of additional work.
- Updated kdoc comment to reflect the notifier execution context.

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/2IB/core: Let IB core distribute cache update eventsdrivers/infiniband/core/cache.c drivers/infiniband/core/core_priv.h drivers/infiniband/core/device.c +1 more+57 -579 replies
2/2IB/core: Cut down single member ib_cache structuredrivers/infiniband/core/cache.c include/rdma/ib_verbs.h+17 -200 replies

Reviews trailers per patch

All 2 patches have a Reviewed-by or Acked-by.

PatchDaniel Jurgens
1/2R-b
2/2R-b

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v1 thread

Cover letter [PATCH rdma-next v1 0/2] Let IB core distribute cache update events

From: Leon Romanovsky <[email protected]>

Changelog:
v0->v1: https://lore.kernel.org/linux-rdma/[email protected]
- Instead of conditionally notifying event in wq, always use WQ This will allow to simplify the IB core and ULPs to get rid of additional work.
- Updated kdoc comment to reflect the notifier execution context.

--------------------------------------------------------------------------------------
From Parav,

Currently when low level driver notifies Pkey, GID, port change events, they are notified to the registered handlers in the order they are registered.

IB core and other ULPs such as IPoIB are interested in GID, LID, Pkey change events. Since all GID query done by ULPs is serviced by IB core, IB core is yet to update the GID cache when IPoIB queries the GID, resulting into not updating IPoIB address. Detailed flow is shown in the patch-1.

Hence, all events which require cache update are handled first by the IB core. Once cache update work is completed, IB core distributes the event to subscriber clients.

This is tested with opensm's /etc/rdma/opensm.conf subnet_prefix configuration update where before the update

$ ip link show dev ib0
ib0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2044 qdisc pfifo_fast
state UP mode DEFAULT group default qlen 256
    link/infiniband
80:00:01:07:fe:80:00:00:00:00:00:00:24:8a:07:03:00:b3:d1:12 brd
00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff

And after the subnet prefix update:

ib0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2044 qdisc pfifo_fast state UP mode DEFAULT group default qlen 256
link/infiniband
80:00:01:07:fe:80:00:00:00:00:00:02:24:8a:07:03:00:b3:d1:12 brd 00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff

Parav Pandit (2):
IB/core: Let IB core distribute cache update events IB/core: Cut down single member ib_cache structure

 drivers/infiniband/core/cache.c     | 114 +++++++++++++---------------
 drivers/infiniband/core/core_priv.h |   2 +
 drivers/infiniband/core/device.c    |  27 ++++---
 include/rdma/ib_verbs.h             |   8 +-
 4 files changed, 74 insertions(+), 77 deletions(-)

--
2.20.1