Resolve some of my sins of the past...
Pass the Bus Filter Instance pointer (p_bfi)  instead of ca_guid; allows 
*_get_bus_relations routines to skip bfi lookup by ca_guid as bfi contains the 
ca_guid...oops.

Signed-off-by: stan smith <[email protected]>

--- core/bus/kernel/bus_iou_mgr.h       Fri Jun 10 15:38:08 2011
+++ core/bus/kernel/bus_iou_mgr.h       Fri Jun 10 15:38:46 2011
@@ -57,11 +57,11 @@
 
 ib_api_status_t
 create_iou_mgr(
-               IN                      struct _bus_filter_instance*    p_bfi );
+       IN                      struct _bus_filter_instance*    p_bfi );
 
 NTSTATUS
 iou_mgr_get_bus_relations(
-       IN              const   net64_t                                         
ca_guid,
-       IN                              IRP* const                              
        p_irp );
+       IN                      struct _bus_filter_instance*    p_bfi,
+       IN                      IRP* const                                      
        p_irp );
 
 #endif

--- core/bus/kernel/bus_iou_mgr.c       Fri Jun 10 15:35:29 2011
+++ core/bus/kernel/bus_iou_mgr.c       Fri Jun 10 15:36:05 2011
@@ -526,26 +526,25 @@
  */
 NTSTATUS
 iou_mgr_get_bus_relations(
-       IN              const   net64_t                                         
ca_guid,
+       IN                              bus_filter_t*                           
p_bfi,
        IN                              IRP* const                              
        p_irp )
 {
        NTSTATUS                        status;
-       bus_filter_t            *p_bfi;
        iou_mgr_t                       *p_iou_mgr;
        DEVICE_RELATIONS        *p_rel;
 
        BUS_ENTER( BUS_DBG_PNP );
 
-       BUS_PRINT(BUS_DBG_PNP, ("CA_guid %I64x\n",ca_guid));
+       BUS_PRINT(BUS_DBG_PNP, ("CA_guid %I64x\n",p_bfi->ca_guid));
 
        /* special case guid == 0 - walk all bus filter instances */
-       if ( ca_guid == 0ULL ) {
+       if ( p_bfi->ca_guid == 0ULL ) {
                for(p_bfi=g_bus_filters; p_bfi < 
&g_bus_filters[MAX_BUS_FILTERS]; p_bfi++) {
                        p_iou_mgr = p_bfi->p_iou_mgr;
                        if ( !p_iou_mgr )
                                continue;
                        cl_mutex_acquire( &p_iou_mgr->pdo_mutex );
-                       status = bus_get_relations( &p_iou_mgr->iou_list, 
ca_guid, p_irp );
+                       status = bus_get_relations( &p_iou_mgr->iou_list, 
p_bfi->ca_guid, p_irp );
                        cl_mutex_release( &p_iou_mgr->pdo_mutex );
                }
                p_rel = (DEVICE_RELATIONS*)p_irp->IoStatus.Information;
@@ -556,21 +555,15 @@
                return STATUS_SUCCESS;
        }
 
-       p_bfi = get_bfi_by_ca_guid(ca_guid);
-       if (p_bfi == NULL) {
-               BUS_TRACE_EXIT(BUS_DBG_PNP,
-                                                               ("NULL p_bfi 
from ca_guid %I64x ?\n",ca_guid));
-               return STATUS_UNSUCCESSFUL;
-       }
        p_iou_mgr = p_bfi->p_iou_mgr;
 
        BUS_PRINT(BUS_DBG_PNP, ("%s for ca_guid %I64x iou_mgr %p\n",
-                                                       p_bfi->whoami, ca_guid, 
p_iou_mgr) );
+                                                       p_bfi->whoami, 
p_bfi->ca_guid, p_iou_mgr) );
        if (!p_iou_mgr)
                return STATUS_NO_SUCH_DEVICE;
 
        cl_mutex_acquire( &p_iou_mgr->pdo_mutex );
-       status = bus_get_relations( &p_iou_mgr->iou_list, ca_guid, p_irp );
+       status = bus_get_relations( &p_iou_mgr->iou_list, p_bfi->ca_guid, p_irp 
);
        cl_mutex_release( &p_iou_mgr->pdo_mutex );
 
        BUS_EXIT( BUS_DBG_PNP );

--- core/bus/kernel/bus_pnp.c   Fri Jun 10 15:44:21 2011
+++ core/bus/kernel/bus_pnp.c   Fri Jun 10 15:43:38 2011
@@ -818,11 +818,11 @@
        }
        if ( p_bfi->ca_guid != 0ULL )
        {
-               status = port_mgr_get_bus_relations( p_bfi->ca_guid, p_irp );
+               status = port_mgr_get_bus_relations( p_bfi, p_irp );
                if( status == STATUS_SUCCESS || 
                        status == STATUS_NO_SUCH_DEVICE )
                {
-                       status = iou_mgr_get_bus_relations( p_bfi->ca_guid, 
p_irp );
+                       status = iou_mgr_get_bus_relations( p_bfi, p_irp );
                }
                if( status == STATUS_NO_SUCH_DEVICE )
                        status = STATUS_SUCCESS;

--- core/bus/kernel/bus_port_mgr.h      Fri Jun 10 15:39:50 2011
+++ core/bus/kernel/bus_port_mgr.h      Fri Jun 10 15:10:20 2011
@@ -57,12 +57,12 @@
 
 ib_api_status_t
 create_port_mgr(
-       IN                              struct _bus_filter_instance     *p_bfi 
);
+       IN              struct _bus_filter_instance     *p_bfi );
 
 
 NTSTATUS
 port_mgr_get_bus_relations(
-       IN              const   net64_t                                         
ca_guid,
-       IN                              IRP* const                              
        p_irp );
+       IN              struct _bus_filter_instance     *p_bfi,
+       IN              IRP* const                                      p_irp );
 
 #endif

