route_recv_perf(\r
IN ib_mad_element_t* p_mad_element );\r
\r
+static mad_route_t\r
+route_recv_vendor(\r
+ IN ib_mad_element_t* p_mad_element );\r
+\r
ib_api_status_t\r
forward_sm_trap(\r
IN spl_qp_svc_t* p_spl_qp_svc,\r
\r
case IB_MCLASS_PERF:\r
case IB_MCLASS_BM:\r
- local = ( h_av &&\r
+ case IB_MLX_VENDOR_CLASS1:\r
+ case IB_MLX_VENDOR_CLASS2:\r
+ local = !(p_mad->method & IB_MAD_METHOD_RESP_MASK) && ( h_av &&\r
( h_av->av_attr.dlid ==\r
( h_av->av_attr.path_bits | p_spl_qp_svc->base_lid ) ) );\r
break;\r
-\r
- default:\r
- /* Route vendor specific MADs to the HCA provider. */\r
- if( ib_class_is_vendor_specific( p_mad->mgmt_class ) )\r
- {\r
- local = ( h_av &&\r
- ( h_av->av_attr.dlid ==\r
- ( h_av->av_attr.path_bits | p_spl_qp_svc->base_lid ) ) );\r
- }\r
- break;\r
}\r
}\r
\r
\r
case IB_MLX_VENDOR_CLASS1:\r
case IB_MLX_VENDOR_CLASS2:\r
- route = ROUTE_LOCAL;\r
+ route = route_recv_vendor( p_mad_element );\r
break;\r
\r
default:\r
return ROUTE_DISPATCHER;\r
}\r
\r
+static mad_route_t\r
+route_recv_vendor(\r
+ IN ib_mad_element_t* p_mad_element )\r
+{\r
+ return ( p_mad_element->p_mad_buf->method & IB_MAD_METHOD_RESP_MASK ) ?\r
+ ROUTE_DISPATCHER : ROUTE_LOCAL;\r
+}\r
+\r
/*\r
* Forward a locally generated Subnet Management trap.\r
*/\r