From e39b897f313f9c443d1812b41381cadbe7e1ecf2 Mon Sep 17 00:00:00 2001 From: sleybo Date: Mon, 26 Feb 2007 14:16:06 +0000 Subject: [PATCH] [IBAL] fix trap that route to local SM . fix prints in ual_mgr.c git-svn-id: svn://openib.tc.cornell.edu/gen1@601 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86 --- trunk/core/al/kernel/al_smi.c | 14 +++++++++++++- trunk/core/al/user/ual_mgr.c | 7 ++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/trunk/core/al/kernel/al_smi.c b/trunk/core/al/kernel/al_smi.c index a2fc5f37..604e1795 100644 --- a/trunk/core/al/kernel/al_smi.c +++ b/trunk/core/al/kernel/al_smi.c @@ -2147,7 +2147,7 @@ __process_subn_mad( else { AL_PRINT(TRACE_LEVEL_WARNING, AL_DBG_SMI, ("Mkey check failed \n")); - AL_PRINT(TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("Mkey check SMP= 0x%x:%x SVC = 0x%x:%x \n", + AL_PRINT(TRACE_LEVEL_WARNING, AL_DBG_SMI, ("Mkey check SMP= 0x%08x:%08x SVC = 0x%08x:%08x \n", ((uint32_t*)&p_smp->m_key)[0],((uint32_t*)&p_smp->m_key)[1], ((uint32_t*)&p_spl_qp_svc->m_key)[0],((uint32_t*)&p_spl_qp_svc->m_key)[1])); @@ -2344,6 +2344,7 @@ fwd_local_mad( p_spl_qp_svc->lmc = ib_port_info_get_lmc( p_port_info ); p_spl_qp_svc->sm_lid = p_port_info->master_sm_base_lid; p_spl_qp_svc->sm_sl = ib_port_info_get_sm_sl( p_port_info ); + if(p_port_info->m_key) p_spl_qp_svc->m_key = p_port_info->m_key; if (p_port_info->subnet_timeout & 0x80) @@ -2904,6 +2905,10 @@ route_recv_smp( * a Trap Repress MAD, the SMA must only use the lower 32-bits of the * TID. */ + AL_PRINT(TRACE_LEVEL_INFORMATION, AL_DBG_SMI, ("Trap TID = 0x%08x:%08x \n", + ((uint32_t*)&p_mad_element->p_mad_buf->trans_id)[0], + ((uint32_t*)&p_mad_element->p_mad_buf->trans_id)[1])); + route = ( p_mad_element->recv_opt & IB_RECV_OPT_FORWARD ) ? ROUTE_REMOTE : ROUTE_DISPATCHER; break; @@ -2915,6 +2920,10 @@ route_recv_smp( * a Trap Repress MAD, the SMA must only use the lower 32-bits of the * TID. */ + AL_PRINT(TRACE_LEVEL_INFORMATION, AL_DBG_SMI, ("TrapRepress TID = 0x%08x:%08x \n", + ((uint32_t*)&p_mad_element->p_mad_buf->trans_id)[0], + ((uint32_t*)&p_mad_element->p_mad_buf->trans_id)[1])); + route = ROUTE_LOCAL; break; @@ -3062,6 +3071,9 @@ forward_sm_trap( return IB_ERROR; } + if(p_spl_qp_svc->sm_lid == p_spl_qp_svc->base_lid) + return mad_disp_recv_done(p_spl_qp_svc->h_mad_disp,p_mad_element); + /* Create an address vector for the SM. */ cl_memclr( &av_attr, sizeof( ib_av_attr_t ) ); av_attr.port_num = p_spl_qp_svc->port_num; diff --git a/trunk/core/al/user/ual_mgr.c b/trunk/core/al/user/ual_mgr.c index c1ebe829..09365d05 100644 --- a/trunk/core/al/user/ual_mgr.c +++ b/trunk/core/al/user/ual_mgr.c @@ -268,7 +268,12 @@ create_al_mgr() GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL ); if( g_al_device == INVALID_HANDLE_VALUE ) + { + AL_PRINT_EXIT(TRACE_LEVEL_ERROR ,AL_DBG_ERROR, + ("CreateFile returned %d.\n", GetLastError()) ); return IB_ERROR; + } + ver = AL_IOCTL_VERSION; @@ -280,7 +285,7 @@ create_al_mgr() gp_al_mgr = cl_zalloc( sizeof( al_mgr_t ) ); if( !gp_al_mgr ) { - AL_PRINT(TRACE_LEVEL_ERROR ,AL_DBG_ERROR , + AL_PRINT_EXIT(TRACE_LEVEL_ERROR ,AL_DBG_ERROR , ("Failed to cl_zalloc ual_mgr_t.\n") ); return IB_INSUFFICIENT_MEMORY; } -- 2.41.0