From b71cb2cda08dbf2e5fe3ac9645711544251e87ac Mon Sep 17 00:00:00 2001 From: ftillier Date: Tue, 28 Feb 2006 19:11:44 +0000 Subject: [PATCH] [IPoIB] Fix NDIS WHQL 1c_LoopbackSend test failures. git-svn-id: svn://openib.tc.cornell.edu/gen1@224 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86 --- trunk/ulp/ipoib/kernel/ipoib_port.c | 33 +++++++++++++++++++---------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/trunk/ulp/ipoib/kernel/ipoib_port.c b/trunk/ulp/ipoib/kernel/ipoib_port.c index 62a2fb23..11743a9f 100644 --- a/trunk/ulp/ipoib/kernel/ipoib_port.c +++ b/trunk/ulp/ipoib/kernel/ipoib_port.c @@ -1791,18 +1791,21 @@ __recv_mgr_filter( p_eth = &p_desc->p_buf->eth.pkt; #endif /*IPOIB_INLINE_RECV */ - /* Don't report loopback traffic - we requested SW loopback. */ - if( !cl_memcmp( &p_port->p_adapter->mac, &p_eth->hdr.src, - sizeof(p_port->p_adapter->mac) ) ) + if( p_src ) { - /* - * "This is not the packet you're looking for" - don't update - * receive statistics, the packet never happened. - */ - cl_qlist_insert_tail( p_bad_list, &p_desc->item.list_item ); - /* Dereference the port object on behalf of the failed receive. */ - cl_obj_deref( &p_port->obj ); - continue; + /* Don't report loopback traffic - we requested SW loopback. */ + if( !cl_memcmp( &p_port->p_adapter->mac, &p_src->mac, + sizeof(p_port->p_adapter->mac) ) ) + { + /* + * "This is not the packet you're looking for" - don't update + * receive statistics, the packet never happened. + */ + cl_qlist_insert_tail( p_bad_list, &p_desc->item.list_item ); + /* Dereference the port object on behalf of the failed recv. */ + cl_obj_deref( &p_port->obj ); + continue; + } } switch( p_ipoib->hdr.type ) @@ -3971,6 +3974,14 @@ __endpt_mgr_ref( IPOIB_ENTER( IPOIB_DBG_ENDPT ); + if( !cl_memcmp( &mac, &p_port->p_adapter->mac, sizeof(mac) ) ) + { + /* Discard loopback traffic. */ + IPOIB_TRACE( IPOIB_DBG_WARN, ("Discarding loopback traffic\n") ); + IPOIB_EXIT( IPOIB_DBG_ENDPT ); + return NDIS_STATUS_NO_ROUTE_TO_DESTINATION; + } + key = 0; cl_memcpy( &key, &mac, sizeof(mac_addr_t) ); -- 2.41.0