--- core/bus/kernel/bus_port_mgr.c      Fri Jun 10 15:40:34 2011
+++ core/bus/kernel/bus_port_mgr.c      Fri Jun 10 15:41:42 2011
@@ -520,22 +520,21 @@
  */
 NTSTATUS
 port_mgr_get_bus_relations(
-       IN              const   net64_t                                         
ca_guid,
+       IN                              bus_filter_t*                           
p_bfi,
        IN                              IRP* const                              
        p_irp )
 {
        NTSTATUS                        status;
-       bus_filter_t            *p_bfi;
        port_mgr_t                      *p_port_mgr;
        DEVICE_RELATIONS        *p_rel;
 
        BUS_ENTER( BUS_DBG_PNP );
 
-       BUS_PRINT(BUS_DBG_PNP, ("CA_guid %I64x\n",ca_guid));
+       BUS_PRINT(BUS_DBG_PNP, ("CA_guid %I64x\n",p_bfi->ca_guid));
 
        /* special case guid == 0 - walk all bus filter instances */
-       if ( ca_guid == 0ULL ) {
-               BUS_PRINT(BUS_DBG_PNP, ("CA_guid 0\n"));
-               for(p_bfi=g_bus_filters; p_bfi < 
&g_bus_filters[MAX_BUS_FILTERS]; p_bfi++) {
+       if ( p_bfi->ca_guid == 0ULL ) {
+               for(p_bfi=g_bus_filters; p_bfi < 
&g_bus_filters[MAX_BUS_FILTERS]; p_bfi++)
+               {
                        p_port_mgr = p_bfi->p_port_mgr;
                        if ( !p_port_mgr )
                                continue;
@@ -554,22 +553,15 @@
                return STATUS_SUCCESS;
        }
 
-       p_bfi = get_bfi_by_ca_guid(ca_guid);
-       if (p_bfi == NULL) {
-               BUS_PRINT(BUS_DBG_PNP,
-                       ("Null *p_bfi from ca_guid %I64x\n",ca_guid));
-               BUS_EXIT( BUS_DBG_PNP );
-               return STATUS_NO_SUCH_DEVICE;
-       }
        p_port_mgr = p_bfi->p_port_mgr;
 
        BUS_PRINT(BUS_DBG_PNP, ("%s for ca_guid %I64x port_mgr %p\n",
-                                                       p_bfi->whoami, ca_guid, 
p_port_mgr) );
+                                                       p_bfi->whoami, 
p_bfi->ca_guid, p_port_mgr) );
        if (!p_port_mgr)
                return STATUS_NO_SUCH_DEVICE;
 
        cl_mutex_acquire( &p_port_mgr->pdo_mutex );
-       status = bus_get_relations( &p_port_mgr->port_list, ca_guid, p_irp );
+       status = bus_get_relations( &p_port_mgr->port_list, p_bfi->ca_guid, 
p_irp );
        cl_mutex_release( &p_port_mgr->pdo_mutex );
 
        BUS_EXIT( BUS_DBG_PNP );

_______________________________________________
ofw mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw

Reply via email to