From: ftillier Date: Thu, 7 Jul 2005 23:39:25 +0000 (+0000) Subject: Cleanup debug output and added missing locking around state checks. X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=274def1c3dff0cdba0cd287213f224c4234e80e0;p=~shefty%2Frdma-win.git Cleanup debug output and added missing locking around state checks. git-svn-id: svn://openib.tc.cornell.edu/gen1@31 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86 --- diff --git a/branches/fab_cm_branch/ulp/wsd/user/ibsp_iblow.c b/branches/fab_cm_branch/ulp/wsd/user/ibsp_iblow.c index 0d7826fe..49073274 100644 --- a/branches/fab_cm_branch/ulp/wsd/user/ibsp_iblow.c +++ b/branches/fab_cm_branch/ulp/wsd/user/ibsp_iblow.c @@ -186,9 +186,9 @@ complete_wq( // cl_spinlock_release( &socket_info->recv_lock ); //} - if( p_recv_wr->ds_array[0].length >= 40 ) + if( wc->status == IB_SUCCESS && p_recv_wr->ds_array[0].length >= 40 ) { - debug_dump_buffer( IBSP_DBG_WQ, gdbg_lvl, "RECV", + debug_dump_buffer( IBSP_DBG_WQ | IBSP_DBG_LEVEL4, "RECV", (void * __ptr64)p_recv_wr->ds_array[0].vaddr, 40 ); } diff --git a/branches/fab_cm_branch/ulp/wsd/user/ibspdebug.c b/branches/fab_cm_branch/ulp/wsd/user/ibspdebug.c index 3dc2d70f..a2e98c00 100644 --- a/branches/fab_cm_branch/ulp/wsd/user/ibspdebug.c +++ b/branches/fab_cm_branch/ulp/wsd/user/ibspdebug.c @@ -116,7 +116,6 @@ DebugPrintSockAddr( void debug_dump_buffer( uint32_t level, - uint32_t mask, const char *name, void *buf, size_t len ) @@ -129,19 +128,19 @@ debug_dump_buffer( s = str; *s = 0; - CL_PRINT( level, mask, ("HEX for %s:\n", name) ); + CL_PRINT( level, gdbg_lvl, ("HEX for %s:\n", name) ); for( i = 0; i < len; i++ ) { s += sprintf( s, "%02x ", p[i] ); if( i % 16 == 15 ) { - CL_PRINT( level, mask, ("HEX:%s: %s\n", name, str) ); + CL_PRINT( level, gdbg_lvl, ("HEX:%s: %s\n", name, str) ); s = str; *s = 0; } } - CL_PRINT( level, mask, ("HEX:%s:%s\n", name, str) ); + CL_PRINT( level, gdbg_lvl, ("HEX:%s: %s\n", name, str) ); } diff --git a/branches/fab_cm_branch/ulp/wsd/user/ibspdebug.h b/branches/fab_cm_branch/ulp/wsd/user/ibspdebug.h index cf711968..7d14e570 100644 --- a/branches/fab_cm_branch/ulp/wsd/user/ibspdebug.h +++ b/branches/fab_cm_branch/ulp/wsd/user/ibspdebug.h @@ -70,31 +70,7 @@ extern uint32_t gdbg_lvl; #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 UNIT_TEST - -#define BREAKPOINT(x) - -#define CL_ERROR(a, b, c) printf c -#define CL_EXIT_ERROR(a, b, c) printf c - -#undef CL_TRACE -#define CL_TRACE(a,b,c) printf c -#undef CL_ENTER -#define CL_ENTER(a,b) printf("Enter %s\n", __FUNCTION__) -#undef CL_EXIT -#define CL_EXIT(a,b) printf("Exit %s\n", __FUNCTION__) -#undef CL_PRINT -#define CL_PRINT(a,b,c) printf c - -#define fzprint(a) - -#define STAT_INC(name) -#define STAT_DEC(name) -#define free_socket_info(a) -#define ib_deregister_all_mr(a) -#define DebugPrintSockAddr(a,b,c) - -#elif defined _DEBUG_ +#if defined _DEBUG_ //#define fzprint(a) CL_PRINT(IBSP_DBG_USER, IBSP_DBG_USER, a) #define fzprint(a) @@ -122,7 +98,6 @@ DebugPrintSockAddr( void debug_dump_buffer( uint32_t level, - uint32_t mask, const char *name, void *buf, size_t len ); diff --git a/branches/fab_cm_branch/ulp/wsd/user/ibspdll.c b/branches/fab_cm_branch/ulp/wsd/user/ibspdll.c index 7890e995..8b7bbffa 100644 --- a/branches/fab_cm_branch/ulp/wsd/user/ibspdll.c +++ b/branches/fab_cm_branch/ulp/wsd/user/ibspdll.c @@ -1363,20 +1363,17 @@ IBSPIoctl( GUID SANRDMARead = WSAID_RDMAREAD; GUID SANMemoryRegistrationCacheCallback = WSAID_MEMORYREGISTRATIONCACHECALLBACK; - CL_ENTER( IBSP_DBG_OPT, gdbg_lvl ); + IBSP_ENTER( IBSP_DBG_OPT ); UNUSED_PARAM( cbInBuffer ); UNUSED_PARAM( lpOverlapped ); UNUSED_PARAM( lpCompletionRoutine ); UNUSED_PARAM( lpThreadId ); - fzprint(("%s():%d:0x%x:0x%x: socket=0x%p overlapped=0x%p\n", __FUNCTION__, - __LINE__, GetCurrentProcessId(), GetCurrentThreadId(), s, lpOverlapped)); - if( dwIoControlCode == SIO_GET_EXTENSION_FUNCTION_POINTER ) { /* This a special case. The socket handle passed is not valid. */ - CL_TRACE( IBSP_DBG_OPT, gdbg_lvl, ("Get extension function pointer\n") ); + IBSP_TRACE1( IBSP_DBG_OPT, ("Get extension function pointer\n") ); if( memcmp( lpvInBuffer, &SANRegisterMemory, sizeof(GUID) ) == 0 ) { @@ -1407,6 +1404,8 @@ IBSPIoctl( { if( no_read ) { + IBSP_TRACE( IBSP_DBG_WARN | IBSP_DBG_OPT, + ("RDMA_READ disabled.\n") ); *lpErrno = WSAEOPNOTSUPP; return SOCKET_ERROR; } @@ -1425,10 +1424,11 @@ IBSPIoctl( } else { - CL_EXIT_ERROR( IBSP_DBG_OPT, gdbg_lvl, ("invalid extension GUID\n") ); + IBSP_ERROR_EXIT( ("invalid extension GUID\n") ); *lpErrno = WSAEINVAL; return SOCKET_ERROR; } + IBSP_EXIT( IBSP_DBG_OPT ); return 0; } @@ -1600,7 +1600,8 @@ IBSPRecv( { /* 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_TRACE_EXIT( IBSP_DBG_WARN | IBSP_DBG_IO, + ("invalid socket handle %x\n", s) ); *lpErrno = WSAENOTSOCK; return SOCKET_ERROR; } @@ -1815,13 +1816,20 @@ IBSPSend( CL_ASSERT( lpCompletionRoutine == NULL ); CL_ASSERT( lpOverlapped != NULL ); + cl_spinlock_acquire( &socket_info->mutex ); /* Check the state of the socket */ - if( socket_info->socket_state != IBSP_CONNECTED ) + switch( socket_info->socket_state ) { + case IBSP_CONNECTED: + case IBSP_DISCONNECTED: + break; + + default: IBSP_ERROR_EXIT( ("Socket is not in connected socket_state \n") ); *lpErrno = WSAENOTCONN; return SOCKET_ERROR; } + cl_spinlock_release( &socket_info->mutex ); if( socket_info->qp_error ) { @@ -1946,7 +1954,8 @@ IBSPSend( #ifdef _DEBUG_ if( lpBuffers[0].len >= 40 ) { - debug_dump_buffer( IBSP_DBG_WQ, gdbg_lvl, "SEND", lpBuffers[0].buf, 40 ); + debug_dump_buffer( IBSP_DBG_WQ | IBSP_DBG_LEVEL4, "SEND", + lpBuffers[0].buf, 40 ); } #endif @@ -2102,13 +2111,13 @@ IBSPSocket( { struct ibsp_socket_info *socket_info = NULL; - CL_ENTER( IBSP_DBG_CONN, gdbg_lvl ); + IBSP_ENTER( IBSP_DBG_SI ); UNUSED_PARAM( g ); if( af != AF_INET ) { - CL_ERROR( IBSP_DBG_CONN, gdbg_lvl, + IBSP_ERROR( ("bad family %d instead of %d\n", af, AF_INET) ); *lpErrno = WSAEAFNOSUPPORT; goto error; @@ -2116,7 +2125,7 @@ IBSPSocket( if( type != SOCK_STREAM ) { - CL_ERROR( IBSP_DBG_CONN, gdbg_lvl, + IBSP_ERROR( ("bad type %d instead of %d\n", type, SOCK_STREAM) ); *lpErrno = WSAEPROTOTYPE; goto error; @@ -2124,7 +2133,7 @@ IBSPSocket( if( protocol != IPPROTO_TCP ) { - CL_ERROR( IBSP_DBG_CONN, gdbg_lvl, + IBSP_ERROR( ("bad protocol %d instead of %d\n", protocol, IPPROTO_TCP) ); *lpErrno = WSAEPROTONOSUPPORT; goto error; @@ -2132,7 +2141,7 @@ IBSPSocket( if( (dwFlags != WSA_FLAG_OVERLAPPED) ) { - CL_ERROR( IBSP_DBG_CONN, gdbg_lvl, + IBSP_ERROR( ("dwFlags is not WSA_FLAG_OVERLAPPED (%x)\n", dwFlags) ); *lpErrno = WSAEINVAL; goto error; @@ -2141,7 +2150,7 @@ IBSPSocket( socket_info = create_socket_info(); if( socket_info == NULL ) { - CL_ERROR( IBSP_DBG_CONN, gdbg_lvl, ("create_socket_info return NULL\n") ); + IBSP_ERROR( ("create_socket_info return NULL\n") ); *lpErrno = WSAENOBUFS; goto error; } @@ -2154,7 +2163,7 @@ IBSPSocket( ret = setup_duplicate_socket( socket_info, lpProtocolInfo->dwProviderReserved ); if( ret ) { - CL_ERROR( IBSP_DBG_CONN, gdbg_lvl, + IBSP_ERROR( ("setup_duplicate_socket failed with %d\n",ret) ); *lpErrno = ret; goto error; @@ -2169,9 +2178,8 @@ IBSPSocket( if( socket_info->switch_socket != INVALID_SOCKET ) { - fzprint(("%s():%d:0x%x:0x%x: socket_info=0x%p switch_socket=0x%p \n", - __FUNCTION__, __LINE__, GetCurrentProcessId(), GetCurrentThreadId(), - socket_info, socket_info->switch_socket)); + IBSP_TRACE1( IBSP_DBG_SI, ("socket_info=0x%p switch_socket=0x%p \n", + socket_info, socket_info->switch_socket) ); STAT_INC( wpusocket_num ); } @@ -2179,7 +2187,7 @@ IBSPSocket( if( socket_info->switch_socket == INVALID_SOCKET ) { - CL_ERROR( IBSP_DBG_CONN, gdbg_lvl, + IBSP_ERROR( ("WPUCreateSocketHandle() failed: %d\n", *lpErrno) ); /* lpErrno has just been set */ goto error; @@ -2209,7 +2217,7 @@ IBSPSocket( fzprint(("%s():%d:0x%x:0x%x: socket=0x%p\n", __FUNCTION__, __LINE__, GetCurrentProcessId(), GetCurrentThreadId(), socket_info)); - CL_TRACE_EXIT( IBSP_DBG_CONN, gdbg_lvl, + IBSP_TRACE_EXIT( IBSP_DBG_SI, ("returning socket handle %p\n", socket_info) ); return (SOCKET) socket_info; @@ -2220,7 +2228,7 @@ error: CL_ASSERT( *lpErrno != 0 ); - CL_EXIT_ERROR( IBSP_DBG_CONN, gdbg_lvl, ("Returning error %d\n", *lpErrno) ); + IBSP_ERROR_EXIT( ("Returning error %d\n", *lpErrno) ); return INVALID_SOCKET; }