Mike Heinz wrote:
> Wouldn't the BUSY patch I proposed last year deal with this situation?
Can you please send a link to this patch?

> 
> -----Original Message-----
> From: ewg-boun...@lists.openfabrics.org 
> [mailto:ewg-boun...@lists.openfabrics.org] On Behalf Of Moni Shoua
> Sent: Wednesday, February 02, 2011 10:10 AM
> To: Vlad
> Cc: n...@voltaire.com; ewg
> Subject: [ewg] [PATCH] IB/core: Control number of retries for SA to leave an 
> MCG
> 
> This patch helps when SM is busy and so an MC group is left joined
> while the host bellies that it is was left.
> 
> Note: the patch below is not to driver/infiniband/core but it generates
> a patch under kernel_patches/fixes.
> 
> Index: 
> ofa_kernel-1.5.3/kernel_patches/fixes/core_0290_sysfs_mcast_leave_retries.patch
> ===================================================================
> --- /dev/null   1970-01-01 00:00:00.000000000 +0000
> +++ 
> ofa_kernel-1.5.3/kernel_patches/fixes/core_0290_sysfs_mcast_leave_retries.patch
>      2011-02-02 16:52:02.000000000 +0200
> @@ -0,0 +1,46 @@
> +Add a multicast leave maximum retry setting in 
> sys/module/ib_sa/parameters/mcast_leave_retries.
> +Add a debug print when the maximum retry count is reached.
> +
> +Signed-off-by: Nir Muchtar <n...@voltaire.com>
> +Reviewed-by:   Moni Shoua  <mo...@voltaire.com>
> +--
> +
> +Index: ofa_kernel-1.5.2/drivers/infiniband/core/multicast.c
> +===================================================================
> +--- ofa_kernel-1.5.2.orig/drivers/infiniband/core/multicast.c  2010-08-17 
> 12:56:06.000000000 +0300
> ++++ ofa_kernel-1.5.2/drivers/infiniband/core/multicast.c       2010-08-17 
> 13:15:38.000000000 +0300
> +@@ -40,6 +40,12 @@
> + #include <rdma/ib_cache.h>
> + #include "sa.h"
> +
> ++static int mcast_leave_retries = 3;
> ++
> ++module_param_call(mcast_leave_retries, param_set_int, param_get_int,
> ++                &mcast_leave_retries, 0644);
> ++MODULE_PARM_DESC(mcast_leave_retries, "Number of retries for multicast 
> leave requests before giving up");
> ++
> + static void mcast_add_one(struct ib_device *device);
> + static void mcast_remove_one(struct ib_device *device);
> +
> +@@ -520,8 +526,11 @@
> +       if (status && (group->retries > 0) &&
> +           !send_leave(group, group->leave_state))
> +               group->retries--;
> +-      else
> ++      else {
> ++              if (status && group->retries <= 0)
> ++                      printk("reached max retry count. status=%d  .Giving 
> up\n", status);
> +               mcast_work_handler(&group->work);
> ++      }
> + }
> +
> + static struct mcast_group *acquire_group(struct mcast_port *port,
> +@@ -544,7 +553,7 @@
> +       if (!group)
> +               return NULL;
> +
> +-      group->retries = 3;
> ++      group->retries = mcast_leave_retries;
> +       group->port = port;
> +       group->rec.mgid = *mgid;
> +       group->pkey_index = MCAST_INVALID_PKEY_INDEX;
> _______________________________________________
> ewg mailing list
> ewg@lists.openfabrics.org
> http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg
> 
> 
> This message and any attached documents contain information from QLogic 
> Corporation or its wholly-owned subsidiaries that may be confidential. If you 
> are not the intended recipient, you may not read, copy, distribute, or use 
> this information. If you have received this transmission in error, please 
> notify the sender immediately by reply e-mail and then delete this message.
> 
> _______________________________________________
> ewg mailing list
> ewg@lists.openfabrics.org
> http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg
> 

_______________________________________________
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg

Reply via email to