From 0bacf8a1d09644ea38ca7f9935340989e72ded4a Mon Sep 17 00:00:00 2001 From: sleybo Date: Wed, 7 Feb 2007 10:48:15 +0000 Subject: [PATCH] [WSD] add WPP support git-svn-id: svn://openib.tc.cornell.edu/gen1@574 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86 --- trunk/ulp/wsd/user/SOURCES | 22 +- trunk/ulp/wsd/user/extensions.c | 57 ++--- trunk/ulp/wsd/user/ib_cm.c | 57 ++--- trunk/ulp/wsd/user/ibsp_duplicate.c | 24 +- trunk/ulp/wsd/user/ibsp_iblow.c | 116 +++++----- trunk/ulp/wsd/user/ibsp_ip.c | 41 ++-- trunk/ulp/wsd/user/ibsp_mem.c | 39 ++-- trunk/ulp/wsd/user/ibsp_perfmon.c | 21 +- trunk/ulp/wsd/user/ibsp_pnp.c | 49 ++-- trunk/ulp/wsd/user/ibspdebug.c | 84 ++++--- trunk/ulp/wsd/user/ibspdebug.h | 182 +++++++++++---- trunk/ulp/wsd/user/ibspdll.c | 336 +++++++++++++++------------- trunk/ulp/wsd/user/ibspstruct.h | 7 +- trunk/ulp/wsd/user/misc.c | 12 +- trunk/ulp/wsd/user/sockinfo.c | 26 ++- 15 files changed, 624 insertions(+), 449 deletions(-) diff --git a/trunk/ulp/wsd/user/SOURCES b/trunk/ulp/wsd/user/SOURCES index c844ae6f..9da1354a 100644 --- a/trunk/ulp/wsd/user/SOURCES +++ b/trunk/ulp/wsd/user/SOURCES @@ -5,6 +5,11 @@ DLLENTRY=DllMain DLLDEF=ibspdll.def USE_NTDLL=1 +!if $(FREEBUILD) +ENABLE_EVENT_TRACING=1 +!endif + + SOURCES=\ ibspdll.rc \ extensions.c \ @@ -22,7 +27,8 @@ SOURCES=\ INCLUDES=..\..\..\inc;..\..\..\inc\user;$(DDK_INC_PATH); -USER_C_FLAGS=$(USER_C_FLAGS) -DCL_NO_TRACK_MEM -DPERFMON_ENABLED +USER_C_FLAGS=$(USER_C_FLAGS) -DCL_NO_TRACK_MEM -DPERFMON_ENABLED -DWPP_OLDCC + TARGETLIBS=\ $(SDK_LIB_PATH)\kernel32.lib \ @@ -38,4 +44,18 @@ TARGETLIBS=\ $(TARGETPATH)\*\ibald.lib !endif +!IFDEF ENABLE_EVENT_TRACING + +C_DEFINES = $(C_DEFINES) -DEVENT_TRACING + +RUN_WPP= $(SOURCES) -ext: .c .h -dll \ + -scan:ibspdebug.h\ + -func:IBSP_PRINT(LEVEL,FLAGS,(MSG,...)) \ + -func:IBSP_PRINT_EXIT(LEVEL,FLAGS,(MSG,...)) \ + -func:IBSP_ERROR{LEVEL=TRACE_LEVEL_ERROR,FLAGS=IBSP_DBG_ERROR}((MSG,...)) \ + -func:IBSP_ERROR_EXIT{LEVEL=TRACE_LEVEL_ERROR,FLAGS=IBSP_DBG_ERROR}((MSG,...)) + +!ENDIF + + MSC_WARNING_LEVEL= /W4 diff --git a/trunk/ulp/wsd/user/extensions.c b/trunk/ulp/wsd/user/extensions.c index 6af9f961..f22c1b85 100644 --- a/trunk/ulp/wsd/user/extensions.c +++ b/trunk/ulp/wsd/user/extensions.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2005 SilverStorm Technologies. All rights reserved. + * Copyright (c) 2006 Mellanox Technologies. All rights reserved. * * This software is available to you under the OpenIB.org BSD license * below: @@ -29,6 +30,16 @@ * $Id$ */ + +#include "ibspdebug.h" + +#if defined(EVENT_TRACING) +#ifdef offsetof +#undef offsetof +#endif +#include "extensions.tmh" +#endif + #include "ibspdll.h" @@ -55,14 +66,14 @@ IBSPRegisterMemory( if( lpBuffer == NULL ) { - IBSP_ERROR_EXIT( ("invalid buffer %p\n", lpBuffer) ); + IBSP_ERROR_EXIT( ( "invalid buffer %p\n", lpBuffer ) ); *lpErrno = WSAEFAULT; return NULL; } if( dwBufferLength > socket_info->socket_options.max_msg_size ) { - IBSP_ERROR_EXIT( ("invalid buffer length %d\n", dwBufferLength) ); + IBSP_ERROR_EXIT( ( "invalid buffer length %d\n", dwBufferLength ) ); *lpErrno = WSAEFAULT; return NULL; } @@ -97,13 +108,13 @@ IBSPRegisterMemory( if( node == NULL ) { - IBSP_ERROR_EXIT( - ("ibsp_reg_mem failed (pd=%p)\n", socket_info->hca_pd) ); + IBSP_ERROR( ("ibsp_reg_mem failed (pd=%p)\n", socket_info->hca_pd) ); *lpErrno = WSAENOBUFS; } else { - IBSP_TRACE_EXIT( IBSP_DBG_MEM, ("returning node %p\n", node) ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, + IBSP_DBG_MEM, ("returning node %p\n", node) ); *lpErrno = 0; } @@ -133,7 +144,7 @@ IBSPDeregisterMemory( if( s == INVALID_SOCKET ) { - IBSP_ERROR( ("invalid socket handle %x\n", s) ); + IBSP_ERROR_EXIT( ("invalid socket handle %Ix\n", s) ); *lpErrno = WSAENOTSOCK; return SOCKET_ERROR; } @@ -177,8 +188,7 @@ IBSPRegisterRdmaMemory( if( *lpdwDescriptorLength < sizeof(struct rdma_memory_desc) ) { /* This is the probe from the switch to learn the length of the descriptor. */ - IBSP_ERROR_EXIT( - ("invalid descriptor length %d (usually not an error)\n", + IBSP_ERROR_EXIT( ("invalid descriptor length %d (usually not an error)\n", *lpdwDescriptorLength) ); *lpdwDescriptorLength = sizeof(struct rdma_memory_desc); *lpErrno = WSAEFAULT; @@ -241,11 +251,12 @@ IBSPRegisterRdmaMemory( *lpErrno = 0; - IBSP_TRACE1( IBSP_DBG_MEM, - ("Socket %p registered RDMA MEM at %p, len %d, for access %d, " + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_MEM, + ("Socket %Ix registered RDMA MEM at %p, len %d, for access %d, " "returning handle %p, rkey %08x\n", s, lpBuffer, dwBufferLength, dwFlags, node, desc->rkey)); + IBSP_EXIT( IBSP_DBG_MEM ); return 0; @@ -275,7 +286,7 @@ IBSPDeregisterRdmaMemory( { /* Seen in real life with overlap/client test. * The switch closes a socket then calls this. Why? */ - IBSP_ERROR_EXIT( ("invalid socket handle %x\n", s) ); + IBSP_ERROR_EXIT( ("invalid socket handle %Ix\n", s) ); *lpErrno = WSAENOTSOCK; return SOCKET_ERROR; } @@ -284,8 +295,7 @@ IBSPDeregisterRdmaMemory( if( dwDescriptorLength < sizeof(struct rdma_memory_desc) ) { - IBSP_ERROR_EXIT( - ("invalid descriptor length %d)\n", dwDescriptorLength) ); + IBSP_ERROR_EXIT( ("invalid descriptor length %d)\n", dwDescriptorLength) ); *lpErrno = WSAEINVAL; return SOCKET_ERROR; } @@ -339,8 +349,7 @@ do_rdma_op( default: cl_spinlock_release( &socket_info->mutex ); - IBSP_ERROR_EXIT( - ("Socket is not in connected socket_state state=%s\n", + IBSP_ERROR_EXIT( ("Socket is not in connected socket_state state=%s\n", IBSP_SOCKET_STATE_STR( socket_info->socket_state )) ); *lpErrno = WSAENOTCONN; return SOCKET_ERROR; @@ -349,8 +358,7 @@ do_rdma_op( if( socket_info->qp_error ) { - IBSP_ERROR_EXIT( - ("QP is in error state %d\n", socket_info->qp_error) ); + IBSP_ERROR_EXIT( ("QP is in error state %d\n", socket_info->qp_error) ); *lpErrno = socket_info->qp_error; return SOCKET_ERROR; } @@ -360,7 +368,7 @@ do_rdma_op( { CL_ASSERT( dwBufferCount <= QP_ATTRIB_SQ_SGE ); /* TODO - support splitting large requests into multiple RDMA operations. */ - IBSP_ERROR_EXIT( + IBSP_ERROR_EXIT( ("dwBufferCount is greater than %d\n", QP_ATTRIB_SQ_SGE) ); *lpErrno = WSAEINVAL; return SOCKET_ERROR; @@ -368,8 +376,8 @@ do_rdma_op( if( dwTargetDescriptorLength != sizeof(struct rdma_memory_desc) ) { - IBSP_ERROR_EXIT( - ("invalid descriptor length %d)\n", dwTargetDescriptorLength) ); + IBSP_ERROR_EXIT( ( + "invalid descriptor length %d)\n", dwTargetDescriptorLength) ); *lpErrno = WSAEINVAL; return SOCKET_ERROR; } @@ -470,8 +478,8 @@ do_rdma_op( *lpErrno = WSA_IO_PENDING; - IBSP_TRACE1( IBSP_DBG_IO, - ("Posted RDMA: socket=%p, ov=%p, type=%d, local=%p, len=%d, " + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_IO, + ("Posted RDMA: socket=%Ix, ov=%p, type=%d, local=%p, len=%d, " "dest=%016I64x, rkey=%08x\n", s, lpOverlapped, wr_type, lpBuffers[0].buf, lpBuffers[0].len, send_wr.remote_ops.vaddr, send_wr.remote_ops.rkey) ); @@ -481,8 +489,7 @@ do_rdma_op( } else { - IBSP_ERROR( - ("ib_post_send returned %s\n", ib_get_err_str( status )) ); + IBSP_ERROR( ("ib_post_send returned %s\n", ib_get_err_str( status )) ); #ifdef _DEBUG_ @@ -542,7 +549,7 @@ IBSPRdmaWrite( if( s == INVALID_SOCKET ) { - IBSP_ERROR_EXIT( ("invalid socket handle %x\n", s) ); + IBSP_ERROR_EXIT( ("invalid socket handle %Ix\n", s) ); *lpErrno = WSAENOTSOCK; return SOCKET_ERROR; } diff --git a/trunk/ulp/wsd/user/ib_cm.c b/trunk/ulp/wsd/user/ib_cm.c index 3fe4f714..2c77be94 100644 --- a/trunk/ulp/wsd/user/ib_cm.c +++ b/trunk/ulp/wsd/user/ib_cm.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2005 SilverStorm Technologies. All rights reserved. + * Copyright (c) 2006 Mellanox Technologies. All rights reserved. * * This software is available to you under the OpenIB.org BSD license * below: @@ -28,6 +29,10 @@ * * $Id$ */ +#include "ibspdebug.h" +#if defined(EVENT_TRACING) +#include "ib_cm.tmh" +#endif #include "ibspdll.h" @@ -67,13 +72,13 @@ ibsp_post_select_event( switch( event ) { case FD_CONNECT: - IBSP_TRACE1( IBSP_DBG_NEV, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_NEV, ("socket %p FD_CONNECT\n", socket_info) ); socket_info->errno_connect = error; break; case FD_ACCEPT: - IBSP_TRACE1( IBSP_DBG_NEV, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_NEV, ("socket %p FD_ACCEPT\n", socket_info) ); break; @@ -89,7 +94,7 @@ ibsp_post_select_event( /* Check for event notification request and signal as needed. */ if( (socket_info->event_mask & event) && h_event ) { - IBSP_TRACE2( IBSP_DBG_NEV, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_NEV, ("Signaling eventHandle %p at time %I64d.\n", h_event, cl_get_time_stamp() ) ); SetEvent( h_event ); @@ -125,7 +130,7 @@ cm_req_callback( socket_info->listen.backlog ) { /* Already too many connection requests are queued */ - IBSP_TRACE1( IBSP_DBG_CM, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_CM, ("already too many incoming connections, rejecting\n") ); ib_reject( p_cm_req_rec->h_cm_req, IB_REJ_USER_DEFINED ); break; @@ -168,8 +173,8 @@ cm_req_callback( if( ret ) { cl_spinlock_release( &socket_info->mutex ); - IBSP_ERROR( - ("ib_accept for duplicate socket returned %d, rejecting\n", + IBSP_ERROR( ( + "ib_accept for duplicate socket returned %d, rejecting\n", ret) ); /* Call ib_destroy_socket for above ib_create_socket() call */ ib_destroy_socket( socket_info ); @@ -358,8 +363,8 @@ cm_rtu_callback( } else { - IBSP_ERROR( - ("ib_post_recv returned %s for reposted buffer\n", + IBSP_ERROR( ( + "ib_post_recv returned %s for reposted buffer\n", ib_get_err_str( status )) ); cl_atomic_dec( &socket_info->recv_cnt ); @@ -377,8 +382,7 @@ cm_rtu_callback( else if( socket_info->socket_state != IBSP_CONNECTED ) { /* The Socket might be closing */ - IBSP_ERROR( - ("Got RTU while in socket_state %s - ignoring\n", + IBSP_ERROR( ("Got RTU while in socket_state %s - ignoring\n", IBSP_SOCKET_STATE_STR( socket_info->socket_state )) ); } @@ -421,7 +425,7 @@ cm_rej_callback( IBSP_ENTER( IBSP_DBG_CM ); - IBSP_TRACE( IBSP_DBG_CM, ("socket %p connect reject, reason=%d\n", + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_CM, ("socket %p connect reject, reason=%d\n", socket_info, cl_ntoh16(p_cm_rej_rec->rej_status)) ); cl_spinlock_acquire( &socket_info->mutex ); @@ -503,7 +507,7 @@ cm_dreq_callback( (struct ibsp_socket_info * __ptr64)p_cm_dreq_rec->qp_context; IBSP_ENTER( IBSP_DBG_CM ); - IBSP_TRACE1( IBSP_DBG_CM, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_CM, ("socket=%p state=%s\n", socket_info, IBSP_SOCKET_STATE_STR( socket_info->socket_state )) ); @@ -611,7 +615,7 @@ cm_apr_callback( UNUSED_PARAM( p_cm_apr_rec ); - IBSP_ERROR( ("not implemented")); + IBSP_ERROR( ("not implemented") ); CL_ASSERT( 0 ); @@ -634,7 +638,7 @@ cm_lap_callback( UNUSED_PARAM( p_cm_lap_rec ); - IBSP_ERROR( ("not implemented")); + IBSP_ERROR( ("not implemented") ); CL_ASSERT( 0 ); @@ -694,7 +698,7 @@ ib_listen( STAT_INC( listen_num ); - IBSP_TRACE_EXIT( IBSP_DBG_CM, + IBSP_PRINT_EXIT(TRACE_LEVEL_INFORMATION, IBSP_DBG_CM, ("started listening for port %d\n", CL_HTON16( socket_info->local_addr.sin_port )) ); @@ -739,8 +743,8 @@ ib_listen_cancel( status = ib_cm_cancel( socket_info->listen.handle, ib_sync_destroy ); if( status ) { - IBSP_ERROR( - ("ib_cm_cancel returned %s\n", ib_get_err_str( status )) ); + IBSP_ERROR( ( + "ib_cm_cancel returned %s\n", ib_get_err_str( status )) ); } else { @@ -773,10 +777,10 @@ ib_connect( fzprint(("%s():%d:0x%x:0x%x: socket=0x%p \n", __FUNCTION__, __LINE__, GetCurrentProcessId(), GetCurrentThreadId(), socket_info)); - IBSP_TRACE( IBSP_DBG_CM, ("From:\n") ); - DebugPrintSockAddr( IBSP_DBG_CM, gdbg_lvl, &socket_info->local_addr ); - IBSP_TRACE( IBSP_DBG_CM, ("To:\n") ); - DebugPrintSockAddr( IBSP_DBG_CM, gdbg_lvl, &socket_info->peer_addr ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_CM, ("From:\n") ); + DebugPrintSockAddr( IBSP_DBG_CM, &socket_info->local_addr ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_CM, ("To:\n") ); + DebugPrintSockAddr( IBSP_DBG_CM, &socket_info->peer_addr ); /* Insert into the connection map. */ if( !ibsp_conn_insert( socket_info ) ) @@ -798,10 +802,10 @@ ib_connect( params.listen_req_param.dwProcessId = socket_info->duplicate.dwProcessId; params.listen_req_param.identifier = socket_info->duplicate.identifier; - IBSP_TRACE( IBSP_DBG_CM, - ("ib_connect listen params: %x %x\n", params.listen_req_param.dwProcessId, - params.listen_req_param.identifier) ); - IBSP_TRACE( IBSP_DBG_CM, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_CM, + ("ib_connect listen params: %x \n", params.listen_req_param.dwProcessId + /*params.listen_req_param.identifier*/)); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_CM, ("connecting to port %d, SID=%016I64x\n", socket_info->peer_addr.sin_port, cm_req.svc_id) ); @@ -921,8 +925,7 @@ ib_accept( /* Remove from connection map. */ ibsp_conn_remove( socket_info ); - IBSP_ERROR_EXIT( - ("ib_cm_rep failed (0x%d) at time %I64d\n", + IBSP_ERROR_EXIT( ("ib_cm_rep failed (0x%s) at time %I64d\n", ib_get_err_str( status ), cl_get_time_stamp()) ); return WSAEACCES; } diff --git a/trunk/ulp/wsd/user/ibsp_duplicate.c b/trunk/ulp/wsd/user/ibsp_duplicate.c index 0c49c81b..d22a109a 100644 --- a/trunk/ulp/wsd/user/ibsp_duplicate.c +++ b/trunk/ulp/wsd/user/ibsp_duplicate.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2005 SilverStorm Technologies. All rights reserved. + * Copyright (c) 2006 Mellanox Technologies. All rights reserved. * * This software is available to you under the OpenIB.org BSD license * below: @@ -29,6 +30,13 @@ * $Id$ */ + +#include "ibspdebug.h" +#if defined(EVENT_TRACING) + +#include "ibsp_duplicate.tmh" +#endif + #include "ibspdll.h" #include "rpc.h" @@ -200,7 +208,7 @@ IBSPDuplicateSocket( IBSP_ENTER( IBSP_DBG_DUP ); - IBSP_TRACE4( IBSP_DBG_DUP, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_DUP, ("Duplicating socket=0x%p to dwProcessId=0x%x \n", socket_info, dwProcessId) ); @@ -208,7 +216,7 @@ IBSPDuplicateSocket( if( socket_info->socket_state != IBSP_CONNECTED ) { cl_spinlock_release( &socket_info->mutex ); - IBSP_TRACE_EXIT( IBSP_DBG_DUP, + IBSP_PRINT_EXIT(TRACE_LEVEL_INFORMATION, IBSP_DBG_DUP, ("Socket state not IBSP_CONNECTED, state=%s.\n", IBSP_SOCKET_STATE_STR( socket_info->socket_state )) ); *lpErrno = WSAENOTCONN; @@ -224,8 +232,7 @@ IBSPDuplicateSocket( if( !h_dup_info ) { cl_spinlock_release( &socket_info->mutex ); - IBSP_ERROR_EXIT( - ("CreateFileMapping for %s failed with %d\n", + IBSP_ERROR_EXIT( ("CreateFileMapping for %s failed with %d\n", fname, GetLastError()) ); *lpErrno = WSAENETDOWN; return SOCKET_ERROR; @@ -236,8 +243,7 @@ IBSPDuplicateSocket( if( !dup_info ) { cl_spinlock_release( &socket_info->mutex ); - IBSP_ERROR_EXIT( - ("MapViewOfFile failed with %d\n", GetLastError()) ); + IBSP_ERROR_EXIT( ("MapViewOfFile failed with %d\n", GetLastError()) ); CloseHandle( h_dup_info ); *lpErrno = WSAENETDOWN; return SOCKET_ERROR; @@ -261,8 +267,7 @@ IBSPDuplicateSocket( if( !h_target_process ) { cl_spinlock_release( &socket_info->mutex ); - IBSP_ERROR_EXIT( - ("OpenProcess failed with %d\n", GetLastError()) ); + IBSP_ERROR_EXIT( ("OpenProcess failed with %d\n", GetLastError()) ); CloseHandle( h_dup_info ); *lpErrno = WSAENETDOWN; return SOCKET_ERROR; @@ -273,8 +278,7 @@ IBSPDuplicateSocket( DUPLICATE_CLOSE_SOURCE | DUPLICATE_SAME_ACCESS ) ) { cl_spinlock_release( &socket_info->mutex ); - IBSP_ERROR_EXIT( - ("DuplicateHandle failed with %d\n", GetLastError()) ); + IBSP_ERROR_EXIT( ("DuplicateHandle failed with %d\n", GetLastError()) ); CloseHandle( h_target_process ); CloseHandle( h_dup_info ); *lpErrno = WSAENETDOWN; diff --git a/trunk/ulp/wsd/user/ibsp_iblow.c b/trunk/ulp/wsd/user/ibsp_iblow.c index dade0949..ab33d36f 100644 --- a/trunk/ulp/wsd/user/ibsp_iblow.c +++ b/trunk/ulp/wsd/user/ibsp_iblow.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2005 SilverStorm Technologies. All rights reserved. + * Copyright (c) 2006 Mellanox Technologies. All rights reserved. * * This software is available to you under the OpenIB.org BSD license * below: @@ -28,6 +29,14 @@ * * $Id$ */ +#include "ibspdebug.h" + +#if defined(EVENT_TRACING) +#ifdef offsetof +#undef offsetof +#endif +#include "ibsp_iblow.tmh" +#endif #include "ibspdll.h" @@ -67,7 +76,7 @@ complete_wq( lpOverlapped = wr->lpOverlapped; - IBSP_TRACE4( IBSP_DBG_IO, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_IO, ("socket %p, ov %p, work completion status=%s, wc_type=%s\n", socket_info, lpOverlapped, ib_get_wc_status_str( wc->status ), ib_get_wc_type_str( wc->wc_type )) ); @@ -210,7 +219,7 @@ complete_wq( IBSP_ERROR( ("%s (%s:%d to ", comp_name, inet_ntoa( socket_info->local_addr.sin_addr ), socket_info->local_addr.sin_port) ); - IBSP_ERROR( ("%s:%d) %s error: %s (vendor specific %i64x)\n", + IBSP_ERROR( ("%s:%d) %s error: %s (vendor specific %I64x)\n", inet_ntoa( socket_info->peer_addr.sin_addr ), socket_info->peer_addr.sin_port, ib_get_wc_type_str( wc->wc_type ), @@ -248,7 +257,7 @@ complete_wq( if( wc->status == IB_SUCCESS && p_recv_wr->ds_array[0].length >= 40 ) { - debug_dump_buffer( IBSP_DBG_WQ | IBSP_DBG_LEVEL4, "RECV", + debug_dump_buffer( IBSP_DBG_WQ, "RECV", (void * __ptr64)p_recv_wr->ds_array[0].vaddr, 40 ); } @@ -287,11 +296,12 @@ complete_wq( memset( wr, 0x33, sizeof(struct _wr) ); } #endif - - IBSP_TRACE4( IBSP_DBG_IO, - ("overlapped=%p, InternalHigh=%d, hEvent=%x\n", + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_IO, + ("overlapped=%p, InternalHigh=%Id, hEvent=%p\n", lpOverlapped, lpOverlapped->InternalHigh, - (uintptr_t) lpOverlapped->hEvent) ); + lpOverlapped->hEvent) ); + + /* Don't notify the switch for that completion only if: * - the switch don't want a notification @@ -313,9 +323,9 @@ complete_wq( g_ibsp.overlap_h1_comp_count, g_ibsp.send_count, g_ibsp.recv_count)); #endif - IBSP_TRACE1( IBSP_DBG_IO, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_IO, ("Not calling lpWPUCompleteOverlappedRequest: " - "socket=%p, ov=%p OffsetHigh=%d, InternalHigh=%d hEvent=%p\n", + "socket=%p, ov=%p OffsetHigh=%d, InternalHigh=%Id hEvent=%p\n", socket_info, lpOverlapped, lpOverlapped->OffsetHigh, lpOverlapped->InternalHigh, lpOverlapped->hEvent) ); @@ -387,9 +397,8 @@ ib_cq_comp( status = ib_poll_cq( cq_tinfo->cq, &free_wclist, &done_wclist ); - IBSP_TRACE( IBSP_DBG_WQ, - ("%s():%d:0x%x:0x%x: poll CQ got status %d, free=%p, done=%p\n", - __FUNCTION__, __LINE__, GetCurrentProcessId(), GetCurrentThreadId(), + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_WQ, + ("poll CQ got status %d, free=%p, done=%p\n", status, free_wclist, done_wclist) ); switch( status ) @@ -401,13 +410,13 @@ ib_cq_comp( case IB_INVALID_CQ_HANDLE: /* This happens when the switch closes the socket while the * execution thread was calling lpWPUCompleteOverlappedRequest. */ - IBSP_ERROR( - ("ib_poll_cq returned IB_INVLALID_CQ_HANDLE\n") ); + IBSP_ERROR( ( + "ib_poll_cq returned IB_INVLALID_CQ_HANDLE\n") ); goto done; default: - IBSP_ERROR( - ("ib_poll_cq failed returned %s\n", ib_get_err_str( status )) ); + IBSP_ERROR( ( + "ib_poll_cq failed returned %s\n", ib_get_err_str( status )) ); break; } @@ -434,10 +443,10 @@ ib_cq_comp( if( info[i].p_ov ) { - IBSP_TRACE1( IBSP_DBG_IO, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_IO, ("Calling lpWPUCompleteOverlappedRequest: " "socket=%p, ov=%p OffsetHigh=%d " - "InternalHigh=%d hEvent=%p\n", + "InternalHigh=%Id hEvent=%p\n", info[i].p_socket, info[i].p_ov, info[i].p_ov->OffsetHigh, info[i].p_ov->InternalHigh, info[i].p_ov->hEvent) ); @@ -496,9 +505,9 @@ ib_cq_thread( old_afinity = SetThreadAffinityMask (GetCurrentThread (),g_dwPollThreadAffinityMask); if (old_afinity == 0) { - OutputDebugString("SetThreadAffinityMask failed\n"); + IBSP_ERROR(("SetThreadAffinityMask failed\n")); } else { - OutputDebugString("SetThreadAffinityMask succeeded\n"); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_DLL,("SetThreadAffinityMask succeeded\n")); } @@ -507,8 +516,8 @@ ib_cq_thread( cl_status = cl_waitobj_wait_on( cq_tinfo->cq_waitobj, EVENT_NO_TIMEOUT, TRUE ); if( cl_status != CL_SUCCESS ) { - IBSP_ERROR( - ("cl_waitobj_wait_on() (%d)\n", cl_status) ); + IBSP_ERROR( ( + "cl_waitobj_wait_on() (%d)\n", cl_status) ); } /* @@ -537,8 +546,8 @@ ib_cq_thread( status = ib_rearm_cq( cq_tinfo->cq, FALSE ); if( status != IB_SUCCESS ) { - IBSP_ERROR( - ("ib_rearm_cq returned %s)\n", ib_get_err_str( status )) ); + IBSP_ERROR( ( + "ib_rearm_cq returned %s)\n", ib_get_err_str( status )) ); } } @@ -547,8 +556,8 @@ ib_cq_thread( cl_status = cl_waitobj_destroy( cq_tinfo->cq_waitobj ); if( cl_status != CL_SUCCESS ) { - IBSP_ERROR( - ("cl_waitobj_destroy() returned %s\n", CL_STATUS_MSG(cl_status)) ); + IBSP_ERROR( ( + "cl_waitobj_destroy() returned %s\n", CL_STATUS_MSG(cl_status)) ); } HeapFree( g_ibsp.heap, 0, cq_tinfo ); @@ -584,8 +593,8 @@ ib_alloc_cq_tinfo( { cq_tinfo->cq_waitobj = NULL; ib_destroy_cq_tinfo( cq_tinfo ); - IBSP_ERROR_EXIT( - ("cl_waitobj_create() returned %s\n", CL_STATUS_MSG(cl_status)) ); + IBSP_ERROR_EXIT( ( + "cl_waitobj_create() returned %s\n", CL_STATUS_MSG(cl_status)) ); return NULL; } @@ -615,8 +624,8 @@ ib_alloc_cq_tinfo( if( status ) { ib_destroy_cq_tinfo( cq_tinfo ); - IBSP_ERROR_EXIT( - ("ib_create_cq returned %s\n", ib_get_err_str( status )) ); + IBSP_ERROR_EXIT( ( + "ib_create_cq returned %s\n", ib_get_err_str( status )) ); return NULL; } @@ -626,8 +635,8 @@ ib_alloc_cq_tinfo( if( status ) { ib_destroy_cq_tinfo( cq_tinfo ); - IBSP_ERROR_EXIT( - ("ib_rearm_cq returned %s\n", ib_get_err_str( status )) ); + IBSP_ERROR_EXIT( ( + "ib_rearm_cq returned %s\n", ib_get_err_str( status )) ); return NULL; } @@ -680,11 +689,11 @@ ib_destroy_cq_tinfo( while( ib_poll_cq( cq_tinfo->cq, &free_wclist, &done_wclist ) == IB_SUCCESS ) { - IBSP_TRACE1( IBSP_DBG_WQ, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_WQ, ("free=%p, done=%p\n", free_wclist, done_wclist) ); } - IBSP_TRACE4( IBSP_DBG_WQ, ("ib_destroy_cq() start..\n") ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_WQ, ("ib_destroy_cq() start..\n") ); /* * Called from cleanup thread, okay to block. @@ -692,12 +701,12 @@ ib_destroy_cq_tinfo( status = ib_destroy_cq( cq_tinfo->cq, ib_sync_destroy ); if( status ) { - IBSP_ERROR( - ("ib_destroy_cq returned %s\n", ib_get_err_str( status )) ); + IBSP_ERROR( ( + "ib_destroy_cq returned %s\n", ib_get_err_str( status )) ); } else { - IBSP_TRACE4( IBSP_DBG_WQ, ("ib_destroy_cq() finished.\n") ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_WQ, ("ib_destroy_cq() finished.\n") ); cq_tinfo->cq = NULL; @@ -800,8 +809,8 @@ ib_acquire_cq_tinfo( break; default: - IBSP_ERROR_EXIT( - ("ib_modify_cq() returned %s\n", ib_get_err_str(status)) ); + IBSP_ERROR_EXIT( ( + "ib_modify_cq() returned %s\n", ib_get_err_str(status)) ); case IB_INVALID_CQ_SIZE: case IB_UNSUPPORTED: cq_tinfo = PARENT_STRUCT( @@ -871,12 +880,12 @@ ib_release(void) status)); if( status != IB_SUCCESS ) { - IBSP_ERROR( - ("ib_close_al returned %s\n", ib_get_err_str( status )) ); + IBSP_ERROR( ( + "ib_close_al returned %s\n", ib_get_err_str( status )) ); } else { - IBSP_TRACE( IBSP_DBG_HW, ("ib_close_al success\n") ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_HW, ("ib_close_al success\n") ); STAT_DEC( al_num ); } g_ibsp.al_handle = NULL; @@ -911,7 +920,7 @@ ibsp_initialize(void) /* Open the IB library */ status = ib_open_al( &g_ibsp.al_handle ); - IBSP_TRACE( IBSP_DBG_HW, ("open is %d %p\n", status, g_ibsp.al_handle) ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_HW, ("open is %d %p\n", status, g_ibsp.al_handle) ); if( status != IB_SUCCESS ) { @@ -1020,8 +1029,8 @@ ib_create_socket( if( status ) { ib_release_cq_tinfo( socket_info->cq_tinfo ); - IBSP_ERROR_EXIT( - ("ib_create_qp returned %s\n", ib_get_err_str( status )) ); + IBSP_ERROR_EXIT( ( + "ib_create_qp returned %s\n", ib_get_err_str( status )) ); return WSAENOBUFS; } @@ -1111,9 +1120,9 @@ ibsp_dup_overlap_abort( g_ibsp.overlap_h1_comp_count, g_ibsp.send_count, g_ibsp.recv_count)); #endif - CL_TRACE(IBSP_DBG_WQ, gdbg_lvl, - ("%s: set internal overlapped=0x%p Internal=%d OffsetHigh=%d\n", - __FUNCTION__, lpOverlapped, lpOverlapped->Internal, + IBSP_PRINT(TRACE_LEVEL_INFORMATION,IBSP_DBG_WQ, + ("set internal overlapped=0x%p Internal=%Id OffsetHigh=%d\n", + lpOverlapped, lpOverlapped->Internal, lpOverlapped->OffsetHigh)); lpOverlapped->Internal = 0; @@ -1130,9 +1139,10 @@ ibsp_dup_overlap_abort( g_ibsp.overlap_h0_count, g_ibsp.overlap_h1_count, g_ibsp.overlap_h1_comp_count, g_ibsp.send_count, g_ibsp.recv_count)); #endif - CL_TRACE(IBSP_DBG_WQ, gdbg_lvl, - ("%s: calls lpWPUCompleteOverlappedRequest, overlapped=0x%p OffsetHigh=%d InternalHigh=%d hEvent=%d\n", - __FUNCTION__, lpOverlapped, lpOverlapped->OffsetHigh, + IBSP_PRINT(TRACE_LEVEL_INFORMATION,IBSP_DBG_WQ, + (" calls lpWPUCompleteOverlappedRequest, overlapped=0x%p OffsetHigh=%d " + "InternalHigh=%Id hEvent=%p\n", + lpOverlapped, lpOverlapped->OffsetHigh, lpOverlapped->InternalHigh, lpOverlapped->hEvent)); ret = g_ibsp.up_call_table.lpWPUCompleteOverlappedRequest @@ -1142,9 +1152,7 @@ ibsp_dup_overlap_abort( if( ret != 0 ) { - CL_ERROR(IBSP_DBG_EP, gdbg_lvl, - ("lpWPUCompleteOverlappedRequest failed with %d/%d\n", ret, - error)); + IBSP_ERROR( ("lpWPUCompleteOverlappedRequest failed with %d/%d\n", ret, error) ); } } cl_atomic_dec( &socket_info->dup_cnt ); diff --git a/trunk/ulp/wsd/user/ibsp_ip.c b/trunk/ulp/wsd/user/ibsp_ip.c index 8c14db44..b0a95720 100644 --- a/trunk/ulp/wsd/user/ibsp_ip.c +++ b/trunk/ulp/wsd/user/ibsp_ip.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2005 SilverStorm Technologies. All rights reserved. + * Copyright (c) 2006 Mellanox Technologies. All rights reserved. * * This software is available to you under the OpenIB.org BSD license * below: @@ -32,6 +33,14 @@ /* Builds and returns the list of IP addresses available from all * adapters. */ +#include "ibspdebug.h" +#if defined(EVENT_TRACING) +#ifdef offsetof +#undef offsetof +#endif +#include "ibsp_ip.tmh" +#endif + #include "ibspdll.h" /*--------------------------------------------------------------------------*/ @@ -117,8 +126,8 @@ query_ip_address( &in, sizeof(in), p_out, size, &size, NULL ) ) { HeapFree( g_ibsp.heap, 0, p_out ); - IBSP_ERROR_EXIT( - ("IOCTL_IBAT_IP_ADDRESSES for port %I64x failed (%x).\n", + IBSP_ERROR_EXIT( ( + "IOCTL_IBAT_IP_ADDRESSES for port %I64x failed (%x).\n", p_port->guid, GetLastError()) ); return -1; } @@ -132,7 +141,7 @@ query_ip_address( } while( !p_out ); - IBSP_TRACE( IBSP_DBG_HW, ("Port %I64x has %d IP addresses.\n", + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_HW, ("Port %I64x has %d IP addresses.\n", p_port->guid, p_out->AddressCount) ); for( i = 0; i < p_out->AddressCount; i++ ) @@ -156,13 +165,13 @@ query_ip_address( if( p_item != &ip_addr->item ) { /* Duplicate! Should never happen. */ - IBSP_ERROR( - ("Got duplicate addr %s\n", inet_ntoa( ip_addr->ip_addr )) ); + IBSP_ERROR( ( + "Got duplicate addr %s\n", inet_ntoa( ip_addr->ip_addr )) ); HeapFree( g_ibsp.heap, 0, ip_addr ); continue; } - IBSP_TRACE( IBSP_DBG_HW, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_HW, ("Got addr %s\n", inet_ntoa( ip_addr->ip_addr )) ); } @@ -191,8 +200,8 @@ update_ip_addresses( ret = query_ip_address( port, &dup_ip ); if( ret ) { - IBSP_ERROR_EXIT( - ("query_ip_address failed (%d)\n", ret) ); + IBSP_ERROR_EXIT( ( + "query_ip_address failed (%d)\n", ret) ); return 1; } @@ -266,7 +275,7 @@ query_guid_callback( ib_service_record_t *service_record; IBSP_ENTER( IBSP_DBG_HW ); - IBSP_TRACE( IBSP_DBG_HW, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_HW, ("status is %d, count is %d\n", p_query_rec->status, p_query_rec->result_cnt) ); @@ -350,7 +359,7 @@ query_guid_address( if( query_context.status != IB_SUCCESS ) { - IBSP_TRACE( IBSP_DBG_HW, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_HW, ("query success, but no GUID for IP address %x (query status %d)\n", ip_addr, query_context.status) ); goto error; @@ -387,7 +396,7 @@ query_pr_callback( ib_api_status_t status; IBSP_ENTER( IBSP_DBG_HW ); - IBSP_TRACE( IBSP_DBG_HW, ("status is %d\n", p_query_rec->status) ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_HW, ("status is %d\n", p_query_rec->status) ); if( p_query_rec->status == IB_SUCCESS && p_query_rec->result_cnt ) { @@ -447,7 +456,7 @@ query_pr( fzprint(("%s():%d:0x%x:0x%x: Calling ib_query()..\n", __FUNCTION__, __LINE__, GetCurrentProcessId(), GetCurrentThreadId())); - IBSP_TRACE( IBSP_DBG_HW, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_HW, ("Query for path from %I64x to %I64x\n", port->guid, dest_port_guid) ); @@ -534,7 +543,7 @@ build_ip_list( num_ip = cl_fmap_count( &g_ibsp.ip_map ); - IBSP_TRACE( IBSP_DBG_HW, (" num ip = %d\n", num_ip) ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_HW, (" num ip = %Id\n", num_ip) ); /* Note: the required size computed is a few bytes larger than necessary, * but that keeps the code clean. */ @@ -568,8 +577,8 @@ build_ip_list( cl_spinlock_release( &g_ibsp.ip_mutex ); *ip_list_size = (DWORD) size_req; *lpErrno = WSAEFAULT; - IBSP_ERROR_EXIT( - ("returning efault, size %d (usually not an error)", size_req) ); + IBSP_ERROR_EXIT( ( + "returning efault, size %Id (usually not an error)", size_req) ); return SOCKET_ERROR; } @@ -627,7 +636,7 @@ get_port_from_ip_address( if( p_item != cl_fmap_end( &g_ibsp.ip_map ) ) p_port = PARENT_STRUCT(p_item, struct ibsp_ip_addr, item)->p_port; else - IBSP_TRACE( IBSP_DBG_HW, ("not found\n") ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_HW, ("not found\n") ); cl_spinlock_release( &g_ibsp.ip_mutex ); diff --git a/trunk/ulp/wsd/user/ibsp_mem.c b/trunk/ulp/wsd/user/ibsp_mem.c index a1f431c5..a8a695e1 100644 --- a/trunk/ulp/wsd/user/ibsp_mem.c +++ b/trunk/ulp/wsd/user/ibsp_mem.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2005 SilverStorm Technologies. All rights reserved. + * Copyright (c) 2006 Mellanox Technologies. All rights reserved. * * This software is available to you under the OpenIB.org BSD license * below: @@ -30,6 +31,13 @@ */ /* Registers a memory region */ +#include "ibspdebug.h" +#if defined(EVENT_TRACING) +#ifdef offsetof +#undef offsetof +#endif +#include "ibsp_mem.tmh" +#endif #include "ibspdll.h" @@ -81,7 +89,7 @@ lookup_partial_mr( cl_spinlock_release( &s->port->hca->rdma_mem_list.mutex ); - IBSP_TRACE_EXIT( IBSP_DBG_MEM, ("mr not found\n") ); + IBSP_PRINT_EXIT(TRACE_LEVEL_INFORMATION, IBSP_DBG_MEM, ("mr not found\n") ); return NULL; } @@ -114,8 +122,7 @@ ibsp_reg_mem( p_node = HeapAlloc( g_ibsp.heap, 0, sizeof(struct memory_node) ); if( !p_node ) { - IBSP_ERROR_EXIT( - ("AllocateOverlappedBuf:HeapAlloc() failed: %d\n", + IBSP_ERROR_EXIT( ("AllocateOverlappedBuf:HeapAlloc() failed: %d\n", GetLastError()) ); *lpErrno = WSAENOBUFS; return NULL; @@ -149,8 +156,7 @@ ibsp_reg_mem( if( !p_reg ) { - IBSP_ERROR_EXIT( - ("AllocateOverlappedBuf:HeapAlloc() failed: %d\n", + IBSP_ERROR_EXIT( ("AllocateOverlappedBuf:HeapAlloc() failed: %d\n", GetLastError()) ); cl_spinlock_release( &s->port->hca->rdma_mem_list.mutex ); HeapFree( g_ibsp.heap, 0, p_node ); @@ -165,7 +171,7 @@ ibsp_reg_mem( p_reg->type.length = len; p_reg->type.access_ctrl = access_ctrl; - IBSP_TRACE2( IBSP_DBG_MEM, ("pinning memory node %p\n", p_node) ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_MEM, ("pinning memory node %p\n", p_node) ); status = ib_reg_mem( pd, &p_reg->type, &p_reg->lkey, &p_reg->rkey, &p_reg->mr_handle ); @@ -175,8 +181,7 @@ ibsp_reg_mem( HeapFree( g_ibsp.heap, 0, p_reg ); HeapFree( g_ibsp.heap, 0, p_node ); - IBSP_ERROR_EXIT( - ("ib_reg_mem returned %s\n", ib_get_err_str(status)) ); + IBSP_ERROR_EXIT( ("ib_reg_mem returned %s\n", ib_get_err_str(status)) ); *lpErrno = WSAEFAULT; return NULL; @@ -251,8 +256,8 @@ ibsp_dereg_hca( IBSP_ENTER( IBSP_DBG_MEM ); cl_spinlock_acquire( &mem_list->mutex ); - IBSP_TRACE1( IBSP_DBG_MEM, - ("%d registrations.\n", cl_qlist_count( &mem_list->list )) ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_MEM, + ("%Id registrations.\n", cl_qlist_count( &mem_list->list )) ); for( item = cl_qlist_remove_head( &mem_list->list ); item != cl_qlist_end( &mem_list->list ); @@ -274,12 +279,12 @@ ibsp_dereg_hca( p_node->p_reg = NULL; } - IBSP_TRACE2( IBSP_DBG_MEM, ("unpinning ,memory reg %p\n", p_reg) ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_MEM, ("unpinning ,memory reg %p\n", p_reg) ); status = ib_dereg_mr( p_reg->mr_handle ); if( status ) { - IBSP_ERROR( - ("ib_dereg_mem returned %s\n", ib_get_err_str( status )) ); + IBSP_ERROR( ( + "ib_dereg_mem returned %s\n", ib_get_err_str( status )) ); } else { @@ -312,8 +317,8 @@ ibsp_dereg_socket( } cl_spinlock_acquire( &s->port->hca->rdma_mem_list.mutex ); - IBSP_TRACE1( IBSP_DBG_MEM, - ("%d registrations.\n", cl_qlist_count( &s->mr_list )) ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_MEM, + ("%Id registrations.\n", cl_qlist_count( &s->mr_list )) ); while( cl_qlist_count( &s->mr_list ) ) { @@ -380,8 +385,8 @@ ibsp_hca_flush_mr_cache( status = ib_dereg_mr( p_reg->mr_handle ); if( status != IB_SUCCESS ) { - IBSP_ERROR( - ("ib_dereg_mr returned %s\n", ib_get_err_str(status)) ); + IBSP_ERROR( ( + "ib_dereg_mr returned %s\n", ib_get_err_str(status)) ); } HeapFree( g_ibsp.heap, 0, p_reg ); diff --git a/trunk/ulp/wsd/user/ibsp_perfmon.c b/trunk/ulp/wsd/user/ibsp_perfmon.c index bbfb56ca..2b0bdcc1 100644 --- a/trunk/ulp/wsd/user/ibsp_perfmon.c +++ b/trunk/ulp/wsd/user/ibsp_perfmon.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2005 SilverStorm Technologies. All rights reserved. + * Copyright (c) 2006 Mellanox Technologies. All rights reserved. * * This software is available to you under the OpenIB.org BSD license * below: @@ -30,6 +31,11 @@ */ +#include "ibspdebug.h" +#if defined(EVENT_TRACING) +#include "ibsp_perfmon.tmh" +#endif + #include #include "ibspdll.h" #include "ibsp_perfmon.h" @@ -169,7 +175,7 @@ IBSPPmGetSlot( void ) g_pm_stat.idx = idx; g_pm_stat.pdata = g_pm_stat.p_shmem->obj[idx].data; - IBSP_TRACE2( IBSP_DBG_PERFMON, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_PERFMON, ("%S got slot %d\n", p_slot->app_name, idx) ); break; } @@ -276,8 +282,7 @@ IBSPPmOpen( if( status != ERROR_SUCCESS ) { g_pm_stat.threads--; - IBSP_ERROR_EXIT( - ("RegOpenKeyEx for perf information returned %d.\n", status) ); + IBSP_ERROR_EXIT( ("RegOpenKeyEx for perf information returned %d.\n", status) ); return status; } @@ -289,8 +294,7 @@ IBSPPmOpen( { RegCloseKey(pm_hkey); g_pm_stat.threads--; - IBSP_ERROR_EXIT( - ("RegQueryValueEx for \"First Counter\" returned %d.\n", status) ); + IBSP_ERROR_EXIT( ("RegQueryValueEx for \"First Counter\" returned %d.\n", status) ); return status; } @@ -303,8 +307,7 @@ IBSPPmOpen( if( status != ERROR_SUCCESS ) { g_pm_stat.threads--; - IBSP_ERROR_EXIT( - ("RegQueryValueEx for \"First Help\" returned %d.\n", status) ); + IBSP_ERROR_EXIT( ("RegQueryValueEx for \"First Help\" returned %d.\n", status) ); return status; } @@ -427,7 +430,7 @@ IBSPPmCollectData( if( !__PmIsQuerySupported(lpValueName ) ) { - IBSP_TRACE1( IBSP_DBG_PERFMON, ("Unsupported query\n") ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_PERFMON, ("Unsupported query\n") ); goto done; } @@ -469,7 +472,7 @@ done: num_instances++; } - IBSP_TRACE1( IBSP_DBG_PERFMON, ("%d instances.\n", num_instances) ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_PERFMON, ("%d instances.\n", num_instances) ); /* calc buffer size required for data return */ use_bytes = sizeof(ibsp_pm_definition_t) + \ diff --git a/trunk/ulp/wsd/user/ibsp_pnp.c b/trunk/ulp/wsd/user/ibsp_pnp.c index c1686b26..72593bb1 100644 --- a/trunk/ulp/wsd/user/ibsp_pnp.c +++ b/trunk/ulp/wsd/user/ibsp_pnp.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2005 SilverStorm Technologies. All rights reserved. + * Copyright (c) 2006 Mellanox Technologies. All rights reserved. * * This software is available to you under the OpenIB.org BSD license * below: @@ -31,6 +32,14 @@ /* TODO: right now, hotplug is not supported. */ +#include "ibspdebug.h" +#if defined(EVENT_TRACING) +#ifdef offsetof +#undef offsetof +#endif +#include "ibsp_pnp.tmh" +#endif + #include "ibspdll.h" @@ -79,8 +88,7 @@ pnp_ca_add( hca = HeapAlloc( g_ibsp.heap, HEAP_ZERO_MEMORY, sizeof(struct ibsp_hca) ); if( hca == NULL ) { - IBSP_ERROR( - ("can't get enough memory (%d)\n", sizeof(struct ibsp_hca)) ); + IBSP_ERROR( ("can't get enough memory (%d)\n", sizeof(struct ibsp_hca)) ); status = IB_INSUFFICIENT_MEMORY; goto pnp_ca_add_err1; } @@ -94,7 +102,7 @@ pnp_ca_add( cl_spinlock_init( &hca->cq_lock ); /* HCA handle */ - IBSP_TRACE( IBSP_DBG_HW, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_HW, ("handle is %p %016I64x\n", g_ibsp.al_handle, hca->guid) ); status = ib_open_ca( g_ibsp.al_handle, hca->guid, NULL, hca, &hca->hca_handle ); @@ -113,7 +121,7 @@ pnp_ca_add( { STAT_INC( pd_num ); - IBSP_TRACE( IBSP_DBG_EP, ("allocated PD %p for HCA\n", hca->pd) ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_EP, ("allocated PD %p for HCA\n", hca->pd) ); /* Success */ cl_spinlock_acquire( &g_ibsp.hca_mutex ); @@ -193,10 +201,13 @@ pnp_ca_remove( */ status = ib_dealloc_pd( hca->pd, NULL ); if( status ) + { IBSP_ERROR( ("ib_dealloc_pd failed (%d)\n", status) ); + } else + { STAT_DEC( pd_num ); - + } hca->pd = NULL; } @@ -238,8 +249,7 @@ pnp_port_add( hca = lookup_hca( p_port_rec->p_ca_attr->ca_guid ); if( !hca ) { - IBSP_ERROR( - ("Failed to lookup HCA (%016I64x) for new port (%016I64x)\n", + IBSP_ERROR( ("Failed to lookup HCA (%016I64x) for new port (%016I64x)\n", p_port_rec->p_ca_attr->ca_guid, p_port_rec->p_port_attr->port_guid) ); IBSP_EXIT( IBSP_DBG_HW ); return IB_INVALID_GUID; @@ -248,8 +258,7 @@ pnp_port_add( port = HeapAlloc( g_ibsp.heap, HEAP_ZERO_MEMORY, sizeof(struct ibsp_port) ); if( port == NULL ) { - IBSP_ERROR( - ("HeapAlloc failed (%d)\n", sizeof(struct ibsp_port)) ); + IBSP_ERROR( ("HeapAlloc failed (%d)\n", sizeof(struct ibsp_port)) ); IBSP_EXIT( IBSP_DBG_HW ); return IB_INSUFFICIENT_MEMORY; } @@ -300,7 +309,7 @@ pnp_callback( ib_pnp_port_rec_t* p_port_rec = (ib_pnp_port_rec_t*)pnp_rec; IBSP_ENTER( IBSP_DBG_HW ); - IBSP_TRACE( IBSP_DBG_HW, ("event is %x\n", pnp_rec->pnp_event) ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_HW, ("event is %x\n", pnp_rec->pnp_event) ); switch( pnp_rec->pnp_event ) { @@ -334,8 +343,7 @@ pnp_callback( case IB_PNP_GID_CHANGE: case IB_PNP_LID_CHANGE: case IB_PNP_SUBNET_TIMEOUT_CHANGE: - IBSP_ERROR( - ("pnp_callback: unsupported event %x\n", pnp_rec->pnp_event) ); + IBSP_ERROR( ("pnp_callback: unsupported event %x\n", pnp_rec->pnp_event) ); break; /* Discovery complete event */ @@ -343,8 +351,7 @@ pnp_callback( break; default: - IBSP_ERROR( - ("pnp_callback: unsupported event %x\n", pnp_rec->pnp_event) ); + IBSP_ERROR( ("pnp_callback: unsupported event %x\n", pnp_rec->pnp_event) ); break; } @@ -371,8 +378,7 @@ register_pnp(void) status = ib_reg_pnp( g_ibsp.al_handle, &pnp_req, &g_ibsp.pnp_handle_port ); if( status != IB_SUCCESS ) { - IBSP_ERROR( - ("register_pnp: ib_reg_pnp for PORT failed (%d)\n", status) ); + IBSP_ERROR( ("register_pnp: ib_reg_pnp for PORT failed (%d)\n", status) ); goto done; } @@ -382,8 +388,7 @@ register_pnp(void) status = ib_reg_pnp( g_ibsp.al_handle, &pnp_req, &g_ibsp.pnp_handle_port ); if( status != IB_SUCCESS ) { - IBSP_ERROR( - ("register_pnp: ib_reg_pnp for PORT failed (%d)\n", status) ); + IBSP_ERROR( ("register_pnp: ib_reg_pnp for PORT failed (%d)\n", status) ); goto done; } @@ -414,8 +419,8 @@ unregister_pnp(void) status = ib_dereg_pnp( g_ibsp.pnp_handle_port, ib_sync_destroy ); if( status != IB_SUCCESS ) { - IBSP_ERROR( - ("unregister_pnp: ib_dereg_pnp for PORT failed (%d)\n", status) ); + IBSP_ERROR( ("unregister_pnp: ib_dereg_pnp for PORT failed (%d)\n", + status) ); } g_ibsp.pnp_handle_port = NULL; @@ -426,8 +431,8 @@ unregister_pnp(void) status = ib_dereg_pnp( g_ibsp.pnp_handle_ca, ib_sync_destroy ); if( status != IB_SUCCESS ) { - IBSP_ERROR( - ("unregister_pnp: ib_dereg_pnp for PORT failed (%d)\n", status) ); + IBSP_ERROR( ("unregister_pnp: ib_dereg_pnp for PORT failed (%d)\n", + status) ); } g_ibsp.pnp_handle_ca = NULL; diff --git a/trunk/ulp/wsd/user/ibspdebug.c b/trunk/ulp/wsd/user/ibspdebug.c index 8460b6f5..c67a84d3 100644 --- a/trunk/ulp/wsd/user/ibspdebug.c +++ b/trunk/ulp/wsd/user/ibspdebug.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2005 SilverStorm Technologies. All rights reserved. + * Copyright (c) 2006 Mellanox Technologies. All rights reserved. * * This software is available to you under the OpenIB.org BSD license * below: @@ -33,16 +34,10 @@ #ifdef _DEBUG_ -//uint32_t gdbg_lvl = CL_DBG_DISABLE; -uint32_t gdbg_lvl = CL_DBG_ERROR; -//uint32_t gdbg_lvl = CL_DBG_ALL; -//uint32_t gdbg_lvl = IBSP_DBG_CONN | IBSP_DBG_DLL | IBSP_DBG_INIT | IBSP_DBG_CM | IBSP_DBG_EP; - void DebugPrintIBSPIoctlParams( - uint32_t level, - uint32_t mask, + uint32_t flags, DWORD dwIoControlCode, LPVOID lpvInBuffer, DWORD cbInBuffer, @@ -54,45 +49,48 @@ DebugPrintIBSPIoctlParams( { UNUSED_PARAM( lpThreadId ); - if( (level & mask) != level ) - return; - - CL_PRINT( level, mask, ("\tdwIoControlCode :") ); + IBSP_PRINT( TRACE_LEVEL_INFORMATION, flags,("\tdwIoControlCode :") ); switch( dwIoControlCode ) { case SIO_GET_QOS: - CL_PRINT( level, mask, ("SIO_GET_QOS\n") ); + IBSP_PRINT( TRACE_LEVEL_INFORMATION, flags,("SIO_GET_QOS\n") ); break; case SIO_GET_GROUP_QOS: - CL_PRINT( level, mask, ("SIO_GET_GROUP_QOS\n") ); + IBSP_PRINT( TRACE_LEVEL_INFORMATION, flags,("SIO_GET_GROUP_QOS\n") ); break; case SIO_SET_QOS: - CL_PRINT( level, mask, ("SIO_SET_QOS\n") ); + IBSP_PRINT( TRACE_LEVEL_INFORMATION, flags,("SIO_SET_QOS\n") ); break; case SIO_SET_GROUP_QOS: - CL_PRINT( level, mask, ("SIO_SET_GROUP_QOS\n") ); + IBSP_PRINT( TRACE_LEVEL_INFORMATION, flags,("SIO_SET_GROUP_QOS\n") ); break; case SIO_ADDRESS_LIST_QUERY: - CL_PRINT( level, mask, ("SIO_ADDRESS_LIST_QUERY\n") ); + IBSP_PRINT( TRACE_LEVEL_INFORMATION, flags,("SIO_ADDRESS_LIST_QUERY\n") ); break; default: - CL_PRINT( level, mask, ("UNKNOWN control code 0x%x)\n", dwIoControlCode) ); + IBSP_PRINT( TRACE_LEVEL_INFORMATION, flags,("UNKNOWN control code 0x%x)\n", dwIoControlCode) ); break; } if( lpvInBuffer == NULL ) - CL_PRINT( level, mask, ("\tInput Buffer pointer is NULL\n") ); + { + IBSP_PRINT( TRACE_LEVEL_INFORMATION, flags,("\tInput Buffer pointer is NULL\n") ); + } else - CL_PRINT( level, mask, ("\tInput buffer len (%d)\n", cbInBuffer) ); - + { + IBSP_PRINT( TRACE_LEVEL_INFORMATION, flags,("\tInput buffer len (%d)\n", cbInBuffer) ); + } if( lpvOutBuffer == NULL ) - CL_PRINT( level, mask, ("\tOutput Buffer pointer is NULL\n") ); + { + IBSP_PRINT( TRACE_LEVEL_INFORMATION, flags,("\tOutput Buffer pointer is NULL\n") ); + } else - CL_PRINT( level, mask, ("\tOutput buffer len (%d)\n", cbOutBuffer) ); - - CL_PRINT( level, mask, + { + IBSP_PRINT( TRACE_LEVEL_INFORMATION, flags,("\tOutput buffer len (%d)\n", cbOutBuffer) ); + } + IBSP_PRINT( TRACE_LEVEL_INFORMATION, flags, ("\tOverlapped IO is (%s)\n", ( lpOverlapped == NULL) ? "FALSE" : "TRUE") ); - CL_PRINT( level, mask, + IBSP_PRINT( TRACE_LEVEL_INFORMATION, flags, ("\tCompletion Routine is %s\n", ( lpCompletionRoutine == NULL) ? "NULL" : "non NULL") ); } @@ -100,22 +98,19 @@ DebugPrintIBSPIoctlParams( void DebugPrintSockAddr( - uint32_t level, - uint32_t mask, + uint32_t flags, struct sockaddr_in *pSockAddr ) { - if( (level & mask) != level ) - return; - CL_PRINT( level, mask, ("\tAddressFamily (0x%x)\n", pSockAddr->sin_family) ); - CL_PRINT( level, mask, ("\tPortNumber (0x%x)\n", pSockAddr->sin_port) ); - CL_PRINT( level, mask, ("\tIPAddress (%s)\n", inet_ntoa(pSockAddr->sin_addr )) ); + IBSP_PRINT( TRACE_LEVEL_INFORMATION, flags,("\tAddressFamily (0x%x)\n", pSockAddr->sin_family) ); + IBSP_PRINT( TRACE_LEVEL_INFORMATION, flags,("\tPortNumber (0x%x)\n", pSockAddr->sin_port) ); + IBSP_PRINT( TRACE_LEVEL_INFORMATION, flags,("\tIPAddress (%s)\n", inet_ntoa(pSockAddr->sin_addr )) ); } void debug_dump_buffer( - uint32_t level, + uint32_t flags, const char *name, void *buf, size_t len ) @@ -128,36 +123,35 @@ debug_dump_buffer( s = str; *s = 0; - CL_PRINT( level, gdbg_lvl, ("HEX for %s:\n", name) ); + IBSP_PRINT( TRACE_LEVEL_VERBOSE, flags,("HEX for %s:\n", name) ); for( i = 0; i < len; i++ ) { s += sprintf( s, "%02x ", p[i] ); if( i % 16 == 15 ) { - CL_PRINT( level, gdbg_lvl, ("HEX:%s: %s\n", name, str) ); + IBSP_PRINT( TRACE_LEVEL_VERBOSE, flags, ("HEX:%s: %s\n", name, str) ); s = str; *s = 0; } } - CL_PRINT( level, gdbg_lvl, ("HEX:%s: %s\n", name, str) ); + IBSP_PRINT( TRACE_LEVEL_VERBOSE, flags, ("HEX:%s: %s\n", name, str) ); } void debug_dump_overlapped( - uint32_t level, - uint32_t mask, + uint32_t flags, const char *name, LPWSAOVERLAPPED lpOverlapped ) { - CL_PRINT( level, mask, ("dumping OVERLAPPED %s:\n", name) ); - CL_PRINT( level, mask, (" lpOverlapped = %p\n", lpOverlapped) ); - CL_PRINT( level, mask, (" Internal = %x\n", lpOverlapped->Internal) ); - CL_PRINT( level, mask, (" InternalHigh = %d\n", lpOverlapped->InternalHigh) ); - CL_PRINT( level, mask, (" Offset = %d\n", lpOverlapped->Offset) ); - CL_PRINT( level, mask, (" OffsetHigh = %d %\n", lpOverlapped->OffsetHigh) ); - CL_PRINT( level, mask, (" hEvent = %x\n", (uintptr_t) lpOverlapped->hEvent) ); + IBSP_PRINT( TRACE_LEVEL_INFORMATION, flags, ("dumping OVERLAPPED %s:\n", name) ); + IBSP_PRINT( TRACE_LEVEL_INFORMATION, flags, (" lpOverlapped = %p\n", lpOverlapped) ); + IBSP_PRINT( TRACE_LEVEL_INFORMATION, flags, (" Internal = %x\n", lpOverlapped->Internal) ); + IBSP_PRINT( TRACE_LEVEL_INFORMATION, flags, (" InternalHigh = %d\n", lpOverlapped->InternalHigh) ); + IBSP_PRINT( TRACE_LEVEL_INFORMATION, flags, (" Offset = %d\n", lpOverlapped->Offset) ); + IBSP_PRINT( TRACE_LEVEL_INFORMATION, flags, (" OffsetHigh = %d %\n", lpOverlapped->OffsetHigh) ); + IBSP_PRINT( TRACE_LEVEL_INFORMATION, flags, (" hEvent = %x\n", (uintptr_t) lpOverlapped->hEvent) ); } #endif /* _DEBUG_ */ diff --git a/trunk/ulp/wsd/user/ibspdebug.h b/trunk/ulp/wsd/user/ibspdebug.h index cd5aa6e1..98d95a1a 100644 --- a/trunk/ulp/wsd/user/ibspdebug.h +++ b/trunk/ulp/wsd/user/ibspdebug.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2005 SilverStorm Technologies. All rights reserved. + * Copyright (c) 2006 Mellanox Technologies. All rights reserved. * * This software is available to you under the OpenIB.org BSD license * below: @@ -35,48 +36,131 @@ #include "ibspdll.h" #include +#include +#ifndef __MODULE__ +#define __MODULE__ "[IBSP]" +#endif -extern uint32_t gdbg_lvl; -#define IBSP_DBG_DLL 0x00000001 /* DLL */ -#define IBSP_DBG_SI 0x00000002 /* socket info */ -#define IBSP_DBG_INIT 0x00000004 /* initialization code */ -#define IBSP_DBG_WQ 0x00000008 /* WQ related functions */ -#define IBSP_DBG_EP 0x00000010 /* Enpoints related functions */ -#define IBSP_DBG_MEM 0x00000020 /* memory registration */ -#define IBSP_DBG_CM 0x00000040 /* CM */ -#define IBSP_DBG_CONN 0x00000080 /* connections */ + +extern uint32_t g_ibsp_dbg_level; +extern uint32_t g_ibsp_dbg_flags; + +#if defined(EVENT_TRACING) +// +// Software Tracing Definitions +// + + +#define WPP_CONTROL_GUIDS \ + WPP_DEFINE_CONTROL_GUID(IBSPCtlGuid,(156A98A5,8FDC,4d00,A673,0638123DF336), \ + WPP_DEFINE_BIT( IBSP_DBG_ERROR) \ + WPP_DEFINE_BIT( IBSP_DBG_DLL) \ + WPP_DEFINE_BIT( IBSP_DBG_SI) \ + WPP_DEFINE_BIT( IBSP_DBG_INIT) \ + WPP_DEFINE_BIT( IBSP_DBG_WQ) \ + WPP_DEFINE_BIT( IBSP_DBG_EP) \ + WPP_DEFINE_BIT( IBSP_DBG_MEM) \ + WPP_DEFINE_BIT( IBSP_DBG_CM) \ + WPP_DEFINE_BIT( IBSP_DBG_CONN) \ + WPP_DEFINE_BIT( IBSP_DBG_OPT) \ + WPP_DEFINE_BIT( IBSP_DBG_NEV) \ + WPP_DEFINE_BIT( IBSP_DBG_HW) \ + WPP_DEFINE_BIT( IBSP_DBG_IO) \ + WPP_DEFINE_BIT( IBSP_DBG_DUP) \ + WPP_DEFINE_BIT( IBSP_DBG_PERFMON)) + + + +#define WPP_LEVEL_FLAGS_ENABLED(lvl, flags) (WPP_LEVEL_ENABLED(flags) && WPP_CONTROL(WPP_BIT_ ## flags).Level >= lvl) +#define WPP_LEVEL_FLAGS_LOGGER(lvl,flags) WPP_LEVEL_LOGGER(flags) +#define WPP_FLAG_ENABLED(flags)(WPP_LEVEL_ENABLED(flags) && WPP_CONTROL(WPP_BIT_ ## flags).Level >= TRACE_LEVEL_VERBOSE) +#define WPP_FLAG_LOGGER(flags) WPP_LEVEL_LOGGER(flags) + + +// begin_wpp config +// IBSP_ENTER( FLAG ); +// IBSP_EXIT( FLAG ); +// USEPREFIX(IBSP_PRINT, "%!STDPREFIX! %!FUNC!() :"); +// USEPREFIX(IBSP_PRINT_EXIT, "%!STDPREFIX! %!FUNC!() :"); +// USEPREFIX(IBSP_ERROR, "%!STDPREFIX! %!FUNC!() :ERR***"); +// USEPREFIX(IBSP_ERROR_EXIT, "%!STDPREFIX! %!FUNC!() :ERR***"); +// USESUFFIX(IBSP_ENTER, " %!FUNC!():["); +// USESUFFIX(IBSP_EXIT, " %!FUNC!():]"); +// end_wpp + + + +#define STAT_INC(name) +#define STAT_DEC(name) +#define BREAKPOINT(x) +#define DebugPrintIBSPIoctlParams(a,b,c,d,e,f,g,h,i) +#define DebugPrintSockAddr(a,b) +#define fzprint(a) +#define STATS(expr) + +#else + +#include +#include + +/* + * Debug macros + */ + + + +#define IBSP_DBG_ERR 0x00000001 /* error */ +#define IBSP_DBG_DLL 0x00000002 /* DLL */ +#define IBSP_DBG_SI 0x00000004 /* socket info */ +#define IBSP_DBG_INIT 0x00000008 /* initialization code */ +#define IBSP_DBG_WQ 0x00000010 /* WQ related functions */ +#define IBSP_DBG_EP 0x00000020 /* Enpoints related functions */ +#define IBSP_DBG_MEM 0x00000040 /* memory registration */ +#define IBSP_DBG_CM 0x00000080 /* CM */ +#define IBSP_DBG_CONN 0x00000100 /* connections */ #define IBSP_DBG_OPT 0x00000200 /* socket options */ #define IBSP_DBG_NEV 0x00000400 /* network events */ -#define IBSP_DBG_HW 0x00000800 /* Hardware */ +#define IBSP_DBG_HW 0x00000800 /* Hardware */ #define IBSP_DBG_IO 0x00001000 /* Overlapped I/O request */ #define IBSP_DBG_DUP 0x00002000 /* Socket Duplication */ #define IBSP_DBG_PERFMON 0x00004000 /* Performance Monitoring */ -#define IBSP_DBG_LEVEL4 0x01000000 /* debug use */ -#define IBSP_DBG_LEVEL3 0x02000000 /* debug use */ -#define IBSP_DBG_LEVEL2 0x04000000 /* debug use */ -#define IBSP_DBG_LEVEL1 0x08000000 /* debug use */ -#define IBSP_DBG_FUNC 0x20000000 /* Function enter/exit */ -#define IBSP_DBG_WARN 0x40000000 /* Warnings */ - -#define CL_ERROR(a, b, c) CL_TRACE((a|CL_DBG_ERROR), b, c) -#define CL_EXIT_ERROR(a, b, c) CL_TRACE_EXIT((a|CL_DBG_ERROR), b, c) - -#define IBSP_ERROR( m ) CL_TRACE( CL_DBG_ERROR, gdbg_lvl, m ) -#define IBSP_ERROR_EXIT( m ) CL_TRACE_EXIT( CL_DBG_ERROR, gdbg_lvl, m ) -#define IBSP_TRACE( l, m ) CL_TRACE( (l), gdbg_lvl, m ) -#define IBSP_TRACE1( l, m ) CL_TRACE( (l | IBSP_DBG_LEVEL1), gdbg_lvl, m ) -#define IBSP_TRACE2( l, m ) CL_TRACE( (l | IBSP_DBG_LEVEL2), gdbg_lvl, m ) -#define IBSP_TRACE3( l, m ) CL_TRACE( (l | IBSP_DBG_LEVEL3), gdbg_lvl, m ) -#define IBSP_TRACE4( l, m ) CL_TRACE( (l | IBSP_DBG_LEVEL4), gdbg_lvl, m ) -#define IBSP_TRACE_EXIT( l, m ) CL_TRACE_EXIT( (l | IBSP_DBG_FUNC), gdbg_lvl, m ) -#define IBSP_ENTER( l ) CL_ENTER( (l | IBSP_DBG_FUNC), gdbg_lvl ) -#define IBSP_EXIT( l ) CL_EXIT( (l | IBSP_DBG_FUNC), gdbg_lvl ) - -#if defined _DEBUG_ +#define IBSP_DBG_ERROR (CL_DBG_ERROR | IBSP_DBG_ERR) + + + +#if DBG + +// assignment of _level_ is need to to overcome warning C4127 +#define IBSP_PRINT( _level_,_flag_,_msg_) \ + { \ + if( g_ibsp_dbg_level >= (_level_) ) \ + CL_TRACE( _flag_, g_ibsp_dbg_flags, _msg_ ); \ + } + + +#define IBSP_PRINT_EXIT( _level_,_flag_,_msg_) \ + { \ + if( g_ibsp_dbg_level >= (_level_) ) \ + CL_TRACE( _flag_, g_ibsp_dbg_flags, _msg_ );\ + IBSP_EXIT( _flag_ );\ + } + +#define IBSP_ENTER( _flag_) \ + { \ + if( g_ibsp_dbg_level >= TRACE_LEVEL_VERBOSE ) \ + CL_ENTER( _flag_, g_ibsp_dbg_flags ); \ + } + +#define IBSP_EXIT( _flag_)\ + { \ + if( g_ibsp_dbg_level >= TRACE_LEVEL_VERBOSE ) \ + CL_EXIT( _flag_, g_ibsp_dbg_flags ); \ + } + //#define fzprint(a) CL_PRINT(IBSP_DBG_USER, IBSP_DBG_USER, a) #define fzprint(a) @@ -84,8 +168,7 @@ extern uint32_t gdbg_lvl; //#define BREAKPOINT(x) if( gCurrentDebugLevel & x ) { DebugBreak(); } void DebugPrintIBSPIoctlParams( - uint32_t level, - uint32_t mask, + uint32_t flags, DWORD dwIoControlCode, LPVOID lpvInBuffer, DWORD cbInBuffer, @@ -95,23 +178,22 @@ DebugPrintIBSPIoctlParams( LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine, LPWSATHREADID lpThreadId ); + void DebugPrintSockAddr( - uint32_t level, - uint32_t mask, + uint32_t flags, struct sockaddr_in *sockaddr ); void debug_dump_buffer( - uint32_t level, + uint32_t flags, const char *name, void *buf, size_t len ); void debug_dump_overlapped( - uint32_t level, - uint32_t mask, + uint32_t flags, const char *name, LPWSAOVERLAPPED lpOverlapped ); @@ -126,15 +208,23 @@ debug_dump_overlapped( #else -#define STAT_INC(name) -#define STAT_DEC(name) -#define BREAKPOINT(x) -#define DebugPrintIBSPIoctlParams(a,b,c,d,e,f,g,h,i,j) -#define DebugPrintSockAddr(a,b,c) + +#define IBSP_PRINT( _level_,_flag_,_msg_) +#define IBSP_PRINT_EXIT( _level_,_flag_,_msg_) +#define IBSP_ENTER( _flag_) +#define IBSP_EXIT( _flag_) #define fzprint(a) -#define STATS(expr) +#endif /* DBG */ + + +#define IBSP_ERROR( _msg_) \ + IBSP_PRINT( TRACE_LEVEL_ERROR, IBSP_DBG_ERROR, _msg_) + +#define IBSP_ERROR_EXIT( _msg_) \ + IBSP_PRINT_EXIT( TRACE_LEVEL_ERROR, IBSP_DBG_ERROR, _msg_) + -#endif /* _DEBUG_ */ +#endif /* EVENT_TRACING */ /* * To enable logging of all Send/Receive data for each socket diff --git a/trunk/ulp/wsd/user/ibspdll.c b/trunk/ulp/wsd/user/ibspdll.c index def0ea6d..e29b0cce 100644 --- a/trunk/ulp/wsd/user/ibspdll.c +++ b/trunk/ulp/wsd/user/ibspdll.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2005 SilverStorm Technologies. All rights reserved. + * Copyright (c) 2006 Mellanox Technologies. All rights reserved. * * This software is available to you under the OpenIB.org BSD license * below: @@ -28,6 +29,13 @@ * * $Id$ */ + +#include "ibspdebug.h" +#if defined(EVENT_TRACING) +#include "ibspdll.tmh" +#endif + + #include #include #include "ibspdll.h" @@ -60,6 +68,8 @@ uint8_t g_pkt_life_modifier = 0; uint8_t g_qp_retries = QP_ATTRIB_RETRY_COUNT; DWORD_PTR g_dwPollThreadAffinityMask = 0; +uint32_t g_ibsp_dbg_level = TRACE_LEVEL_ERROR; +uint32_t g_ibsp_dbg_flags = 0x1; /* * Function: DllMain @@ -103,18 +113,46 @@ _DllMain( switch( dwReason ) { case DLL_PROCESS_ATTACH: - IBSP_TRACE( IBSP_DBG_DLL, ("DllMain: DLL_PROCESS_ATTACH\n") ); -#ifdef _DEBUG_ - i = GetEnvironmentVariable( "IBWSD_DBG", env_var, sizeof(env_var) ); + +#if defined(EVENT_TRACING) +#if DBG + WPP_INIT_TRACING(L"ibspdll.dll"); +#else + WPP_INIT_TRACING(L"ibspdll.dll"); +#endif +#endif + + + + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_DLL, ("DllMain: DLL_PROCESS_ATTACH\n") ); + + +#if !defined(EVENT_TRACING) +#if DBG + + i = GetEnvironmentVariable( "IBWSD_DBG_LEVEL", env_var, sizeof(env_var) ); if( i && i <= 16 ) { - gdbg_lvl = _tcstoul( env_var, NULL, 16 ); - IBSP_TRACE( IBSP_DBG_DLL, - ("Given IBWSD_DBG debug level:0x%X\n", - gdbg_lvl) ); + g_ibsp_dbg_level = _tcstoul( env_var, NULL, 16 ); } + + i = GetEnvironmentVariable( "IBWSD_DBG_FLAGS", env_var, sizeof(env_var) ); + if( i && i <= 16 ) + { + g_ibsp_dbg_flags = _tcstoul( env_var, NULL, 16 ); + } + + if( g_ibsp_dbg_flags & IBSP_DBG_ERR ) + g_ibsp_dbg_flags |= CL_DBG_ERROR; + + IBSP_PRINT(TRACE_LEVEL_INFORMATION ,IBSP_DBG_DLL , + ("Given IBAL_UAL_DBG debug level:%d debug flags 0x%x\n", + g_ibsp_dbg_level ,g_ibsp_dbg_flags) ); + #endif +#endif + /* See if the user wants to disable RDMA reads. */ no_read = GetEnvironmentVariable( "IBWSD_NO_READ", NULL, 0 ); @@ -135,6 +173,9 @@ _DllMain( DWORD_PTR xx; BOOL ret = GetProcessAffinityMask(GetCurrentProcess(), &g_dwPollThreadAffinityMask, &xx); CL_ASSERT(ret != 0); + if (ret == 0) { + IBSP_ERROR( ("GetProcessAffinityMask Failed (not a fatal error)\n") ); + } ret = ret; } @@ -185,15 +226,15 @@ _DllMain( break; case DLL_THREAD_ATTACH: - IBSP_TRACE( IBSP_DBG_DLL, ("DllMain: DLL_THREAD_ATTACH\n") ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_DLL, ("DllMain: DLL_THREAD_ATTACH\n") ); break; case DLL_THREAD_DETACH: - IBSP_TRACE( IBSP_DBG_DLL, ("DllMain: DLL_THREAD_DETACH\n") ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_DLL, ("DllMain: DLL_THREAD_DETACH\n") ); break; case DLL_PROCESS_DETACH: - IBSP_TRACE( IBSP_DBG_DLL, ("DllMain: DLL_PROCESS_DETACH\n") ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_DLL, ("DllMain: DLL_PROCESS_DETACH\n") ); #ifdef _DEBUG_ { @@ -217,12 +258,12 @@ _DllMain( cl_spinlock_release( &g_ibsp.socket_info_mutex ); IBSP_ERROR( ("Statistics:\n") ); - IBSP_ERROR( - (" overlap_h0_count = %d\n", g_ibsp.overlap_h0_count) ); - IBSP_ERROR( - (" max_comp_count = %d\n", g_ibsp.max_comp_count) ); - IBSP_ERROR( - (" overlap_h1_count = %d\n", g_ibsp.overlap_h1_count) ); + IBSP_ERROR( ( + " overlap_h0_count = %d\n", g_ibsp.overlap_h0_count) ); + IBSP_ERROR( ( + " max_comp_count = %d\n", g_ibsp.max_comp_count) ); + IBSP_ERROR( ( + " overlap_h1_count = %d\n", g_ibsp.overlap_h1_count) ); IBSP_ERROR( (" send_count = %d\n", g_ibsp.send_count) ); @@ -232,27 +273,27 @@ _DllMain( IBSP_ERROR( (" total_recv_compleated = %d\n", g_ibsp.total_recv_compleated) ); - IBSP_ERROR( - (" number of QPs left = %d\n", g_ibsp.qp_num) ); - IBSP_ERROR( - (" number of CQs left = %d\n", g_ibsp.cq_num) ); - IBSP_ERROR( - (" number of PDs left = %d\n", g_ibsp.pd_num) ); - IBSP_ERROR( - (" number of ALs left = %d\n", g_ibsp.al_num) ); - IBSP_ERROR( - (" number of MRs left = %d\n", g_ibsp.mr_num) ); - IBSP_ERROR( - (" number of listens left = %d\n", g_ibsp.listen_num) ); - IBSP_ERROR( - (" number of PNPs left = %d\n", g_ibsp.pnp_num) ); - IBSP_ERROR( - (" number of threads left = %d\n", g_ibsp.thread_num) ); - IBSP_ERROR( - (" number of WPU sockets left = %d\n", g_ibsp.wpusocket_num) ); - - IBSP_ERROR( - (" CloseSocket_count = %d\n", g_ibsp.CloseSocket_count) ); + IBSP_ERROR( ( + " number of QPs left = %d\n", g_ibsp.qp_num) ); + IBSP_ERROR( ( + " number of CQs left = %d\n", g_ibsp.cq_num) ); + IBSP_ERROR( ( + " number of PDs left = %d\n", g_ibsp.pd_num) ); + IBSP_ERROR( ( + " number of ALs left = %d\n", g_ibsp.al_num) ); + IBSP_ERROR( ( + " number of MRs left = %d\n", g_ibsp.mr_num) ); + IBSP_ERROR( ( + " number of listens left = %d\n", g_ibsp.listen_num) ); + IBSP_ERROR( ( + " number of PNPs left = %d\n", g_ibsp.pnp_num) ); + IBSP_ERROR( ( + " number of threads left = %d\n", g_ibsp.thread_num) ); + IBSP_ERROR( ( + " number of WPU sockets left = %d\n", g_ibsp.wpusocket_num) ); + + IBSP_ERROR( ( + " CloseSocket_count = %d\n", g_ibsp.CloseSocket_count) ); } #endif @@ -260,6 +301,11 @@ _DllMain( #ifdef PERFMON_ENABLED IBSPPmClose(); #endif + + +#if defined(EVENT_TRACING) + WPP_CLEANUP(); +#endif break; } @@ -347,9 +393,9 @@ accept_socket( /* Copy the socket context info from parent socket context */ new_socket_info->socket_options = p_socket->socket_options; - IBSP_TRACE( IBSP_DBG_CONN, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_CONN, ("The socket address of connecting entity is\n") ); - DebugPrintSockAddr( IBSP_DBG_CONN, gdbg_lvl, &p_incoming->params.source ); + DebugPrintSockAddr( IBSP_DBG_CONN, &p_incoming->params.source ); new_socket_info->peer_addr = p_incoming->params.source; @@ -393,7 +439,7 @@ accept_socket( cl_spinlock_release( &new_socket_info->mutex ); - IBSP_TRACE_EXIT( IBSP_DBG_CONN, + IBSP_PRINT_EXIT(TRACE_LEVEL_INFORMATION, IBSP_DBG_CONN, ("returns new socket (0x%p)\n", new_socket_info) ); return (SOCKET)new_socket_info; } @@ -464,7 +510,7 @@ IBSPAccept( return INVALID_SOCKET; } - IBSP_TRACE( IBSP_DBG_CONN, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_CONN, ("IBSPAccept: Found pending connection on this socket\n") ); incoming = PARENT_STRUCT(cl_qlist_remove_head( &socket_info->listen.list ), @@ -485,8 +531,7 @@ IBSPAccept( port = get_port_from_ip_address( incoming->params.dest.sin_addr ); if( !port ) { - IBSP_ERROR( - ("incoming destination IP address not local (%s)\n", + IBSP_ERROR( ("incoming destination IP address not local (%s)\n", inet_ntoa( incoming->params.dest.sin_addr )) ); goto reject; } @@ -495,8 +540,8 @@ IBSPAccept( /* Cross-check with the path info to make sure we are conectiong correctly */ if( port->guid != ib_gid_get_guid( &incoming->cm_req_received.primary_path.sgid ) ) { - IBSP_ERROR( - ("GUIDs of port for destination IP address and primary path do not match (%016I64x, %016I64x)\n", + IBSP_ERROR( ( + "GUIDs of port for destination IP address and primary path do not match (%016I64x, %016I64x)\n", port->guid, ib_gid_get_guid( &incoming->cm_req_received.primary_path.sgid )) ); @@ -521,7 +566,7 @@ reject: callee_id.buf = (char *)&incoming->params.dest; callee_id.len = sizeof(incoming->params.dest); - IBSP_TRACE( IBSP_DBG_CONN, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_CONN, ("Got incoming conn from %s/%d-%d to %s/%d-%d\n", inet_ntoa( incoming->params.source.sin_addr ), cl_ntoh16( incoming->params.source.sin_port ), @@ -536,12 +581,11 @@ reject: { default: /* Should never happen */ - IBSP_ERROR( - ("Conditional routine returned undocumented code\n") ); + IBSP_ERROR( ("Conditional routine returned undocumented code\n") ); /* Fall through. */ case CF_REJECT: - IBSP_TRACE1( IBSP_DBG_CONN, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_CONN, ("Conditional routine returned CF_REJECT\n") ); ib_reject( incoming->cm_req_received.h_cm_req, IB_REJ_USER_DEFINED ); @@ -563,7 +607,7 @@ reject: cl_qlist_insert_head( &socket_info->listen.list, &incoming->item ); cl_spinlock_release( &socket_info->mutex ); - IBSP_TRACE1( IBSP_DBG_CONN, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_CONN, ("Conditional routine returned CF_DEFER\n") ); *lpErrno = WSATRY_AGAIN; @@ -612,16 +656,15 @@ IBSPBind( fzprint(("%s():%d:0x%x:0x%x: socket=0x%p \n", __FUNCTION__, __LINE__, GetCurrentProcessId(), GetCurrentThreadId(), s)); - IBSP_TRACE( IBSP_DBG_CONN, ("Address to bind to:\n") ); - DebugPrintSockAddr( IBSP_DBG_CONN, gdbg_lvl, addr ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_CONN, ("Address to bind to:\n") ); + DebugPrintSockAddr( IBSP_DBG_CONN, addr ); fzprint(("binding to IP %s\n", inet_ntoa( addr->sin_addr ))); /* Sanity checks */ if( namelen != sizeof(struct sockaddr_in) ) { - IBSP_ERROR( - ("invalid namelen (%d instead of %d)\n", + IBSP_ERROR( ("invalid namelen (%d instead of %d)\n", namelen, sizeof(struct sockaddr_in)) ); *lpErrno = WSAEFAULT; goto error; @@ -640,8 +683,8 @@ IBSPBind( port = get_port_from_ip_address( addr->sin_addr ); if( port == NULL ) { - IBSP_ERROR( - ("This IP address does not belong to that host (%08x)\n", + IBSP_ERROR( ( + "This IP address does not belong to that host (%08x)\n", addr->sin_addr.S_un.S_addr) ); *lpErrno = WSAEADDRNOTAVAIL; goto error; @@ -660,8 +703,8 @@ IBSPBind( if( socket_info->socket_state != IBSP_CREATE ) { cl_spinlock_release( &socket_info->mutex ); - IBSP_ERROR( - ("Invalid socket state (%s)\n", + IBSP_ERROR( ( + "Invalid socket state (%s)\n", IBSP_SOCKET_STATE_STR( socket_info->socket_state )) ); *lpErrno = WSAEINVAL; goto error; @@ -694,7 +737,7 @@ IBSPBind( error: CL_ASSERT( *lpErrno != 0 ); - IBSP_TRACE_EXIT( IBSP_DBG_CONN, ("failed with error %d\n", *lpErrno) ); + IBSP_PRINT_EXIT(TRACE_LEVEL_INFORMATION, IBSP_DBG_CONN, ("failed with error %d\n", *lpErrno) ); return SOCKET_ERROR; } @@ -721,7 +764,7 @@ IBSPCloseSocket( if( s == INVALID_SOCKET ) { - IBSP_ERROR_EXIT( ("invalid socket handle %x\n", s) ); + IBSP_ERROR_EXIT( ("invalid socket handle %Ix\n", s) ); *lpErrno = WSAENOTSOCK; return SOCKET_ERROR; } @@ -771,7 +814,7 @@ IBSPConnect( __LINE__, GetCurrentProcessId(), GetCurrentThreadId(), s, IBSP_SOCKET_STATE_STR( socket_info->socket_state ))); - IBSP_TRACE( IBSP_DBG_CONN, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_CONN, ("lpCallerData=%p, lpCalleeData=%p\n", lpCallerData, lpCalleeData) ); /* Sanity checks */ @@ -785,8 +828,8 @@ IBSPConnect( if( namelen < sizeof(struct sockaddr_in) ) { - IBSP_ERROR_EXIT( - ("invalid remote address (%d)\n", socket_info->socket_state) ); + IBSP_ERROR_EXIT( ( + "invalid remote address (%d)\n", socket_info->socket_state) ); *lpErrno = WSAEFAULT; return SOCKET_ERROR; } @@ -795,8 +838,7 @@ IBSPConnect( if( addr->sin_family != AF_INET || addr->sin_port == 0 || addr->sin_addr.s_addr == INADDR_ANY ) { - IBSP_ERROR_EXIT( - ("peer entity address is invalid (%d, %d, %x)\n", + IBSP_ERROR_EXIT( ("peer entity address is invalid (%d, %d, %x)\n", addr->sin_family, addr->sin_port, addr->sin_addr.s_addr) ); *lpErrno = WSAEADDRNOTAVAIL; return SOCKET_ERROR; @@ -805,7 +847,7 @@ IBSPConnect( if( socket_info->local_addr.sin_addr.S_un.S_addr == addr->sin_addr.S_un.S_addr ) { /* Loopback - let the regular stack take care of that. */ - IBSP_TRACE_EXIT( IBSP_DBG_CONN | IBSP_DBG_LEVEL1, ("Loopback!\n") ); + IBSP_PRINT_EXIT(TRACE_LEVEL_INFORMATION, IBSP_DBG_CONN, ("Loopback!\n") ); *lpErrno = WSAEADDRNOTAVAIL; return SOCKET_ERROR; } @@ -814,19 +856,18 @@ IBSPConnect( ret = query_guid_address( socket_info->port, addr->sin_addr.s_addr, &dest_port_guid ); if( ret ) { - IBSP_ERROR_EXIT( - ("query_guid_address failed for IP %08x\n", + IBSP_ERROR_EXIT( ("query_guid_address failed for IP %08x\n", addr->sin_addr.s_addr) ); *lpErrno = g_connect_err; return SOCKET_ERROR; } - IBSP_TRACE( IBSP_DBG_CONN, ("got GUID %I64x for IP %s\n", + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_CONN, ("got GUID %I64x for IP %s\n", CL_NTOH64( dest_port_guid ), inet_ntoa( addr->sin_addr )) ); if( dest_port_guid == socket_info->port->guid ) { - IBSP_TRACE_EXIT( IBSP_DBG_CONN | IBSP_DBG_LEVEL1, ("Loopback!\n") ); + IBSP_PRINT_EXIT(TRACE_LEVEL_INFORMATION, IBSP_DBG_CONN, ("Loopback!\n") ); *lpErrno = WSAEADDRNOTAVAIL; return SOCKET_ERROR; } @@ -835,8 +876,8 @@ IBSPConnect( ret = query_pr( socket_info->port, dest_port_guid, &path_rec ); if( ret ) { - IBSP_ERROR_EXIT( - ("query_pr failed for IP %08x\n", addr->sin_addr.s_addr) ); + IBSP_ERROR_EXIT( ( + "query_pr failed for IP %08x\n", addr->sin_addr.s_addr) ); *lpErrno = g_connect_err; return SOCKET_ERROR; } @@ -925,7 +966,7 @@ IBSPEnumNetworkEvents( if( lpNetworkEvents->lNetworkEvents & FD_ACCEPT ) { - IBSP_TRACE1( IBSP_DBG_NEV, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_NEV, ("socket %p notify FD_ACCEPT at time %I64d\n", socket_info, cl_get_time_stamp()) ); lpNetworkEvents->iErrorCode[FD_ACCEPT_BIT] = 0; @@ -933,7 +974,7 @@ IBSPEnumNetworkEvents( if( lpNetworkEvents->lNetworkEvents & FD_CONNECT ) { - IBSP_TRACE1( IBSP_DBG_NEV, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_NEV, ("socket %p notify FD_CONNECT %d at time %I64d\n", socket_info, socket_info->errno_connect, cl_get_time_stamp()) ); lpNetworkEvents->iErrorCode[FD_CONNECT_BIT] = socket_info->errno_connect; @@ -963,13 +1004,13 @@ IBSPEventSelect( IBSP_ENTER( IBSP_DBG_NEV ); - IBSP_TRACE4( IBSP_DBG_NEV, - ("Socket %p requesting notifiction of %d on event %p.\n", - s, lNetworkEvents, hEventObject) ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_NEV, + ("Socket %Ix requesting notifiction of %d on event %p.\n", + s, lNetworkEvents, hEventObject)); if( (lNetworkEvents & ~(FD_ACCEPT | FD_CONNECT)) != 0 ) { - IBSP_TRACE_EXIT(IBSP_DBG_NEV, + IBSP_PRINT_EXIT(TRACE_LEVEL_INFORMATION,IBSP_DBG_NEV, ("Unknown lNetworkEvents flag given (%x)\n", lNetworkEvents) ); *lpErrno = WSAEINVAL; return SOCKET_ERROR; @@ -984,7 +1025,7 @@ IBSPEventSelect( /* Check for existing events and signal as appropriate. */ if( (socket_info->event_mask & events) && hEventObject ) { - IBSP_TRACE2( IBSP_DBG_NEV, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_NEV, ("Signaling eventHandle %p .\n", socket_info->event_select) ); SetEvent( hEventObject ); } @@ -1030,7 +1071,7 @@ IBSPGetOverlappedResult( { /* Seen in real life with overlap/client test. * The switch closes a socket then calls this. Why? */ - IBSP_ERROR_EXIT( ("invalid socket handle %x\n", s) ); + IBSP_ERROR_EXIT( ("invalid socket handle %Ix\n", s) ); *lpErrno = WSAENOTSOCK; return SOCKET_ERROR; } @@ -1061,16 +1102,16 @@ IBSPGetOverlappedResult( fzprint(("%s():%d:0x%x:0x%x: socket=0x%p completed overlap=0x%x overlap_h0_count=%d overlap_h1_count=%d\n", __FUNCTION__, __LINE__, GetCurrentProcessId(), GetCurrentThreadId(), s, lpOverlapped, g_ibsp.overlap_h0_count, g_ibsp.overlap_h1_count)); #endif - IBSP_TRACE1( IBSP_DBG_IO, - ("socket=%p completed ov=%p\n", s, lpOverlapped) ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_IO, + ("socket=%p completed ov=%p\n", (void*)s, lpOverlapped)); } else { /* Operation is still in progress */ *lpErrno = WSA_IO_INCOMPLETE; - IBSP_TRACE1( IBSP_DBG_IO, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_IO, ("socket=%p ov=%p hEvent=%p, operation in progress\n", - s, lpOverlapped, lpOverlapped->hEvent)); + (void*)s, lpOverlapped, lpOverlapped->hEvent)); } *lpcbTransfer = (DWORD)lpOverlapped->InternalHigh; @@ -1120,8 +1161,7 @@ IBSPGetSockOpt( if( optval == NULL || optlen == NULL ) { - IBSP_ERROR_EXIT( - ("invalid optval=%p or optlen=%p", optval, optlen) ); + IBSP_ERROR_EXIT( ("invalid optval=%p or optlen=%p", optval, optlen) ); *lpErrno = WSAEFAULT; return SOCKET_ERROR; } @@ -1129,11 +1169,10 @@ IBSPGetSockOpt( switch( optname ) { case SO_DEBUG: - IBSP_TRACE( IBSP_DBG_OPT, ("Option name SO_DEBUG\n") ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_OPT, ("Option name SO_DEBUG\n") ); if( *optlen < sizeof(BOOL) ) { - IBSP_ERROR_EXIT( - ("option len is invalid (0x%x)\n", *optlen) ); + IBSP_ERROR_EXIT( ("option len is invalid (0x%x)\n", *optlen) ); *optlen = sizeof(BOOL); *lpErrno = WSAEFAULT; return SOCKET_ERROR; @@ -1144,11 +1183,10 @@ IBSPGetSockOpt( break; case SO_GROUP_ID: - IBSP_TRACE( IBSP_DBG_OPT, ("Option name SO_GROUP_ID\n") ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_OPT, ("Option name SO_GROUP_ID\n") ); if( *optlen < sizeof(GROUP) ) { - IBSP_ERROR_EXIT( - ("option len is invalid (0x%x)\n", *optlen) ); + IBSP_ERROR_EXIT( ("option len is invalid (0x%x)\n", *optlen) ); *optlen = sizeof(GROUP); *lpErrno = WSAEFAULT; return SOCKET_ERROR; @@ -1159,12 +1197,11 @@ IBSPGetSockOpt( break; case SO_GROUP_PRIORITY: - IBSP_TRACE( IBSP_DBG_OPT, ("Option name SO_GROUP_PRIORITY\n") ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_OPT, ("Option name SO_GROUP_PRIORITY\n") ); if( *optlen < sizeof(int) ) { - IBSP_ERROR_EXIT( - ("option len is invalid (0x%x)\n", *optlen) ); + IBSP_ERROR_EXIT( ("option len is invalid (0x%x)\n", *optlen) ); *optlen = sizeof(int); *lpErrno = WSAEFAULT; return SOCKET_ERROR; @@ -1175,12 +1212,11 @@ IBSPGetSockOpt( break; case SO_MAX_MSG_SIZE: - IBSP_TRACE( IBSP_DBG_OPT, ("Option name SO_MAX_MSG_SIZE\n") ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_OPT, ("Option name SO_MAX_MSG_SIZE\n") ); if( *optlen < sizeof(unsigned int) ) { - IBSP_ERROR_EXIT( - ("option len is invalid (0x%x)\n", *optlen) ); + IBSP_ERROR_EXIT( ("option len is invalid (0x%x)\n", *optlen) ); *optlen = sizeof(unsigned int); *lpErrno = WSAEFAULT; return SOCKET_ERROR; @@ -1191,12 +1227,11 @@ IBSPGetSockOpt( break; case SO_MAX_RDMA_SIZE: - IBSP_TRACE( IBSP_DBG_OPT, ("Option name SO_MAX_RDMA_SIZE\n") ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_OPT, ("Option name SO_MAX_RDMA_SIZE\n") ); if( *optlen < sizeof(unsigned int) ) { - IBSP_ERROR_EXIT( - ("option len is invalid (0x%x)\n", *optlen) ); + IBSP_ERROR_EXIT( ("option len is invalid (0x%x)\n", *optlen) ); *optlen = sizeof(unsigned int); *lpErrno = WSAEFAULT; return SOCKET_ERROR; @@ -1207,12 +1242,11 @@ IBSPGetSockOpt( break; case SO_RDMA_THRESHOLD_SIZE: - IBSP_TRACE( IBSP_DBG_OPT, ("Option name SO_RDMA_THRESHOLD_SIZE\n") ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_OPT, ("Option name SO_RDMA_THRESHOLD_SIZE\n") ); if( *optlen < sizeof(unsigned int) ) { - IBSP_ERROR_EXIT( - ("option len is invalid (0x%x)\n", *optlen) ); + IBSP_ERROR_EXIT( ("option len is invalid (0x%x)\n", *optlen) ); *optlen = sizeof(unsigned int); *lpErrno = WSAEFAULT; return SOCKET_ERROR; @@ -1307,7 +1341,7 @@ IBSPIoctl( if( dwIoControlCode == SIO_GET_EXTENSION_FUNCTION_POINTER ) { /* This a special case. The socket handle passed is not valid. */ - IBSP_TRACE1( IBSP_DBG_OPT, ("Get extension function pointer\n") ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_OPT, ("Get extension function pointer\n") ); if( memcmp( lpvInBuffer, &SANRegisterMemory, sizeof(GUID) ) == 0 ) { @@ -1338,7 +1372,7 @@ IBSPIoctl( { if( no_read ) { - IBSP_TRACE( IBSP_DBG_WARN | IBSP_DBG_OPT, + IBSP_PRINT(TRACE_LEVEL_WARNING, IBSP_DBG_OPT, ("RDMA_READ disabled.\n") ); *lpErrno = WSAEOPNOTSUPP; return SOCKET_ERROR; @@ -1370,7 +1404,7 @@ IBSPIoctl( /* Verify the state of the socket */ /* Not sure which state socket should be in to receive this call */ - DebugPrintIBSPIoctlParams( IBSP_DBG_OPT, gdbg_lvl, + DebugPrintIBSPIoctlParams( IBSP_DBG_OPT, dwIoControlCode, lpvInBuffer, cbInBuffer, @@ -1385,8 +1419,7 @@ IBSPIoctl( case SIO_SET_GROUP_QOS: /* We don't support that. dwServiceFlags1 in installSP * wasn't set. */ - IBSP_ERROR_EXIT( - ("unsupported dwIoControlCode %d\n", dwIoControlCode) ); + IBSP_ERROR_EXIT( ("unsupported dwIoControlCode %d\n", dwIoControlCode) ); *lpErrno = WSAENOPROTOOPT; return SOCKET_ERROR; break; @@ -1405,8 +1438,7 @@ IBSPIoctl( break; default: - IBSP_ERROR_EXIT( - ("invalid dwIoControlCode %d\n", dwIoControlCode) ); + IBSP_ERROR_EXIT( ("invalid dwIoControlCode %d\n", dwIoControlCode) ); *lpErrno = WSAENOPROTOOPT; return SOCKET_ERROR; @@ -1439,7 +1471,7 @@ IBSPListen( cl_spinlock_acquire( &socket_info->mutex ); - IBSP_TRACE( IBSP_DBG_CONN, ("socket_state is %s\n", + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_CONN, ("socket_state is %s\n", IBSP_SOCKET_STATE_STR( socket_info->socket_state )) ); /* Verify the state of the socket */ @@ -1470,8 +1502,7 @@ IBSPListen( break; default: - IBSP_ERROR( - ("Invalid socket_state (%s)\n", + IBSP_ERROR( ("Invalid socket_state (%s)\n", IBSP_SOCKET_STATE_STR( socket_info->socket_state )) ); ret = WSAEINVAL; break; @@ -1531,8 +1562,8 @@ IBSPRecv( { /* Seen in real life with overlap/client test. * The switch closes a socket then calls this. Why? */ - IBSP_TRACE_EXIT( IBSP_DBG_WARN | IBSP_DBG_IO, - ("invalid socket handle %x\n", s) ); + IBSP_PRINT_EXIT(TRACE_LEVEL_WARNING, IBSP_DBG_IO, + ("invalid socket handle %Ix\n", s) ); *lpErrno = WSAENOTSOCK; return SOCKET_ERROR; } @@ -1546,8 +1577,7 @@ IBSPRecv( default: cl_spinlock_release( &socket_info->mutex ); - IBSP_ERROR_EXIT( - ("Socket is not in connected socket_state state=%s\n", + IBSP_ERROR_EXIT( ("Socket is not in connected socket_state state=%s\n", IBSP_SOCKET_STATE_STR( socket_info->socket_state )) ); *lpErrno = WSAENOTCONN; return SOCKET_ERROR; @@ -1556,8 +1586,7 @@ IBSPRecv( if( socket_info->qp_error != 0 ) { - IBSP_ERROR_EXIT( - ("QP is in error state %d\n", socket_info->qp_error) ); + IBSP_ERROR_EXIT( ("QP is in error state %d\n", socket_info->qp_error) ); *lpErrno = socket_info->qp_error; return SOCKET_ERROR; } @@ -1567,8 +1596,8 @@ IBSPRecv( if( dwBufferCount > QP_ATTRIB_RQ_SGE ) { CL_ASSERT( dwBufferCount <= QP_ATTRIB_RQ_SGE ); - IBSP_ERROR_EXIT( - ("dwBufferCount is greater than %d\n", QP_ATTRIB_RQ_SGE) ); + IBSP_ERROR_EXIT( ("dwBufferCount is greater than %d\n", + QP_ATTRIB_RQ_SGE) ); *lpErrno = WSAEINVAL; return SOCKET_ERROR; } @@ -1672,16 +1701,15 @@ IBSPRecv( socket_info->recv_idx = 0; #endif - IBSP_TRACE1( IBSP_DBG_IO, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_IO, ("Posted RECV: socket=%p, ov=%p, addr=%p, len=%d\n", - s, lpOverlapped, lpBuffers[0].buf, lpBuffers[0].len) ); + (void*)s, lpOverlapped, lpBuffers[0].buf, lpBuffers[0].len)); *lpErrno = WSA_IO_PENDING; } else { - IBSP_ERROR( - ("ib_post_recv returned %s\n", ib_get_err_str( status )) ); + IBSP_ERROR( ("ib_post_recv returned %s\n", ib_get_err_str( status )) ); #ifdef _DEBUG_ if( lpOverlapped->hEvent == 0 ) { @@ -1748,7 +1776,7 @@ IBSPSend( if( s == INVALID_SOCKET ) { - IBSP_ERROR_EXIT( ("invalid socket handle %x\n", s) ); + IBSP_ERROR_EXIT( ("invalid socket handle %Ix\n", s) ); *lpErrno = WSAENOTSOCK; return SOCKET_ERROR; } @@ -1765,8 +1793,7 @@ IBSPSend( default: cl_spinlock_release( &socket_info->mutex ); - IBSP_ERROR_EXIT( - ("Socket is not in connected socket_state state=%s\n", + IBSP_ERROR_EXIT( ("Socket is not in connected socket_state state=%s\n", IBSP_SOCKET_STATE_STR( socket_info->socket_state )) ); *lpErrno = WSAENOTCONN; return SOCKET_ERROR; @@ -1775,8 +1802,7 @@ IBSPSend( if( socket_info->qp_error ) { - IBSP_ERROR_EXIT( - ("QP is in error state %d\n", socket_info->qp_error) ); + IBSP_ERROR_EXIT( ("QP is in error state %d\n", socket_info->qp_error) ); *lpErrno = socket_info->qp_error; return SOCKET_ERROR; } @@ -1785,8 +1811,7 @@ IBSPSend( if( dwBufferCount > QP_ATTRIB_SQ_SGE ) { CL_ASSERT( dwBufferCount <= QP_ATTRIB_SQ_SGE ); - IBSP_ERROR_EXIT( - ("dwBufferCount is greater than %d\n", QP_ATTRIB_SQ_SGE) ); + IBSP_ERROR_EXIT( ("dwBufferCount is greater than %d\n", QP_ATTRIB_SQ_SGE) ); *lpErrno = WSAEINVAL; return SOCKET_ERROR; } @@ -1897,7 +1922,7 @@ IBSPSend( #ifdef _DEBUG_ if( lpBuffers[0].len >= 40 ) { - debug_dump_buffer( IBSP_DBG_WQ | IBSP_DBG_LEVEL4, "SEND", + debug_dump_buffer( IBSP_DBG_WQ , "SEND", lpBuffers[0].buf, 40 ); } #endif @@ -1931,9 +1956,9 @@ IBSPSend( #endif - IBSP_TRACE1( IBSP_DBG_IO, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_IO, ("Posted SEND: socket=%p, ov=%p, addr=%p, len=%d\n", - s, lpOverlapped, lpBuffers[0].buf, lpBuffers[0].len) ); + (void*)s, lpOverlapped, lpBuffers[0].buf, lpBuffers[0].len)); *lpErrno = WSA_IO_PENDING; } @@ -2008,11 +2033,10 @@ IBSPSetSockOpt( switch( optname ) { case SO_DEBUG: - IBSP_TRACE( IBSP_DBG_OPT, ("Option name SO_DEBUG\n") ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_OPT, ("Option name SO_DEBUG\n") ); if( optlen != sizeof(BOOL) ) { - IBSP_ERROR_EXIT( - ("option len is invalid (0x%x)\n", optlen) ); + IBSP_ERROR_EXIT( ("option len is invalid (0x%x)\n", optlen) ); *lpErrno = WSAEFAULT; return SOCKET_ERROR; } @@ -2020,11 +2044,10 @@ IBSPSetSockOpt( break; case SO_GROUP_PRIORITY: - IBSP_TRACE( IBSP_DBG_OPT, ("Option name SO_GROUP_PRIORITY\n") ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_OPT, ("Option name SO_GROUP_PRIORITY\n") ); if( optlen != sizeof(int) ) { - IBSP_ERROR_EXIT( - ("option len is invalid (0x%x)\n", optlen) ); + IBSP_ERROR_EXIT( ("option len is invalid (0x%x)\n", optlen) ); *lpErrno = WSAEFAULT; return SOCKET_ERROR; } @@ -2073,32 +2096,28 @@ IBSPSocket( if( af != AF_INET ) { - IBSP_ERROR_EXIT( - ("bad family %d instead of %d\n", af, AF_INET) ); + IBSP_ERROR_EXIT( ("bad family %d instead of %d\n", af, AF_INET) ); *lpErrno = WSAEAFNOSUPPORT; return INVALID_SOCKET; } if( type != SOCK_STREAM ) { - IBSP_ERROR_EXIT( - ("bad type %d instead of %d\n", type, SOCK_STREAM) ); + IBSP_ERROR_EXIT( ("bad type %d instead of %d\n", type, SOCK_STREAM) ); *lpErrno = WSAEPROTOTYPE; return INVALID_SOCKET; } if( protocol != IPPROTO_TCP ) { - IBSP_ERROR_EXIT( - ("bad protocol %d instead of %d\n", protocol, IPPROTO_TCP) ); + IBSP_ERROR_EXIT( ("bad protocol %d instead of %d\n", protocol, IPPROTO_TCP) ); *lpErrno = WSAEPROTONOSUPPORT; return INVALID_SOCKET; } if( (dwFlags != WSA_FLAG_OVERLAPPED) ) { - IBSP_ERROR_EXIT( - ("dwFlags is not WSA_FLAG_OVERLAPPED (%x)\n", dwFlags) ); + IBSP_ERROR_EXIT( ("dwFlags is not WSA_FLAG_OVERLAPPED (%x)\n", dwFlags) ); *lpErrno = WSAEINVAL; return INVALID_SOCKET; } @@ -2118,8 +2137,7 @@ IBSPSocket( if( *lpErrno ) { deref_socket_info( socket_info ); - IBSP_ERROR( - ("setup_duplicate_socket failed with %d\n", *lpErrno) ); + IBSP_ERROR( ("setup_duplicate_socket failed with %d\n", *lpErrno) ); return INVALID_SOCKET; } } @@ -2142,7 +2160,7 @@ IBSPSocket( fzprint(("%s():%d:0x%x:0x%x: socket=0x%p\n", __FUNCTION__, __LINE__, GetCurrentProcessId(), GetCurrentThreadId(), socket_info)); - IBSP_TRACE_EXIT( IBSP_DBG_SI, + IBSP_PRINT_EXIT(TRACE_LEVEL_INFORMATION, IBSP_DBG_SI, ("returning socket handle %p\n", socket_info) ); return (SOCKET) socket_info; @@ -2179,11 +2197,11 @@ IBSPCleanup( /* Decrement the entry count */ g_ibsp.entry_count--; - IBSP_TRACE( IBSP_DBG_INIT, ("WSPCleanup: %d\n", g_ibsp.entry_count) ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_INIT, ("WSPCleanup: %d\n", g_ibsp.entry_count) ); if( g_ibsp.entry_count == 0 ) { - IBSP_TRACE( IBSP_DBG_INIT, ("entry_count is 0 => cleaning up\n") ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_INIT, ("entry_count is 0 => cleaning up\n") ); ib_release(); #ifdef PERFMON_ENABLED @@ -2223,13 +2241,12 @@ WSPStartupEx( major version and the high byte is the minor version. */ if( (LOBYTE(wVersion) < 2) || ((LOBYTE(wVersion) == 2) && (HIBYTE(wVersion) < 2)) ) { - IBSP_ERROR_EXIT( - ("Invalid winsock version requested %x\n", wVersion) ); + IBSP_ERROR_EXIT( ("Invalid winsock version requested %x\n", wVersion) ); return WSAVERNOTSUPPORTED; } - IBSP_TRACE( IBSP_DBG_INIT, ("entry_count=%d)\n", g_ibsp.entry_count) ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_INIT, ("entry_count=%d)\n", g_ibsp.entry_count) ); cl_spinlock_acquire( &g_ibsp.mutex ); @@ -2279,8 +2296,7 @@ WSPStartupEx( ret = ibsp_initialize(); if( ret ) { - IBSP_ERROR_EXIT( - ("ibsp_initialize failed (%d)\n", ret) ); + IBSP_ERROR_EXIT( ("ibsp_initialize failed (%d)\n", ret) ); return ret; } } diff --git a/trunk/ulp/wsd/user/ibspstruct.h b/trunk/ulp/wsd/user/ibspstruct.h index 76c95500..5d7ae893 100644 --- a/trunk/ulp/wsd/user/ibspstruct.h +++ b/trunk/ulp/wsd/user/ibspstruct.h @@ -36,6 +36,7 @@ #include + enum ibsp_socket_state { IBSP_CREATE = 0, @@ -352,15 +353,9 @@ ibsp_css( /* IBSP_CLOSED is a dead end state */ if( old_state == IBSP_CLOSED ) { - fzprint(("%s():0x%x:0x%x: socket=0x%p cannot change from %s to %s, called by %s():%d\n", __FUNCTION__, GetCurrentProcessId(), GetCurrentThreadId(), s, IBSP_SOCKET_STATE_STR(old_state), IBSP_SOCKET_STATE_STR(new_state), calling_func, line)); return; } - fzprint(("%s():0x%x:0x%x: socket=0x%p %s to %s, called by %s():%d\n", __FUNCTION__, - GetCurrentProcessId(), - GetCurrentThreadId(), s, - IBSP_SOCKET_STATE_STR(old_state), - IBSP_SOCKET_STATE_STR(new_state), calling_func, line)); s->socket_state = new_state; } diff --git a/trunk/ulp/wsd/user/misc.c b/trunk/ulp/wsd/user/misc.c index 2f92f822..5d81bb52 100644 --- a/trunk/ulp/wsd/user/misc.c +++ b/trunk/ulp/wsd/user/misc.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2005 SilverStorm Technologies. All rights reserved. + * Copyright (c) 2006 Mellanox Technologies. All rights reserved. * * This software is available to you under the OpenIB.org BSD license * below: @@ -29,6 +30,14 @@ * $Id$ */ +#include "ibspdebug.h" +#if defined(EVENT_TRACING) +#ifdef offsetof +#undef offsetof +#endif +#include "misc.tmh" +#endif + #include "ibspdll.h" char *ibsp_socket_state_str[IBSP_NUM_STATES] = { @@ -87,8 +96,7 @@ init_globals( void ) g_ibsp.heap = HeapCreate( 0, 128000, 0 ); if( g_ibsp.heap == NULL) { - IBSP_ERROR_EXIT( - ("HeapCreate() failed: %d\n", GetLastError()) ); + IBSP_ERROR_EXIT( ("HeapCreate() failed: %d\n", GetLastError()) ); return 1; } diff --git a/trunk/ulp/wsd/user/sockinfo.c b/trunk/ulp/wsd/user/sockinfo.c index b5af1ac1..1109b01c 100644 --- a/trunk/ulp/wsd/user/sockinfo.c +++ b/trunk/ulp/wsd/user/sockinfo.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2005 SilverStorm Technologies. All rights reserved. + * Copyright (c) 2006 Mellanox Technologies. All rights reserved. * * This software is available to you under the OpenIB.org BSD license * below: @@ -29,6 +30,11 @@ * $Id$ */ +#include "ibspdebug.h" +#if defined(EVENT_TRACING) +#include "sockinfo.tmh" +#endif + #include "ibspdll.h" @@ -54,7 +60,7 @@ create_socket_info( HEAP_ZERO_MEMORY, sizeof(struct ibsp_socket_info) ); if( socket_info == NULL ) { - IBSP_TRACE_EXIT( IBSP_DBG_SI, + IBSP_PRINT_EXIT(TRACE_LEVEL_INFORMATION, IBSP_DBG_SI, ("HeapAlloc() failed: %d\n", GetLastError()) ); *lpErrno = WSAENOBUFS; return NULL; @@ -87,8 +93,7 @@ create_socket_info( if( socket_info->switch_socket == INVALID_SOCKET ) { - IBSP_ERROR( - ("WPUCreateSocketHandle() failed: %d", *lpErrno) ); + IBSP_ERROR( ("WPUCreateSocketHandle() failed: %d", *lpErrno) ); err: free_socket_info( socket_info ); IBSP_EXIT( IBSP_DBG_SI ); @@ -103,8 +108,8 @@ err: */ socket_info->ref_cnt = 1; - IBSP_TRACE( IBSP_DBG_SI, ("socket_info (%p), switch socket (%p)\n", - socket_info, socket_info->switch_socket) ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_SI, ("socket_info (%p), switch socket (%p)\n", + socket_info, (void*)socket_info->switch_socket) ); IBSP_EXIT( IBSP_DBG_SI ); return socket_info; @@ -120,17 +125,20 @@ free_socket_info( if( p_socket->switch_socket != INVALID_SOCKET ) { /* ref_cnt hit zero - destroy the switch socket. */ - IBSP_TRACE1( IBSP_DBG_SI, + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_SI, ("socket=0x%p calling lpWPUCloseSocketHandle=0x%p\n", - p_socket, p_socket->switch_socket) ); + p_socket, (void*)p_socket->switch_socket) ); ret = g_ibsp.up_call_table.lpWPUCloseSocketHandle( p_socket->switch_socket, &error ); if( ret == SOCKET_ERROR ) + { IBSP_ERROR( ("WPUCloseSocketHandle failed: %d\n", error) ); + } else + { STAT_DEC( wpusocket_num ); - + } p_socket->switch_socket = INVALID_SOCKET; } @@ -162,7 +170,7 @@ deref_socket_info( if( !cl_atomic_dec( &p_socket->ref_cnt ) ) { free_socket_info( p_socket ); - IBSP_TRACE( IBSP_DBG_SI, ("Freed socket_info (%p)\n", p_socket) ); + IBSP_PRINT(TRACE_LEVEL_INFORMATION, IBSP_DBG_SI, ("Freed socket_info (%p)\n", p_socket) ); } IBSP_EXIT( IBSP_DBG_SI ); } -- 2.41.0