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.
Signed-off-by: Ron Livne <[EMAIL PROTECTED]>
diff --git a/drivers/infiniband/core/multicast.c
b/drivers/infiniband/core/multicast.c
index 107f170..9aba771 100644
--- a/drivers/infiniband/core/multicast.c
+++ b/drivers/infiniband/core/multicast.c
@@ -106,6 +106,7 @@ struct mcast_group {
struct ib_sa_query *query;
int query_id;
u16 pkey_index;
+ int retries;
};
struct mcast_member {
@@ -540,9 +541,16 @@ static void join_handler(int status, struct
ib_sa_mcmember_rec *rec,
static void leave_handler(int status, struct ib_sa_mcmember_rec *rec,
void *context)
{
+ __u8 leave_state;
struct mcast_group *group = context;
- mcast_work_handler(&group->work);
+ leave_state = get_leave_state(group);
+ if (status && (group->retries > 0)) {
+ send_leave(group, leave_state);
+ group->retries--;
+ }
+ if (!status || (group->retries == 0))
+ mcast_work_handler(&group->work);
}
static struct mcast_group *acquire_group(struct mcast_port *port,
@@ -565,6 +573,7 @@ static struct mcast_group *acquire_group(struct mcast_port
*port,
if (!group)
return NULL;
+ group->retries = 3;
group->port = port;
group->rec.mgid = *mgid;
group->pkey_index = MCAST_INVALID_PKEY_INDEX;
_______________________________________________
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