[ofa-general] [PATCH] ib/core: fix for send multicast group send leave retry

Sean Hefty sean.hefty at intel.com
Mon Aug 4 09:31:52 PDT 2008


> 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);

I don't think this works as expected.  If you look in
mcast_work_handler(), the group's join_state is adjusted before
send_leave is called.  Leave_state here will be different (likely 0)
than the leave_state sent in the original leave request. 

>+       if (status && (group->retries > 0)) {
>+               send_leave(group, leave_state);
>+               group->retries--;
>+       }
>+       if (!status || (group->retries == 0))

I think this should just be an 'else'.

>+               mcast_work_handler(&group->work);
> }

- Sean




More information about the general mailing list