[ofw] [Patch][IPoIB_NDIS6_CM] More printing facilities

Alex Naslednikov xalex at mellanox.co.il
Wed Dec 22 02:41:04 PST 2010


Added more tracing facilities
Signed-off by: Alexander Naslednikov (xalex at mellanox.co.il)

Index: ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp
===================================================================
--- ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp	(revision 3033)
+++ ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp	(working copy)
@@ -411,6 +411,82 @@
 	IN PNDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO p_lso_info,
 	IN				NET_BUFFER					*p_netbuf);
 
+static inline void
+	ipoib_print_ip_hdr( 
+	IN				ip_hdr_t*	const 			p_ip_hdr )
+{
+	IPOIB_PRINT( TRACE_LEVEL_INFORMATION, IPOIB_DBG_SEND,
+			("IP Header:\n ver_hl=%d\tsvc_type=%d\n "
+			 "length=%04X\tid=%d\n"
+			 "offset=%d\tttl=%d\n "
+			 "prot=%d\tchksum=%d\n "
+			 "src_ip=%d.%d.%d.%d\tdst_ip=%d.%d.%d.%d\n",
+				p_ip_hdr->ver_hl,
+				p_ip_hdr->svc_type,
+				cl_ntoh16( p_ip_hdr->length ),
+				cl_ntoh16( p_ip_hdr->id ),
+				cl_ntoh16( p_ip_hdr->offset ),
+				p_ip_hdr->ttl,
+				p_ip_hdr->prot,
+				cl_ntoh16( p_ip_hdr->chksum ),
+				((UCHAR*) (void*) & (p_ip_hdr->src_ip))[0],
+				((UCHAR*) (void*) & (p_ip_hdr->src_ip))[1],
+				((UCHAR*) (void*) & (p_ip_hdr->src_ip))[2],
+				((UCHAR*) (void*) & (p_ip_hdr->src_ip))[3],
+				((UCHAR*) (void*) & (p_ip_hdr->dst_ip))[0],
+				((UCHAR*) (void*) & (p_ip_hdr->dst_ip))[1],
+				((UCHAR*) (void*) & (p_ip_hdr->dst_ip))[2],
+				((UCHAR*) (void*) & (p_ip_hdr->dst_ip))[3]) );
+}
+
+static const char src_hw_str[] = "src_hw_addr";
+static const char dest_hw_str[] = "dest_hw_addr";
+
+static inline void
+	ipoib_print_ib_hw_addr(
+	IN				UCHAR*		const	p_hw_addr,
+	IN				const char*	const	hw_addr_str ) 
+{
+	IPOIB_PRINT( TRACE_LEVEL_INFORMATION, IPOIB_DBG_SEND,
+		("%s =%02x %02x %02x %02x %02x %02x %02x %02x %02x "
+		 "%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x \n",
+		hw_addr_str,
+		p_hw_addr[0], p_hw_addr[1], p_hw_addr[2], p_hw_addr[3],
+		p_hw_addr[4], p_hw_addr[5], p_hw_addr[6], p_hw_addr[7],
+		p_hw_addr[8], p_hw_addr[9], p_hw_addr[10], p_hw_addr[11],
+		p_hw_addr[12], 	p_hw_addr[13], p_hw_addr[14], p_hw_addr[15],
+		p_hw_addr[15], 	p_hw_addr[17], p_hw_addr[18], p_hw_addr[19]) 
+	);
+}
+
+static inline void
+	ipoib_print_arp_hdr(
+	IN				ipoib_arp_pkt_t *	const			p_ib_arp )
+{
+		IPOIB_PRINT( TRACE_LEVEL_INFORMATION, IPOIB_DBG_SEND,
+					("ARP packet:\n"
+					"hw_type=%d\tprot_type=%d\thw_size=%d\n"
+					"prot_size=%d\top=%d\t"
+					"src_ip=%d.%d.%d.%d\tdst_ip=%d.%d.%d.%d\n",
+						p_ib_arp->hw_type,
+					p_ib_arp->prot_type,
+					p_ib_arp->hw_size,
+					p_ib_arp->prot_size,
+					p_ib_arp->op,
+					((UCHAR*) (void*)(&p_ib_arp->src_ip))[0],
+					((UCHAR*) (void*)(&p_ib_arp->src_ip))[1],
+					((UCHAR*) (void*)(&p_ib_arp->src_ip))[2],
+					((UCHAR*) (void*)(&p_ib_arp->src_ip))[3],
+					((UCHAR*) (void*)(&p_ib_arp->dst_ip))[0],
+					((UCHAR*) (void*)(&p_ib_arp->dst_ip))[1],
+					((UCHAR*) (void*)(&p_ib_arp->dst_ip))[2],
+					((UCHAR*) (void*)(&p_ib_arp->dst_ip))[3])
+					);
+		ipoib_print_ib_hw_addr( (UCHAR*) (void*) &p_ib_arp->src_hw, src_hw_str );
+		ipoib_print_ib_hw_addr( (UCHAR*) (void*) &p_ib_arp->dst_hw , dest_hw_str );
+		
+}
+
 //TODO CM Restore
 #if 0
 
