Skip to content

IB/ipoib: Fixups for multicast issues

Doug Ledford linux-rdma 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest22 patches 13 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/22IB/ipoib: Consolidate rtnl_lock tasks in workqueuedrivers/infiniband/ulp/ipoib/ipoib_multicast.c+2 -60 replies
2/22IB/ipoib: Make the carrier_on_task race awaredrivers/infiniband/ulp/ipoib/ipoib_multicast.c+15 -60 replies
3/22IB/ipoib: fix MCAST_FLAG_BUSY usagedrivers/infiniband/ulp/ipoib/ipoib.h drivers/infiniband/ulp/ipoib/ipoib_multicast.c+101 -570 replies
4/22IB/ipoib: fix mcast_dev_flush/mcast_restart_task racedrivers/infiniband/ulp/ipoib/ipoib_multicast.c+32 -50 replies
5/22IB/ipoib: change init sequence orderingdrivers/infiniband/ulp/ipoib/ipoib_main.c+17 -70 replies
6/22IB/ipoib: Use dedicated workqueues per interfacedrivers/infiniband/ulp/ipoib/ipoib.h drivers/infiniband/ulp/ipoib/ipoib_cm.c drivers/infiniband/ulp/ipoib/ipoib_ib.c +3 more+58 -340 replies
7/22IB/ipoib: Make ipoib_mcast_stop_thread flush the workqueuedrivers/infiniband/ulp/ipoib/ipoib.h drivers/infiniband/ulp/ipoib/ipoib_ib.c drivers/infiniband/ulp/ipoib/ipoib_multicast.c+12 -150 replies
8/22IB/ipoib: No longer use flush as a parameterdrivers/infiniband/ulp/ipoib/ipoib.h drivers/infiniband/ulp/ipoib/ipoib_ib.c drivers/infiniband/ulp/ipoib/ipoib_main.c+16 -170 replies
9/22IB/ipoib: fix IPOIB_MCAST_RUN flag usagedrivers/infiniband/ulp/ipoib/ipoib_multicast.c+5 -62 replies
10/22IB/ipoib: Add a helper to restart the multicast taskdrivers/infiniband/ulp/ipoib/ipoib_multicast.c+29 -170 replies
11/22IB/ipoib: make delayed tasks not hold up everythingdrivers/infiniband/ulp/ipoib/ipoib.h drivers/infiniband/ulp/ipoib/ipoib_multicast.c+57 -300 replies
12/22IB/ipoib: Handle -ENETRESET properly in our callbackdrivers/infiniband/ulp/ipoib/ipoib_multicast.c+6 -60 replies
13/22IB/ipoib: don't restart our thread on ENETRESETdrivers/infiniband/ulp/ipoib/ipoib_multicast.c+2 -10 replies
14/22IB/ipoib: remove unneeded locksdrivers/infiniband/ulp/ipoib/ipoib_multicast.c+0 -21 reply
15/22IB/ipoib: fix race between mcast_dev_flush and mcast_joindrivers/infiniband/ulp/ipoib/ipoib_multicast.c+56 -560 replies
16/22IB/ipoib: fix ipoib_mcast_restart_taskdrivers/infiniband/ulp/ipoib/ipoib_multicast.c+3 -160 replies
17/22IB/ipoib: flush the ipoib_workqueue on unregisterdrivers/infiniband/ulp/ipoib/ipoib_main.c+2 -00 replies
18/22IB/ipoib: cleanup a couple debug messagesdrivers/infiniband/ulp/ipoib/ipoib_multicast.c+5 -62 replies
19/22IB/ipoib: make sure we reap all our ah on shutdowndrivers/infiniband/ulp/ipoib/ipoib_ib.c drivers/infiniband/ulp/ipoib/ipoib_verbs.c+30 -181 reply
20/22IB/ipoib: don't queue a work struct up twicedrivers/infiniband/ulp/ipoib/ipoib_multicast.c+31 -183 replies
21/22IB/ipoib: deserialize multicast joinsdrivers/infiniband/ulp/ipoib/ipoib_multicast.c+88 -1760 replies
22/22IB/ipoib: drop mcast_mutex usagedrivers/infiniband/ulp/ipoib/ipoib_multicast.c+19 -360 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH 00/22] IB/ipoib: Fixups for multicast issues

