Applied at 3046

-----Original Message-----
From: Alex Naslednikov 
Sent: Wednesday, December 22, 2010 12:33 PM
To: Alex Naslednikov; [email protected]
Subject: RE: [ofw][Patch][IPoIB_NDIS6_CM] __recv_cb_internal() revisited

Adding MACRO definitions to the previous patches
Index: B:/users/xalex/MLNX_VPI_trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp
===================================================================
--- B:/users/xalex/MLNX_VPI_trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp      
(revision 7041)
+++ B:/users/xalex/MLNX_VPI_trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp      
(revision 7042)
@@ -2167,8 +2167,8 @@
                {
                        /* We may have thrown away packets, and have a shortage 
*/
                        cl_perf_start( RepostRecv );
-                       IPOIB_PRINT_EXIT( TRACE_LEVEL_WARNING, IPOIB_DBG_ALL,
-                                       ("Out of recv descriptors, reposting 
again\n") )
+                       IPOIB_PRINT( TRACE_LEVEL_WARNING, IPOIB_DBG_ALL,
+                                       ("Out of recv descriptors, reposting 
again\n") );
                        shortage = __recv_mgr_repost( p_port );
                        cl_perf_stop( &p_port->p_adapter->perf, RepostRecv );
                }
Index: B:/users/xalex/MLNX_VPI_trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_debug.h
===================================================================
--- B:/users/xalex/MLNX_VPI_trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_debug.h       
(revision 7041)
+++ B:/users/xalex/MLNX_VPI_trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_debug.h       
(revision 7042)
@@ -52,7 +52,6 @@
 extern uint32_t                g_ipoib_dbg_level;
 extern uint32_t                g_ipoib_dbg_flags;
 
-
 #if defined(EVENT_TRACING)
 //
 // Software Tracing Definitions
@@ -74,10 +73,11 @@
        WPP_DEFINE_BIT(IPOIB_DBG_IOCTL) \
        WPP_DEFINE_BIT(IPOIB_DBG_STAT) \
        WPP_DEFINE_BIT(IPOIB_DBG_OBJ) \
-       WPP_DEFINE_BIT(IPOIB_DBG_SHUTTER))
+       WPP_DEFINE_BIT(IPOIB_DBG_SHUTTER) \
+       WPP_DEFINE_BIT(IPOIB_DBG_ALL) \
+       )
 
 
-
 #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)

-----Original Message-----
From: Alex Naslednikov
Sent: Wednesday, December 22, 2010 12:27 PM
To: Alex Naslednikov; [email protected]
Subject: [ofw][Patch][IPoIB_NDIS6_CM] __recv_cb_internal() revisited

__recv_cb_internal revisited
Code clean-up and rearrange
Update shortage counter when reposting recv descriptors again 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)
@@ -2143,12 +2143,6 @@
                cl_perf_start( RepostRecv );
                shortage = __recv_mgr_repost( p_port );
                
-               if( shortage > 0 )
-               {                               
-                       recv_complete_flags |= NDIS_RECEIVE_FLAGS_RESOURCES;
-                       cl_dbg_out("Got SHORTAGE=%d\n",shortage);
-               }
-               
                cl_perf_stop( &p_port->p_adapter->perf, RepostRecv );
 
                cl_perf_start( BuildNBLArray );
@@ -2161,12 +2155,13 @@
                {
                        /* We may have thrown away packets, and have a shortage 
*/
                        cl_perf_start( RepostRecv );
-                       __recv_mgr_repost( p_port );
+                       IPOIB_PRINT_EXIT( TRACE_LEVEL_WARNING, IPOIB_DBG_ALL,
+                                       ("Out of recv descriptors, reposting 
again\n") )
+                       shortage = __recv_mgr_repost( p_port );
                        cl_perf_stop( &p_port->p_adapter->perf, RepostRecv );
                }
 
                if( !NBL_cnt ) {
-                       //cl_dbg_out("NBL cnt == 0 :-(\n");
                        break;
                }
 
@@ -2174,7 +2169,8 @@
 
                cl_perf_start( RecvNdisIndicate );
                
-               if (shortage <= 0) {
+               if (shortage <= 0) 
+               {
 
                        res = shutter_add( &p_port->p_adapter->recv_shutter, 
NBL_cnt );
                        if (res)
@@ -2191,14 +2187,16 @@
                                __free_received_NBL( p_port, 
p_port->recv_mgr.recv_NBL_array[0] );
                                cl_spinlock_release( &p_port->recv_lock );
                        }
-                               
-               } else {
-                       /* If shortage >0, we already set the status to
-                          NDIS_RECEIVE_FLAGS_RESOURCES.  That is, IPoIB driver 
regain
+                       cl_perf_stop( &p_port->p_adapter->perf, 
RecvNdisIndicate );
+               } 
+               else 
+               {
+                       /* If shortage >0,  IPoIB driver should regain
                           ownership of the NET_BUFFER_LIST structures 
immediately.
                         */
                        res = shutter_add( &p_port->p_adapter->recv_shutter, 1 
);
                        if (res) {
+                               recv_complete_flags |= 
NDIS_RECEIVE_FLAGS_RESOURCES;
                                NdisMIndicateReceiveNetBufferLists(
                                                                                
                p_port->p_adapter->h_adapter,
                                                                                
                p_port->recv_mgr.recv_NBL_array[0],
@@ -2207,20 +2205,18 @@
                                                                                
                recv_complete_flags );
                                shutter_sub( &p_port->p_adapter->recv_shutter, 
-1 );
                        }
-               }
+                       cl_perf_stop( &p_port->p_adapter->perf, 
RecvNdisIndicate );
 
-               cl_perf_stop( &p_port->p_adapter->perf, RecvNdisIndicate );
-
-               /*
-                * Cap the number of receives to put back to what we just 
indicated
-                * with NDIS_STATUS_RESOURCES.
-                */
-               if( shortage > 0 )
-               {
-                       cl_dbg_out("GOT SHORTAGE <===============\n");
+                       /*
+                        * Cap the number of receives to put back to what we 
just indicated
+                        * with NDIS_STATUS_RESOURCES.
+                        */
+                       
+                       IPOIB_PRINT_EXIT( TRACE_LEVEL_WARNING, IPOIB_DBG_ALL,
+                                       ("Out of recv descriptors, 
SHORTAGE=%d\n",shortage) );
+                       
                        /* Return all but the last packet to the pool. */
                        cl_spinlock_acquire( &p_port->recv_lock );
-                       //while( shortage-- > 1 )
                        while ( NBL_cnt-- > 0)
                        {
                                __buf_mgr_put_recv(
@@ -2232,12 +2228,8 @@
                        __recv_mgr_repost( p_port );
                        cl_spinlock_release( &p_port->recv_lock );
 
-                       /*
-                        * Return the last packet as if NDIS returned it, so 
that we repost
-                        * and report any other pending receives.
-                        */
-                       //ipoib_return_net_buffer_list( p_port, 
p_port->recv_mgr.recv_NBL_array[0],recv_complete_flags );
                }
+
                cl_spinlock_acquire( &p_port->recv_lock );
 
        } while( NBL_cnt );
_______________________________________________
ofw mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw

Reply via email to