Thank you.
You may commit all this patch series. 

> -----Original Message-----
> From: Sean Hefty [mailto:[email protected]] 
> Sent: Tuesday, May 12, 2009 6:25 PM
> To: Leonid Keller; [email protected]
> Subject: RE: [ofw] [PATCH 4/4] MAD: fix issues routing vendor MADs
> 
> >Could you elaborate on removing IB_MCLASS_SUBN_ADM and some other 
> >management classes and on the changes in GMP handling ?
> 
> Unless I missed something, the handling should be the same.  
> See details below.
> 
> >> ); diff -up -r -X \mshefty\scm\winof\trunk\docs\dontdiff.txt
> >> -I '\$Id:' trunk\core\al/kernel/al_smi.c 
> >> branches\winverbs\core\al/kernel/al_smi.c
> >> --- trunk\core\al/kernel/al_smi.c  2009-01-26
> >> 09:34:30.250875000 -0800
> >> +++ branches\winverbs\core\al/kernel/al_smi.c      2009-05-07
> >> 15:53:12.270907500 -0700
> >> @@ -184,12 +184,12 @@ mad_route_t
> >>  route_recv_dm_mad(
> >>    IN                              ib_mad_element_t*
> >>            p_mad_element );
> >>
> >> -mad_route_t
> >> -route_recv_gmp(
> >> +static mad_route_t
> >> +route_recv_bm(
> 
> Rename route_recv_gmp to route_recv_bm.  This core of this 
> function was only really called for BM MADs.
> 
> >>    IN                              ib_mad_element_t*
> >>            p_mad_element );
> >>
> >> -mad_route_t
> >> -route_recv_gmp_attr(
> >> +static mad_route_t
> >> +route_recv_perf(
> 
> This isn't a rename.  Route_recv_gmp_attr folds into 
> route_recv_bm.  A new call is added to check for perf MADs.
> 
> >> p_mad_wr,IB_WCS_SUCCESS); @@ -2937,35 +2950,19 @@ process_mad_recv(
> >>                    break;
> >>
> >>            case IB_MCLASS_PERF:
> >> -                  /* Process the received GMP. */
> >> -                  switch( p_mad_element->p_mad_buf->method )
> >> -                  {
> >> -                  case IB_MAD_METHOD_GET:
> >> -                  case IB_MAD_METHOD_SET:
> >> -                          route = ROUTE_LOCAL;
> >> -                          break;
> >> -                  default:
> >> -                          break;
> >> -                  }
> >> +                  route = route_recv_perf( p_mad_element );
> 
> The perf MAD handling code above goes into the new 
> route_recv_perf call.  It just makes the code prettier.
> 
> >>                    break;
> >>
> >>            case IB_MCLASS_BM:
> >> -                  route = route_recv_gmp( p_mad_element );
> >> +                  route = route_recv_bm( p_mad_element );
> 
> We're dealing with BM MADs here only.
> 
> >>                    break;
> >>
> >> -          case IB_MCLASS_SUBN_ADM:
> >> -          case IB_MCLASS_DEV_MGMT:
> >> -          case IB_MCLASS_COMM_MGMT:
> >> -          case IB_MCLASS_SNMP:
> >> +          case IB_MLX_VENDOR_CLASS1:
> >> +          case IB_MLX_VENDOR_CLASS2:
> >> +                  route = ROUTE_LOCAL;
> >>                    break;
> >>
> >>            default:
> >> -                  /* Route vendor specific MADs to the
> >> HCA provider. */
> >> -                  if( ib_class_is_vendor_specific(
> >> -                          p_mad_element->p_mad_buf->mgmt_class ) )
> >> -                  {
> >> -                          route = route_recv_gmp( p_mad_element );
> 
> This is the only other call to route_recv_gmp, and it is 
> limited to vendor specific MADs.  The MLX vendor class MADs 
> are routed locally.  All other vendor defined MADs are 
> dispatched normally.  This is a change to routing of vendor MADs.
> 
> >> @@ -3090,72 +3087,38 @@ route_recv_smp_attr(  }
> >>
> >>
> >> -/*
> >> - * Route a received GMP.
> >> - */
> >> -mad_route_t
> >> -route_recv_gmp(
> >> +static mad_route_t
> >> +route_recv_bm(
> >>    IN                              ib_mad_element_t*
> >>            p_mad_element )
> >>  {
> >> -  mad_route_t                             route;
> >> -
> >> -  AL_ENTER( AL_DBG_SMI );
> >> -
> >> -  CL_ASSERT( p_mad_element );
> >> -
> >> -  /* Process the received GMP. */
> >>    switch( p_mad_element->p_mad_buf->method )
> >>    {
> >>    case IB_MAD_METHOD_GET:
> >>    case IB_MAD_METHOD_SET:
> >> -          /* Route vendor specific MADs to the HCA provider. */
> >> -          if( ib_class_is_vendor_specific(
> >> -                  p_mad_element->p_mad_buf->mgmt_class ) )
> >> -          {
> >> -                  route = ROUTE_LOCAL;
> >> -          }
> >> -          else
> >> -          {
> >> -                  route = route_recv_gmp_attr( p_mad_element );
> >> -          }
> 
> Based on the two places where route_recv_gmp is called, 
> route_recv_gmp_attr only ends up being called for BM MADs.
> 
> >> +          if( p_mad_element->p_mad_buf->attr_id ==
> >> IB_MAD_ATTR_CLASS_PORT_INFO )
> >> +                  return ROUTE_LOCAL;
> 
> route_recv_gmp_attr returns local based on this check.  I 
> merged the two calls.
> 
> >>            break;
> >> -
> >>    default:
> >> -          route = ROUTE_DISPATCHER;
> >>            break;
> >>    }
> >> -
> >> -  AL_EXIT( AL_DBG_SMI );
> >> -  return route;
> >> +  return ROUTE_DISPATCHER;
> >>  }
> >>
> >> -
> >> -
> >> -/*
> >> - * Route received GMP attributes.
> >> - */
> >> -mad_route_t
> >> -route_recv_gmp_attr(
> >> +static mad_route_t
> >> +route_recv_perf(
> >>    IN                              ib_mad_element_t*
> >>            p_mad_element )
> >>  {
> >> -  mad_route_t                             route;
> >> -
> >> -  AL_ENTER( AL_DBG_SMI );
> >> -
> >> -  CL_ASSERT( p_mad_element );
> >> -
> >> -  /* Process the received GMP attributes. */
> >> -  if( p_mad_element->p_mad_buf->attr_id ==
> >> IB_MAD_ATTR_CLASS_PORT_INFO )
> >> -          route = ROUTE_LOCAL;
> 
> This is the all moved into route_recv_bm
> 
> >> -  else
> >> -          route = ROUTE_DISPATCHER;
> >> -
> >> -  AL_EXIT( AL_DBG_SMI );
> >> -  return route;
> >> +  switch( p_mad_element->p_mad_buf->method )
> >> +  {
> >> +  case IB_MAD_METHOD_GET:
> >> +  case IB_MAD_METHOD_SET:
> >> +          return ROUTE_LOCAL;
> >> +  default:
> >> +          break;
> >> +  }
> >> +  return ROUTE_DISPATCHER;
> >>  }
> 
> This is the perf MAD handling code moved into a new call.
> 
> Hope that answers your question.
> 
> - Sean
> 
> 
_______________________________________________
ofw mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw

Reply via email to