[ofw] RE: [PATCH] core [4/5]

Fab Tillier ftillier at windows.microsoft.com
Wed Apr 9 10:17:16 PDT 2008


Just assert that the parameters are supplied, so that someone debugging their application will find their bugs.  Runtime checks for this shouldn't be necessary.

-Fab

From: ofw-bounces at lists.openfabrics.org [mailto:ofw-bounces at lists.openfabrics.org] On Behalf Of Reuven Amitai
Sent: Wednesday, April 09, 2008 10:13 AM
To: Fab Tillier; ofw at lists.openfabrics.org
Subject: [ofw] RE: [PATCH] core [4/5]

Hi Fab,

The initial prints and checks were disabled. When I enabled them I saw that INVALID_SETTING is more suitable.
(It also stated at the function prototype as one of the possible return codes)
I agree that clients shouldn't pass all zero parameters but it can happen,
and since the check is done at the control flow It could be add without hurting performance.

Reuven.

________________________________
From: Fab Tillier [mailto:ftillier at windows.microsoft.com]
Sent: Wednesday, April 09, 2008 7:51 PM
To: Reuven Amitai; ofw at lists.openfabrics.org
Subject: RE: [PATCH] core [4/5]
Hi Reuven,

It seems that the original checks and prints were correct (returning INVALID_MAX_WRS if sq/rq_depth are both zero, returning INVALID_MAX_SGE if sq/rq_sge are both zero).

Also, I don't think you should check for p_qp_create or ph_qp - you should expect clients to pass proper parameters.

-Fab

From: ofw-bounces at lists.openfabrics.org [mailto:ofw-bounces at lists.openfabrics.org] On Behalf Of Reuven Amitai
Sent: Wednesday, April 09, 2008 6:16 AM
To: ofw at lists.openfabrics.org
Subject: [ofw] [PATCH] core [4/5]

Hi,

The following patch adds qp creation sanity checks that disabled.

Thanks, Reuven.

Index: core/al/al_pd.c
===================================================================
--- core/al/al_pd.c     (revision 1047)
+++ core/al/al_pd.c     (working copy)
@@ -333,24 +333,22 @@
            AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_PD_HANDLE\n") );
            return IB_INVALID_PD_HANDLE;
      }
-
-#if 0
-     /* seems like no need in these checks */
-     if( !p_qp_create->rq_depth || !p_qp_create->sq_depth )
+     if( !p_qp_create || !ph_qp )
      {
-           AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_MAX_WRS (%d:%d)\n",
-                 p_qp_create->rq_depth, p_qp_create->sq_depth ) );
-           return IB_INVALID_MAX_WRS;
+           AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_PARAMETER\n") );
+           return IB_INVALID_PARAMETER;
      }
-
-     if( !p_qp_create->rq_sge || !p_qp_create->sq_sge)
+     if( !p_qp_create->rq_depth &&  !p_qp_create->sq_depth )
      {
-           AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_MAX_SGE (%d:%d)\n",
-                 p_qp_create->rq_sge, p_qp_create->sq_sge ) );
-           return IB_INVALID_MAX_SGE;
+           AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_SETTING\n") );
+           return IB_INVALID_SETTING;
      }
-#endif
+     if( !p_qp_create->rq_sge && !p_qp_create->sq_sge)
+     {
+           AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_SETTING\n") );
+           return IB_INVALID_SETTING;

+     }
      if (h_pd->obj.p_ci_ca && h_pd->obj.p_ci_ca->p_pnp_attr)
      {
            if ((p_qp_create->rq_depth > h_pd->obj.p_ci_ca->p_pnp_attr->max_wrs) ||


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openfabrics.org/pipermail/ofw/attachments/20080409/3acb89fc/attachment.html>


More information about the ofw mailing list