From: aestrin Date: Fri, 10 Oct 2008 16:43:24 +0000 (+0000) Subject: [ipoib]cm X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=8ebe243e9a0918735012a4815b8cec2231679215;p=~shefty%2Frdma-win.git [ipoib]cm - fix for cm rej callback - have to remove failed endpt from all lists before destroy obj to prevent race with sending data to that endpt. - temp!!! wrokaround until understand why large cm mtu size doesn't work for NDIS. - fix debug printout for ARP msg. - remove unnecessary macro to ease re-merging code to the trunk. git-svn-id: svn://openib.tc.cornell.edu/gen1@1642 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86 --- diff --git a/branches/ipoib_cm/kernel/ipoib_cm.c b/branches/ipoib_cm/kernel/ipoib_cm.c index 2706df77..3922b6e3 100644 --- a/branches/ipoib_cm/kernel/ipoib_cm.c +++ b/branches/ipoib_cm/kernel/ipoib_cm.c @@ -713,7 +713,7 @@ __conn_rej_cb( InterlockedCompareExchange( (volatile LONG *)&p_endpt->conn.state, IPOIB_CM_REJ_RECVD, IPOIB_CM_DISCONNECTED ); - endpt_cm_destroy_conn( p_port, p_endpt ); + ipoib_port_remove_endpt( p_port, p_endpt->mac ); ipoib_port_resume( p_port ); diff --git a/branches/ipoib_cm/kernel/ipoib_driver.c b/branches/ipoib_cm/kernel/ipoib_driver.c index e83a1e21..0052b029 100644 --- a/branches/ipoib_cm/kernel/ipoib_driver.c +++ b/branches/ipoib_cm/kernel/ipoib_driver.c @@ -988,11 +988,8 @@ ipoib_query_info( case OID_GEN_MAXIMUM_FRAME_SIZE: IPOIB_PRINT( TRACE_LEVEL_INFORMATION,IPOIB_DBG_OID, ("Port %d received query for OID_GEN_MAXIMUM_FRAME_SIZE\n", port_num) ); - if( p_adapter->params.cm_enabled ) - info = p_adapter->params.cm_payload_mtu; - else info = p_adapter->params.payload_mtu; - break; + break; case OID_GEN_LINK_SPEED: IPOIB_PRINT( TRACE_LEVEL_VERBOSE,IPOIB_DBG_OID, @@ -1057,7 +1054,7 @@ ipoib_query_info( "OID_GEN_RECEIVE_BLOCK_SIZE or " "OID_GEN_MAXIMUM_TOTAL_SIZE\n", port_num) ); if( p_adapter->params.cm_enabled ) - info = p_adapter->params.cm_payload_mtu + sizeof(eth_hdr_t); + info = p_adapter->params.cm_xfer_block_size; else info = p_adapter->params.xfer_block_size; break; diff --git a/branches/ipoib_cm/kernel/ipoib_port.c b/branches/ipoib_cm/kernel/ipoib_port.c index 4621cfb7..5b405aa3 100644 --- a/branches/ipoib_cm/kernel/ipoib_port.c +++ b/branches/ipoib_cm/kernel/ipoib_port.c @@ -2669,15 +2669,18 @@ __recv_arp( } #if DBG - - IPOIB_PRINT_EXIT( TRACE_LEVEL_INFORMATION, IPOIB_DBG_INIT, - ("ARP REQUEST from ENDPT[%p] state %d CM cap: %d QPN: %#x MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", + if( p_port->p_adapter->params.cm_enabled ) + { + IPOIB_PRINT_EXIT( TRACE_LEVEL_INFORMATION, IPOIB_DBG_INIT, + (" ARP %s from ENDPT[%p] state %d CM cap: %d QPN: %#x MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", + ((p_ib_arp->op == ARP_OP_REQ )? "REQUEST" : "REPLY"), *pp_src, endpt_cm_get_state( *pp_src ), ((cm_capable == IPOIB_CM_FLAG_RC)? 1: 0), cl_ntoh32( ipoib_addr_get_qpn( &p_ib_arp->src_hw ) ), (*pp_src)->mac.addr[0], (*pp_src)->mac.addr[1], (*pp_src)->mac.addr[2], (*pp_src)->mac.addr[3], (*pp_src)->mac.addr[4], (*pp_src)->mac.addr[5] )); + } #endif /* Now swizzle the data. */ @@ -4225,7 +4228,7 @@ __build_send_desc( p_desc->wr.ds_array = p_desc->local_ds; /* check if we can send data through RC QP */ - if( ETH_IS_UNICAST( p_eth_hdr->dst.addr ) && + if( !( p_eth_hdr->dst.addr[0] & (uint8_t)0x01 ) && endpt_cm_get_state( p_desc->p_endpt) == IPOIB_CM_CONNECTED ) { p_desc->send_qp = p_desc->p_endpt->conn.h_work_qp; diff --git a/branches/ipoib_cm/kernel/ipoib_xfr_mgr.h b/branches/ipoib_cm/kernel/ipoib_xfr_mgr.h index e4775814..17c61881 100644 --- a/branches/ipoib_cm/kernel/ipoib_xfr_mgr.h +++ b/branches/ipoib_cm/kernel/ipoib_xfr_mgr.h @@ -81,10 +81,6 @@ typedef struct _ipoib_hw_addr *********/ #include -/* TODO: move this macro to inc\kernel\ip_packet.h*/ -#define ETH_IS_UNICAST(addr) \ - !(BOOLEAN)(((PUCHAR)(addr))[0] & ((UCHAR)0x01)) - #ifdef __cplusplus extern "C"