diff options
Diffstat (limited to 'drivers/infiniband/ulp/ipoib/ipoib_multicast.c')
-rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c index ec356ce7cdcd..3faa1820f0e9 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c | |||
@@ -361,7 +361,7 @@ static int ipoib_mcast_sendonly_join(struct ipoib_mcast *mcast) | |||
361 | 361 | ||
362 | init_completion(&mcast->done); | 362 | init_completion(&mcast->done); |
363 | 363 | ||
364 | ret = ib_sa_mcmember_rec_set(priv->ca, priv->port, &rec, | 364 | ret = ib_sa_mcmember_rec_set(&ipoib_sa_client, priv->ca, priv->port, &rec, |
365 | IB_SA_MCMEMBER_REC_MGID | | 365 | IB_SA_MCMEMBER_REC_MGID | |
366 | IB_SA_MCMEMBER_REC_PORT_GID | | 366 | IB_SA_MCMEMBER_REC_PORT_GID | |
367 | IB_SA_MCMEMBER_REC_PKEY | | 367 | IB_SA_MCMEMBER_REC_PKEY | |
@@ -472,22 +472,32 @@ static void ipoib_mcast_join(struct net_device *dev, struct ipoib_mcast *mcast, | |||
472 | 472 | ||
473 | if (create) { | 473 | if (create) { |
474 | comp_mask |= | 474 | comp_mask |= |
475 | IB_SA_MCMEMBER_REC_QKEY | | 475 | IB_SA_MCMEMBER_REC_QKEY | |
476 | IB_SA_MCMEMBER_REC_SL | | 476 | IB_SA_MCMEMBER_REC_MTU_SELECTOR | |
477 | IB_SA_MCMEMBER_REC_FLOW_LABEL | | 477 | IB_SA_MCMEMBER_REC_MTU | |
478 | IB_SA_MCMEMBER_REC_TRAFFIC_CLASS; | 478 | IB_SA_MCMEMBER_REC_TRAFFIC_CLASS | |
479 | IB_SA_MCMEMBER_REC_RATE_SELECTOR | | ||
480 | IB_SA_MCMEMBER_REC_RATE | | ||
481 | IB_SA_MCMEMBER_REC_SL | | ||
482 | IB_SA_MCMEMBER_REC_FLOW_LABEL | | ||
483 | IB_SA_MCMEMBER_REC_HOP_LIMIT; | ||
479 | 484 | ||
480 | rec.qkey = priv->broadcast->mcmember.qkey; | 485 | rec.qkey = priv->broadcast->mcmember.qkey; |
486 | rec.mtu_selector = IB_SA_EQ; | ||
487 | rec.mtu = priv->broadcast->mcmember.mtu; | ||
488 | rec.traffic_class = priv->broadcast->mcmember.traffic_class; | ||
489 | rec.rate_selector = IB_SA_EQ; | ||
490 | rec.rate = priv->broadcast->mcmember.rate; | ||
481 | rec.sl = priv->broadcast->mcmember.sl; | 491 | rec.sl = priv->broadcast->mcmember.sl; |
482 | rec.flow_label = priv->broadcast->mcmember.flow_label; | 492 | rec.flow_label = priv->broadcast->mcmember.flow_label; |
483 | rec.traffic_class = priv->broadcast->mcmember.traffic_class; | 493 | rec.hop_limit = priv->broadcast->mcmember.hop_limit; |
484 | } | 494 | } |
485 | 495 | ||
486 | init_completion(&mcast->done); | 496 | init_completion(&mcast->done); |
487 | 497 | ||
488 | ret = ib_sa_mcmember_rec_set(priv->ca, priv->port, &rec, comp_mask, | 498 | ret = ib_sa_mcmember_rec_set(&ipoib_sa_client, priv->ca, priv->port, |
489 | mcast->backoff * 1000, GFP_ATOMIC, | 499 | &rec, comp_mask, mcast->backoff * 1000, |
490 | ipoib_mcast_join_complete, | 500 | GFP_ATOMIC, ipoib_mcast_join_complete, |
491 | mcast, &mcast->query); | 501 | mcast, &mcast->query); |
492 | 502 | ||
493 | if (ret < 0) { | 503 | if (ret < 0) { |
@@ -528,7 +538,7 @@ void ipoib_mcast_join_task(void *dev_ptr) | |||
528 | priv->local_rate = attr.active_speed * | 538 | priv->local_rate = attr.active_speed * |
529 | ib_width_enum_to_int(attr.active_width); | 539 | ib_width_enum_to_int(attr.active_width); |
530 | } else | 540 | } else |
531 | ipoib_warn(priv, "ib_query_port failed\n"); | 541 | ipoib_warn(priv, "ib_query_port failed\n"); |
532 | } | 542 | } |
533 | 543 | ||
534 | if (!priv->broadcast) { | 544 | if (!priv->broadcast) { |
@@ -681,7 +691,7 @@ static int ipoib_mcast_leave(struct net_device *dev, struct ipoib_mcast *mcast) | |||
681 | * Just make one shot at leaving and don't wait for a reply; | 691 | * Just make one shot at leaving and don't wait for a reply; |
682 | * if we fail, too bad. | 692 | * if we fail, too bad. |
683 | */ | 693 | */ |
684 | ret = ib_sa_mcmember_rec_delete(priv->ca, priv->port, &rec, | 694 | ret = ib_sa_mcmember_rec_delete(&ipoib_sa_client, priv->ca, priv->port, &rec, |
685 | IB_SA_MCMEMBER_REC_MGID | | 695 | IB_SA_MCMEMBER_REC_MGID | |
686 | IB_SA_MCMEMBER_REC_PORT_GID | | 696 | IB_SA_MCMEMBER_REC_PORT_GID | |
687 | IB_SA_MCMEMBER_REC_PKEY | | 697 | IB_SA_MCMEMBER_REC_PKEY | |
@@ -795,7 +805,7 @@ void ipoib_mcast_dev_flush(struct net_device *dev) | |||
795 | } | 805 | } |
796 | 806 | ||
797 | if (priv->broadcast) { | 807 | if (priv->broadcast) { |
798 | rb_erase(&priv->broadcast->rb_node, &priv->multicast_tree); | 808 | rb_erase(&priv->broadcast->rb_node, &priv->multicast_tree); |
799 | list_add_tail(&priv->broadcast->list, &remove_list); | 809 | list_add_tail(&priv->broadcast->list, &remove_list); |
800 | priv->broadcast = NULL; | 810 | priv->broadcast = NULL; |
801 | } | 811 | } |