Sean, what do you think of this?

 > Until now, only if joinning a multicast group failed there was a retry
 > mechanism.
 > This patch will add a mechanism that will retry to leave a multicast
 > group before giving up.
 > Changes from v1:
 > 
 > - Save the leave state because it's overridden
 > - use 'else'
 > 
 > Signed-off-by: Ron Livne <[EMAIL PROTECTED]>
 > Signed-off-by: Yossi Etigin <[EMAIL PROTECTED]>
 > 
 > 
 > Index: b/drivers/infiniband/core/multicast.c
 > ===================================================================
 > --- a/drivers/infiniband/core/multicast.c    2008-07-07 20:09:15.000000000 
 > +0300
 > +++ b/drivers/infiniband/core/multicast.c    2008-08-06 20:08:18.000000000 
 > +0300
 > @@ -106,6 +106,8 @@ struct mcast_group {
 >      struct ib_sa_query      *query;
 >      int                     query_id;
 >      u16                     pkey_index;
 > +    u8                      leave_state;
 > +    int                     retries;
 > };
 > 
 > struct mcast_member {
 > @@ -350,6 +352,7 @@ static int send_leave(struct mcast_group
 > 
 >      rec = group->rec;
 >      rec.join_state = leave_state;
 > +    group->leave_state = leave_state;
 > 
 >      ret = ib_sa_mcmember_rec_query(&sa_client, port->dev->device,
 >                                     port->port_num, IB_SA_METHOD_DELETE, 
 > &rec,
 > @@ -542,7 +545,11 @@ static void leave_handler(int status, st
 > {
 >      struct mcast_group *group = context;
 > 
 > -    mcast_work_handler(&group->work);
 > +    if (status && (group->retries > 0)) {
 > +            send_leave(group, group->leave_state);
 > +            group->retries--;
 > +    } else
 > +            mcast_work_handler(&group->work);
 > }
 > 
 > static struct mcast_group *acquire_group(struct mcast_port *port,
 > @@ -565,6 +572,7 @@ static struct mcast_group *acquire_group
 >      if (!group)
 >              return NULL;
 > 
 > +    group->retries = 3;
 >      group->port = port;
 >      group->rec.mgid = *mgid;
 >      group->pkey_index = MCAST_INVALID_PKEY_INDEX;
 > 
 > --
 > --Yossi
 > 
 > -- 
 > --Yossi
 > 
_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to