ib_init_ah_from_path contains the logic to decide when to use a GRH so call ib_init_ah_from_path instead of the hand coded version in IPOIB.
This change along with recent opensm changes allows unicast IPOIB traffic to traverse a router. Signed-off-by: Jason Gunthorpe <[EMAIL PROTECTED]> --- drivers/infiniband/ulp/ipoib/ipoib_main.c | 20 ++++++++++++-------- 1 files changed, 12 insertions(+), 8 deletions(-) diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c index 705eb1d..cb54da1 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_main.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c @@ -385,14 +385,18 @@ static void path_rec_completion(int status, skb_queue_head_init(&skqueue); if (!status) { - struct ib_ah_attr av = { - .dlid = be16_to_cpu(pathrec->dlid), - .sl = pathrec->sl, - .port_num = priv->port, - .static_rate = pathrec->rate - }; - - ah = ipoib_create_ah(dev, priv->pd, &av); + int ret; + struct ib_ah_attr av; + if ((ret = ib_init_ah_from_path(priv->ca,priv->port,pathrec,&av))) + ipoib_dbg(priv, "PathRec init_ah failed %d for GID " + IPOIB_GID_FMT "\n", ret, + IPOIB_GID_ARG(path->pathrec.dgid)); + else { + // FIXME: Should this be in ib_init_ah_from_path? + av.static_rate = pathrec->rate; + + ah = ipoib_create_ah(dev, priv->pd, &av); + } } spin_lock_irqsave(&priv->lock, flags); -- 1.4.4.3 _______________________________________________ openib-general mailing list openib-general@openib.org http://openib.org/mailman/listinfo/openib-general To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general