This patchset revives the 8 patches that were reverted from 3.19, the 11 patches that fixed the problems with the first 8, the single patch that was related to reaping of ah's and failure to dealloc resources on shutdown, and then adds two new patches that would have been enhancements and not bugfixes and hence weren't appropriate to post in the 3.19 tussle.

Testing of this patchset is currently underway, but it has done well so far. IPv4 multicast, IPv6 multicast, connected mode, datagram mode, rmmod/insmod while active, restart opensm while active, ifconfig up/ifconfig down in a tight while loop have all passed.

There are two outstanding issues that I think stilll need addressed (while performing all the other testing I ran across these issues, and I think they existed prior to my patchset, but I haven't booted up a clean kernel to verify it yet...I'll do that tomorrow and if things are not as I expect, I'll report back here):

1) In connected mode, the initial ip6 ping to any host takes almost exactly 1 second to complete. The debug messages show this delay very clearly:

[19059.689967] qib_ib0: joining MGID ff12:601b:ffff:0000:0000:0001:ff31:7791
[19059.689970] qib_ib0: successfully started all multicast joins
[19059.690313] qib_ib0: sendonly join completion for ff12:601b:ffff:0000:0000:0001:ff31:7791 (status 0)
[19059.690314] qib_ib0: Created ah ffff88080cc0ef60
[19059.690315] qib_ib0: MGID ff12:601b:ffff:0000:0000:0001:ff31:7791 AV ffff88080cc0ef60, LID 0xc035, SL 0 <- Final debug message from creating our AH and when we should have requeued our sends
[19060.694190] qib_ib0: REQ arrived <- almost exactly 1 second later, we

finally start setting up our connection

In datagram mode, this does not happen and initial startup of ping6 is mostly immediate.

2) In connected mode, restartng opensm repeatedly can cause some of the machines to start failing to find other machines when trying to use ping6. However, they don't loose connectivity to all machines, only specific machines. A rmmod/insmod cycle solves the problem. So does a full ifdown/ifup cycle. Given enough idle time, the problem goes away. I suspect that neighbor flushing when in connected mode is not reliable/sufficient when opensm events come in. Again, I think this exists in the upstream kernel and I'll test more on that tomorrow.

Doug Ledford (22):
IB/ipoib: Consolidate rtnl_lock tasks in workqueue IB/ipoib: Make the carrier_on_task race aware IB/ipoib: fix MCAST_FLAG_BUSY usage
IB/ipoib: fix mcast_dev_flush/mcast_restart_task race IB/ipoib: change init sequence ordering IB/ipoib: Use dedicated workqueues per interface IB/ipoib: Make ipoib_mcast_stop_thread flush the workqueue IB/ipoib: No longer use flush as a parameter IB/ipoib: fix IPOIB_MCAST_RUN flag usage IB/ipoib: Add a helper to restart the multicast task IB/ipoib: make delayed tasks not hold up everything IB/ipoib: Handle -ENETRESET properly in our callback IB/ipoib: don't restart our thread on ENETRESET IB/ipoib: remove unneeded locks
IB/ipoib: fix race between mcast_dev_flush and mcast_join IB/ipoib: fix ipoib_mcast_restart_task
IB/ipoib: flush the ipoib_workqueue on unregister IB/ipoib: cleanup a couple debug messages IB/ipoib: make sure we reap all our ah on shutdown IB/ipoib: don't queue a work struct up twice IB/ipoib: deserialize multicast joins
IB/ipoib: drop mcast_mutex usage

 drivers/infiniband/ulp/ipoib/ipoib.h           |  20 +-
 drivers/infiniband/ulp/ipoib/ipoib_cm.c        |  18 +-
 drivers/infiniband/ulp/ipoib/ipoib_ib.c        |  69 ++--
 drivers/infiniband/ulp/ipoib/ipoib_main.c      |  51 ++-
 drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 479 ++++++++++++-------------
 drivers/infiniband/ulp/ipoib/ipoib_verbs.c     |  24 +-
 6 files changed, 356 insertions(+), 305 deletions(-)
Signature · 6 lines
2.1.0

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html