Skip to content

Commit 75da960

Browse files
Denis Drozdovjgunthorpe
authored andcommitted
IB/IPoIB: Set ah valid flag in multicast send flow
The change of ipoib_ah data structure with adding "valid" flag and checks of ah->valid in ipoib_start_xmit affected multicast packet flow. Since the multicast flow doesn't invoke path_rec_start, "ah->valid" flag remains unset, so that ipoib_start_xmit end up with neigh_refresh_path instead of sending the packet using neigh. "ah->valid" has to be set in multicast send flow. As a result IPoIB starts sending packets via neigh immediately and eliminates 60sec delay of neigh keep alive interval. The typical example of this issue are two sequential arpings: arping 11.134.208.9 -> got response (mcast_send) arping 11.134.208.9 -> no response (ah->valid = 0) Fixes: fa9391d ("RDMA/ipoib: Update paths on CLIENT_REREG/SM_CHANGE events") Signed-off-by: Denis Drozdov <[email protected]> Reviewed-by: Erez Shitrit <[email protected]> Reviewed-by: Feras Daoud <[email protected]> Signed-off-by: Leon Romanovsky <[email protected]> Signed-off-by: Jason Gunthorpe <[email protected]>
1 parent 0f50d88 commit 75da960

File tree

1 file changed

+1
-0
lines changed

1 file changed

+1
-0
lines changed

drivers/infiniband/ulp/ipoib/ipoib_multicast.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -822,6 +822,7 @@ void ipoib_mcast_send(struct net_device *dev, u8 *daddr, struct sk_buff *skb)
822822
if (neigh && list_empty(&neigh->list)) {
823823
kref_get(&mcast->ah->ref);
824824
neigh->ah = mcast->ah;
825+
neigh->ah->valid = 1;
825826
list_add_tail(&neigh->list, &mcast->neigh_list);
826827
}
827828
}

0 commit comments

Comments
 (0)