[ofw] FW: It seems that there are several places where the function __send_mgr_filter_udp is returning pending

Tzachi Dar tzachid at mellanox.co.il
Tue Jan 4 07:43:51 PST 2011


Applied on 3056.

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 5:55 PM
To: ofw at lists.openfabrics.org
Subject: [ofw] FW: It seems that there are several places where the function __send_mgr_filter_udp is returning pending

Below is the formal patch to the place where the code seems to be very confusing (no functionality change).

Index: B:/users/tzachid/projinf6/trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp
===================================================================
--- B:/users/tzachid/projinf6/trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp              (revision 7084)
+++ B:/users/tzachid/projinf6/trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp           (working copy)
@@ -4596,16 +4596,15 @@
                                status = __send_mgr_filter_udp( p_ip_hdr, p_mdl,
                                        (buf_len - hdr_size), p_eth_hdr->type, s_buf );
                                cl_perf_stop( &p_port->p_adapter->perf, FilterUdp );
-                              if( status == NDIS_STATUS_PENDING )
-                              {  /* not DHCP packet, keep going */
-                                              if( ETH_IS_MULTICAST( p_eth_hdr->dst.addr ) )
-                                                              p_desc->send_dir = SEND_UD_QP;
-                                              else
-                                                              p_desc->send_dir = SEND_RC_QP;
-                                              break;
+                             if( status != NDIS_STATUS_PENDING ) {
+                                             return status;
                                }
-                              return status;
-
+                               /* not DHCP packet, keep going */
+                             if( ETH_IS_MULTICAST( p_eth_hdr->dst.addr ) )
+                                             p_desc->send_dir = SEND_UD_QP;
+                             else
+                                             p_desc->send_dir = SEND_RC_QP;
+                             break;
                case IP_PROT_TCP:
                                p_desc->send_dir = SEND_RC_QP;
                                break;

From: Alex Naslednikov
Sent: Sunday, December 26, 2010 9:20 AM
To: Tzachi Dar; Galina Tcharny; Uri Habusha
Cc: Gilad Margalit
Subject: RE: It seems that there are several places where the function __send_mgr_filter_udp is returning pending

I agree.
Can you send it to the community, please ?

From: Tzachi Dar
Sent: Thursday, December 23, 2010 12:38 PM
To: Tzachi Dar; Alex Naslednikov; Galina Tcharny; Uri Habusha
Cc: Gilad Margalit
Subject: RE: It seems that there are several places where the function __send_mgr_filter_udp is returning pending

OK, my mistake.


The following code got me confused.

                                if( status == NDIS_STATUS_PENDING )
                                {  /* not DHCP packet, keep going */
                                                if( ETH_IS_MULTICAST( p_eth_hdr->dst.addr ) )
                                                                p_desc->send_dir = SEND_UD_QP;
                                                else
                                                                p_desc->send_dir = SEND_RC_QP;
                                                break;
                                }
                                return status;

Please note that it is not clear that the function will return.

I'll change it with

                                if( status != NDIS_STATUS_PENDING )
                                {
                                                Return status;
}
                                 /* not DHCP packet, keep going */
                                                if( ETH_IS_MULTICAST( p_eth_hdr->dst.addr ) )
                                                                p_desc->send_dir = SEND_UD_QP;
                                                else
                                                                p_desc->send_dir = SEND_RC_QP;
                break;




From: Tzachi Dar
Sent: Thursday, December 23, 2010 10:39 AM
To: Alex Naslednikov; Galina Tcharny; Uri Habusha
Cc: Tzachi Dar
Subject: It seems that there are several places where the function __send_mgr_filter_udp is returning pending

If I understand correctly this will cause the packets not to be sent.

Is this by design? Is this something that I don't understand?

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


More information about the ofw mailing list