@@ -3566,17 +3642,23 @@
 	{
 	case ETH_PROT_TYPE_IPV6:
 		cl_perf_start( FilterIpV6 );
+		IPOIB_PRINT( TRACE_LEVEL_INFORMATION, IPOIB_DBG_SEND,
+			("Current header type is IPv6\n") );
 		status = __send_mgr_filter_ip( p_eth_hdr, p_mdl, buf_len, s_buf );
 		cl_perf_stop( &p_port->p_adapter->perf, FilterIpV6 );
 		break;
 	case ETH_PROT_TYPE_IP:
 		cl_perf_start( FilterIp );
+		IPOIB_PRINT( TRACE_LEVEL_INFORMATION, IPOIB_DBG_SEND,
+			("Current header type is IPv4\n") );
 		status = __send_mgr_filter_ip( p_eth_hdr, p_mdl, buf_len, s_buf );
 		cl_perf_stop( &p_port->p_adapter->perf, FilterIp );
 		break;
 
 	case ETH_PROT_TYPE_ARP:
 		cl_perf_start( FilterArp );
+		IPOIB_PRINT( TRACE_LEVEL_INFORMATION, IPOIB_DBG_SEND,
+			("Current header type is ARP\n") );
 		status = __send_mgr_filter_arp( p_eth_hdr, p_mdl, buf_len, s_buf );
 		p_desc->send_dir = SEND_UD_QP;
 		cl_perf_stop( &p_port->p_adapter->perf, FilterArp );
@@ -3587,6 +3669,8 @@
 		 * The IPoIB spec doesn't define how to send non IP or ARP packets.
 		 * Just send the payload and hope for the best.
 		 */
+		 IPOIB_PRINT( TRACE_LEVEL_WARNING, IPOIB_DBG_SEND,
+			("Unrecognized header type: %d\n",p_eth_hdr->type ) );
 
 		p_desc->send_dir = SEND_UD_QP;
 		cl_perf_start( SendGen );
@@ -3997,8 +4081,8 @@
 	s_buf->p_send_buf = NULL;
 	p_port->p_desc->num_wrs = 1;
 
-	IPOIB_PRINT( TRACE_LEVEL_VERBOSE, IPOIB_DBG_SEND,
-			("\nRECEIVED NB= %p with SG= %p\n********\n", p_netbuf, p_sgl) );
+	IPOIB_PRINT( TRACE_LEVEL_INFORMATION, IPOIB_DBG_SEND,
+			("\nRECEIVED NBL= 0x%p, NB= 0x%p with SG= %p\n********\n", p_net_buffer_list, p_netbuf, p_sgl) );
 
 	/* Get the ethernet header so we can find the endpoint. */
 	cl_perf_start( GetEthHdr );
@@ -4427,11 +4511,13 @@
 	{
 		prot = ((ipv6_hdr_t *) p_ip_hdr)->next_header;
 		hdr_size = sizeof(ipv6_hdr_t);
+		 IPOIB_PRINT( TRACE_LEVEL_INFORMATION, IPOIB_DBG_SEND,("Got IPV6 Header\n" ) );
 	}
 	else //IPv4
 	{
 		prot = ((ip_hdr_t *) p_ip_hdr)->prot;
 		hdr_size = sizeof(ip_hdr_t);
+		ipoib_print_ip_hdr( (ip_hdr_t *) p_ip_hdr );
 	}
 	if( buf_len < hdr_size )
 	{
@@ -5062,6 +5148,7 @@
 						s_buf->p_port->p_adapter->guids.port_guid.guid );
 
 	p_ib_arp->src_ip = p_arp->src_ip;
+	ipoib_print_arp_hdr( p_ib_arp ); 
 
 	if( cl_memcmp( &p_arp->dst_hw, &null_hw, sizeof(mac_addr_t) ) )
 	{
@@ -6057,8 +6144,10 @@
 						p_wc->wc_type == IB_WC_SEND || p_wc->wc_type == IB_WC_LSO);
 
 			s_buf = (ipoib_send_NB_SG*)(uintn_t)p_wc->wr_id;
-			IPOIB_PRINT(TRACE_LEVEL_VERBOSE, IPOIB_DBG_SEND,
-				("Successfull send completion for NBL=0x%p .\n",  s_buf->p_nbl ));
+			
+			IPOIB_PRINT(TRACE_LEVEL_INFORMATION, IPOIB_DBG_SEND,
+				("Send completion for NBL=0x%p, NB=0x%p \n",  s_buf->p_nbl, s_buf->p_curr_nb));
+			
 			CL_ASSERT( s_buf );
 
 			p_endpt = s_buf->p_endpt;
@@ -7593,6 +7682,8 @@
 		p_port->p_adapter->hung = TRUE;
 		return;
 	}
+	IPOIB_PRINT_EXIT( TRACE_LEVEL_INFORMATION, IPOIB_DBG_INIT,
+			("IB QP was put into IB_QPS_ERROR state\n") );
 
 	KeResetEvent(&p_port->leave_mcast_event);
 
@@ -7791,6 +7882,8 @@
 		cl_memclr( &qp_mod, sizeof(ib_qp_mod_t) );
 		qp_mod.req_state = IB_QPS_ERROR;
 		status = p_port->p_adapter->p_ifc->modify_qp( p_port->ib_mgr.h_qp, &qp_mod );
+		IPOIB_PRINT( TRACE_LEVEL_INFORMATION, IPOIB_DBG_INIT,
+			("IB QP was put into IB_QPS_ERROR state\n") );
 		__endpt_mgr_reset_all( p_port );
 
 		ipoib_port_deref( p_port, ref_join_bcast );
@@ -7866,6 +7959,8 @@
 			p_port->p_adapter->p_ifc->get_err_str( status )) );
 		return status;
 	}
+	IPOIB_PRINT( TRACE_LEVEL_INFORMATION, IPOIB_DBG_INIT,
+			("IB QP was put into IB_QPS_ERROR state\n") );
 
 	/* Move the QP to RTS. */
 	dgrm_info.port_guid = p_port->p_adapter->guids.port_guid.guid;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: tracing_fac_ofw.patch
Type: application/octet-stream
Size: 6949 bytes
Desc: tracing_fac_ofw.patch
URL: <http://lists.openfabrics.org/pipermail/ofw/attachments/20101222/0bd4a088/attachment.obj>


More information about the ofw mailing list