[ofw] [patch] [ipoib_NDIS6_CM] The send_lock is being held once __send_cb is calling __send_complete_net_buffer.

Alex Naslednikov xalex at mellanox.co.il
Tue Jan 4 00:51:17 PST 2011


Will do

From: Tzachi Dar
Sent: Tuesday, January 04, 2011 10:11 AM
To: Smith, Stan; ofw at lists.openfabrics.org; Alex Naslednikov
Subject: RE: [ofw] [patch] [ipoib_NDIS6_CM] The send_lock is being held once __send_cb is calling __send_complete_net_buffer.

It seems that the same is true for ipoib_port_resume().

Xalex, can you try this and see that this is working?

Thanks
Tzachi

From: Smith, Stan [mailto:stan.smith at intel.com]
Sent: Monday, January 03, 2011 10:35 PM
To: Tzachi Dar; ofw at lists.openfabrics.org
Subject: RE: [ofw] [patch] [ipoib_NDIS6_CM] The send_lock is being held once __send_cb is calling __send_complete_net_buffer.

________________________________
From: Tzachi Dar [mailto:tzachid at mellanox.co.il]
Sent: Monday, January 03, 2011 11:03 AM
To: Smith, Stan; ofw at lists.openfabrics.org
Subject: RE: [ofw] [patch] [ipoib_NDIS6_CM] The send_lock is being held once __send_cb is calling __send_complete_net_buffer.
The lock has to be unlocked since our call to ndis NdisMSendComplete can cause NDIS to call us to send in the same dpc, and there we reach a deadlock.

We have seen this happen once, and we wander why we don't see that every time.

OK, makes sense that NDIS could call back; I was curious on how the problem of holding send_lock locked was detected.

What about the proposed change to ipoib_port_resume()?

Thanks
Tzachi


From: Smith, Stan [mailto:stan.smith at intel.com]
Sent: Monday, January 03, 2011 8:09 PM
To: Tzachi Dar; ofw at lists.openfabrics.org
Subject: RE: [ofw] [patch] [ipoib_NDIS6_CM] The send_lock is being held once __send_cb is calling __send_complete_net_buffer.

Hi Tzachi,
  A couple of questions:

Why is p_port->send_lock is required to be unlocked when calling NdisMSendNetBufferListsCompleteX() which translates to NdisMSendComplete() call?

If p_port->send_lock is required to be unlocked when calling NdisMSendNetBufferListsCompleteX(), then ipoib_port_resume() should call
__send_complete_net_buffer( s_buf, NDIS_STATUS_FAILURE, NDIS_SEND_COMPLETE_FLAGS_DISPATCH_LEVEL, TRUE)  not FALSE
as send_lock is held over calls to ipoib_port_resume().

stan.



________________________________
From: ofw-bounces at lists.openfabrics.org [mailto:ofw-bounces at lists.openfabrics.org] On Behalf Of Tzachi Dar
Sent: Saturday, January 01, 2011 11:55 PM
To: Tzachi Dar; ofw at lists.openfabrics.org
Subject: Re: [ofw] [patch] [ipoib_NDIS6_CM] The send_lock is being held once __send_cb is calling __send_complete_net_buffer.
Applied on 3053.

Thanks
Tzachi

From: ofw-bounces at lists.openfabrics.org [mailto:ofw-bounces at lists.openfabrics.org] On Behalf Of Tzachi Dar
Sent: Sunday, December 26, 2010 6:39 PM
To: ofw at lists.openfabrics.org
Subject: [ofw] [patch] [ipoib_NDIS6_CM] The send_lock is being held once __send_cb is calling __send_complete_net_buffer.

Index: D:/projinf2_1_3_1/MLNX_WinOF-2_1_3/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp
===================================================================
--- D:/projinf2_1_3_1/MLNX_WinOF-2_1_3/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp            (revision 7086)
+++ D:/projinf2_1_3_1/MLNX_WinOF-2_1_3/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp         (revision 7087)
@@ -6238,7 +6238,7 @@
                                                __send_complete_net_buffer( s_buf,
                                                                                                                                                                status,
                                                                                                                                                                NDIS_SEND_COMPLETE_FLAGS_DISPATCH_LEVEL,
-                                                                                                                                                              FALSE );
+                                                                                                                                                             TRUE );

                                                cl_atomic_dec( &p_port->send_mgr.depth );

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openfabrics.org/pipermail/ofw/attachments/20110104/fd5ae8e8/attachment.html>


More information about the ofw mailing list