Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e1d7806d authored by Yossi Etigin's avatar Yossi Etigin Committed by Roland Dreier
Browse files

IB/core: Fix send multicast group leave retry



Until now, retries were only sent when joining a multicast group. This
patch will adds retries when leaving a multicast group as well.

Signed-off-by: default avatarRon Livne <ronli@voltaire.com>
Signed-off-by: default avatarYossi Etigin <yosefe@voltaire.com>
Acked-by: default avatarSean Hefty <sean.hefty@intel.com>
Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
parent f1aa78b2
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -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 *group, u8 leave_state)

	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,6 +545,10 @@ static void leave_handler(int status, struct ib_sa_mcmember_rec *rec,
{
	struct mcast_group *group = context;

	if (status && group->retries > 0 &&
	    !send_leave(group, group->leave_state))
		group->retries--;
	else
		mcast_work_handler(&group->work);
}

@@ -565,6 +572,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;