Hello,
  Patches are good to go for 2.2; I find no unusual IPoIB behaviors in HPC, 
ping and/or DAPL.
I was considering committing these patches into SVN\branches\wof2-2, should I 
also commit into trunk?

Stan.

--- Begin Message ---
This patch fixes the same problem
when reporting the statistic twice
for IPoIB based on NDIS 5.3

Index: ipoib_port.c
===================================================================
--- ipoib_port.c        (revision 5436)
+++ ipoib_port.c        (working copy)
@@ -2136,7 +2136,6 @@
                }
                else
                {
-                       ip_stat_sel_t               ip_stat;
                        p_desc->len =
                                len + sizeof(eth_hdr_t) -
sizeof(ipoib_hdr_t);
                        if( p_dst->h_mcast)
@@ -2147,22 +2146,18 @@

p_dst->dgid.multicast.raw_group_id[13] == 0xFF )
                                {
                                        p_desc->type = PKT_TYPE_BCAST;
-                                       ip_stat = IP_STAT_BCAST_BYTES;
                                }
                                else
                                {
                                        p_desc->type = PKT_TYPE_MCAST;
-                                       ip_stat = IP_STAT_MCAST_BYTES;
                                }
                        }
                        else
                        {
                                p_desc->type = PKT_TYPE_UCAST;
-                               ip_stat = IP_STAT_UCAST_BYTES;

                        }
                        cl_qlist_insert_tail( p_done_list,
&p_desc->item.list_item );
-                       ipoib_inc_recv_stat( p_port->p_adapter,ip_stat ,
p_desc->len );
                }
        }


-----Original Message-----
From: Alex Naslednikov
Sent: Monday, January 04, 2010 1:02 PM
To: [email protected]
Cc: Tzachi Dar
Subject: [ofw] [Patch] [IPoIB_NDIS6_CM] Calling receive statistics twice

This patch fixes the problem when IPoIB increments the receive
statistics twice Signed-off by: Tzachi Dar (tzachid at mellanox.co.il)
Index:
D:/windows/MLNX_WinOF_trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp
===================================================================
--- D:/windows/MLNX_WinOF_trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp
(revision 5415)
+++ D:/windows/MLNX_WinOF_trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp

+++ (revision 5416)
@@ -2958,7 +2958,6 @@
 {
  NDIS_STATUS       status;
  uint32_t       pkt_filter;
- ip_stat_sel_t      type;
  //NDIS60
  NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO  chksum;
  //NDIS_TCP_IP_CHECKSUM_PACKET_INFO chksum; @@ -2980,14 +2979,12 @@
    pkt_filter & NDIS_PACKET_TYPE_DIRECTED )
   {
    /* OK to report. */
-   type = IP_STAT_UCAST_BYTES;
    status = NDIS_STATUS_SUCCESS;
    IPOIB_PRINT( TRACE_LEVEL_VERBOSE, IPOIB_DBG_ERROR,
    ("Received UCAST PKT.\n"));
   }
   else
   {
-   type = IP_STAT_DROPPED;
    status = NDIS_STATUS_FAILURE;
    IPOIB_PRINT( TRACE_LEVEL_ERROR, IPOIB_DBG_ERROR,
     ("Received UCAST PKT with ERROR !!!!\n")); @@ -2998,14 +2995,12 @@
    pkt_filter & NDIS_PACKET_TYPE_BROADCAST )
   {
    /* OK to report. */
-   type = IP_STAT_BCAST_BYTES;
    status = NDIS_STATUS_SUCCESS;
    IPOIB_PRINT( TRACE_LEVEL_VERBOSE, IPOIB_DBG_RECV,
    ("Received BCAST PKT.\n"));
   }
   else
   {
-   type = IP_STAT_DROPPED;
    status = NDIS_STATUS_FAILURE;
    IPOIB_PRINT( TRACE_LEVEL_ERROR, IPOIB_DBG_ERROR,
    ("Received BCAST PKT with ERROR !!!!\n")); @@ -3017,14 +3012,12 @@
    pkt_filter & NDIS_PACKET_TYPE_MULTICAST )
   {
    /* OK to report. */
-   type = IP_STAT_MCAST_BYTES;
    status = NDIS_STATUS_SUCCESS;
    IPOIB_PRINT( TRACE_LEVEL_VERBOSE, IPOIB_DBG_RECV,
    ("Received UCAST PKT.\n"));
   }
   else
   {
-   type = IP_STAT_DROPPED;
    status = NDIS_STATUS_FAILURE;
    IPOIB_PRINT( TRACE_LEVEL_ERROR, IPOIB_DBG_ERROR,
    ("Received MCAST PKT with ERROR !!!!\n")); @@ -3034,7 +3027,6 @@

  if( status != NDIS_STATUS_SUCCESS )
  {
-  ipoib_inc_recv_stat( p_port->p_adapter, type, 0, 0 );
   /* Return the receive descriptor to the pool. */
   __buf_mgr_put_recv( p_port, p_desc, NULL );
   IPOIB_PRINT_EXIT( TRACE_LEVEL_ERROR, IPOIB_DBG_ERROR, @@ -3088,7
+3080,6 @@
   (void*)(uintn_t)chksum.Value;
   break;
  }
- ipoib_inc_recv_stat( p_port->p_adapter, type, p_desc->len, 1 );

  IPOIB_EXIT( IPOIB_DBG_RECV );
  return IB_SUCCESS;

_______________________________________________
ofw mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw

--- End Message ---
--- Begin Message ---
This patch fixes the improper reporting of IPoIB port rate and removes
obsolete OID_GEN_LINK_SPEED

signed-off by: Alexander Naslednikov (xalex at mellanox.co.il)

Index: D:/windows/MLNX_WinOF-2_1/ulp/ipoib_NDIS6_CM/kernel/ipoib_adapter.cpp
===================================================================
--- D:/windows/MLNX_WinOF-2_1/ulp/ipoib_NDIS6_CM/kernel/ipoib_adapter.cpp       
(revision 5450)
+++ D:/windows/MLNX_WinOF-2_1/ulp/ipoib_NDIS6_CM/kernel/ipoib_adapter.cpp       
(revision 5451)
@@ -52,6 +52,8 @@
 #define TWELVE_X_IN_100BPS     300000000


+
+
 /* Declarations */
 static void
 adapter_construct(
@@ -596,7 +598,7 @@
        link_state.MediaConnectState = MediaConnectStateDisconnected;
        link_state.MediaDuplexState = MediaDuplexStateFull;
        link_state.XmitLinkSpeed =
-       link_state.RcvLinkSpeed = IPOIB_MEDIA_MAX_SPEED;
+       link_state.RcvLinkSpeed = SET_PORT_RATE_BPS( p_adapter->port_rate );
        link_state.PauseFunctions = NdisPauseFunctionsSendAndReceive;

        IPOIB_INIT_NDIS_STATUS_INDICATION(&status_indication,
@@ -742,6 +744,7 @@

                cl_obj_lock( &p_adapter->obj );
                old_state = p_adapter->state;
+               ASSERT( p_adapter->state != IB_PNP_PORT_REMOVE );
                p_adapter->state = IB_PNP_PORT_DOWN;
                cl_obj_unlock( &p_adapter->obj );
                status = IB_SUCCESS;
@@ -771,7 +774,7 @@
                                link_state.MediaConnectState = 
MediaConnectStateDisconnected;
                                link_state.MediaDuplexState = 
MediaDuplexStateFull;
                                link_state.XmitLinkSpeed =
-                               link_state.RcvLinkSpeed = IPOIB_MEDIA_MAX_SPEED;
+                               link_state.RcvLinkSpeed =  SET_PORT_RATE_BPS( 
p_adapter->port_rate );
                                link_state.PauseFunctions = 
NdisPauseFunctionsSendAndReceive;

                                
IPOIB_INIT_NDIS_STATUS_INDICATION(&status_indication,
@@ -848,7 +851,7 @@
                        link_state.MediaConnectState = 
MediaConnectStateDisconnected;
                        link_state.MediaDuplexState = MediaDuplexStateFull;
                        link_state.XmitLinkSpeed =
-                       link_state.RcvLinkSpeed = IPOIB_MEDIA_MAX_SPEED;
+                       link_state.RcvLinkSpeed = SET_PORT_RATE_BPS( 
p_adapter->port_rate );
                        link_state.PauseFunctions = 
NdisPauseFunctionsSendAndReceive;

                        IPOIB_INIT_NDIS_STATUS_INDICATION(&status_indication,
@@ -1227,7 +1230,7 @@
                        link_state.MediaConnectState = 
MediaConnectStateConnected;
                        link_state.MediaDuplexState = MediaDuplexStateFull;
                        link_state.XmitLinkSpeed =
-                       link_state.RcvLinkSpeed = IPOIB_MEDIA_MAX_SPEED;
+                       link_state.RcvLinkSpeed =  SET_PORT_RATE_BPS( 
p_adapter->port_rate );
                        link_state.PauseFunctions = 
NdisPauseFunctionsSendAndReceive;
                        IPOIB_INIT_NDIS_STATUS_INDICATION(&status_indication,
                                                                   
p_adapter->h_adapter,
@@ -1287,7 +1290,7 @@
                link_state.MediaConnectState = MediaConnectStateDisconnected;
                link_state.MediaDuplexState = MediaDuplexStateFull;
                link_state.XmitLinkSpeed =
-               link_state.RcvLinkSpeed = IPOIB_MEDIA_MAX_SPEED;
+               link_state.RcvLinkSpeed =  SET_PORT_RATE_BPS( 
p_adapter->port_rate );
                link_state.PauseFunctions = NdisPauseFunctionsSendAndReceive;

                IPOIB_INIT_NDIS_STATUS_INDICATION(&status_indication,
Index: D:/windows/MLNX_WinOF-2_1/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp
===================================================================
--- D:/windows/MLNX_WinOF-2_1/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp  
(revision 5450)
+++ D:/windows/MLNX_WinOF-2_1/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp  
(revision 5451)
@@ -6033,7 +6033,8 @@
                        link_state.Header.Size = sizeof(NDIS_LINK_STATE);
                        link_state.MediaConnectState = 
MediaConnectStateDisconnected;
                        link_state.MediaDuplexState = MediaDuplexStateFull;
-                       link_state.XmitLinkSpeed = link_state.RcvLinkSpeed = 
IPOIB_MEDIA_MAX_SPEED;
+                       link_state.XmitLinkSpeed =
+                       link_state.RcvLinkSpeed  = SET_PORT_RATE_BPS( 
p_port->p_adapter->port_rate );

                        IPOIB_INIT_NDIS_STATUS_INDICATION(&status_indication,
                                                                
p_port->p_adapter->h_adapter,
Index: D:/windows/MLNX_WinOF-2_1/ulp/ipoib_NDIS6_CM/kernel/ipoib_adapter.h
===================================================================
--- D:/windows/MLNX_WinOF-2_1/ulp/ipoib_NDIS6_CM/kernel/ipoib_adapter.h 
(revision 5450)
+++ D:/windows/MLNX_WinOF-2_1/ulp/ipoib_NDIS6_CM/kernel/ipoib_adapter.h 
(revision 5451)
@@ -495,7 +495,9 @@
         (_pStatusIndication)->StatusBufferSize = _BufSize;                     
            \
     }

-// TODO: Set this according to device
 #define IPOIB_MEDIA_MAX_SPEED  40000000000

+#define SET_PORT_RATE_BPS(x) (uint64_t(100) * x)
+
+
 #endif /* _IPOIB_ADAPTER_H_ */
Index: D:/windows/MLNX_WinOF-2_1/ulp/ipoib_NDIS6_CM/kernel/ipoib_driver.cpp
===================================================================
--- D:/windows/MLNX_WinOF-2_1/ulp/ipoib_NDIS6_CM/kernel/ipoib_driver.cpp        
(revision 5450)
+++ D:/windows/MLNX_WinOF-2_1/ulp/ipoib_NDIS6_CM/kernel/ipoib_driver.cpp        
(revision 5451)
@@ -64,154 +64,8 @@
 PDRIVER_OBJECT                         g_p_drv_obj;


-#if 0
-static const NDIS_OID SUPPORTED_OIDS[] =
-{
-       OID_GEN_SUPPORTED_LIST,
-       OID_GEN_HARDWARE_STATUS,
-       OID_GEN_MEDIA_SUPPORTED,
-       OID_GEN_MEDIA_IN_USE,
-       OID_GEN_MAXIMUM_LOOKAHEAD,
-       OID_GEN_MAXIMUM_FRAME_SIZE,
-       OID_GEN_LINK_SPEED,
-       OID_GEN_TRANSMIT_BUFFER_SPACE,
-       OID_GEN_RECEIVE_BUFFER_SPACE,
-       OID_GEN_TRANSMIT_BLOCK_SIZE,
-       OID_GEN_RECEIVE_BLOCK_SIZE,
-       OID_GEN_VENDOR_ID,
-       OID_GEN_VENDOR_DESCRIPTION,
-       OID_GEN_CURRENT_PACKET_FILTER,
-       OID_GEN_CURRENT_LOOKAHEAD,
-       OID_GEN_DRIVER_VERSION,
-       OID_GEN_MAXIMUM_TOTAL_SIZE,
-       OID_GEN_PROTOCOL_OPTIONS,
-       OID_GEN_MAC_OPTIONS,
-       OID_GEN_MEDIA_CONNECT_STATUS,
-       OID_GEN_MAXIMUM_SEND_PACKETS,
-       OID_GEN_NETWORK_LAYER_ADDRESSES,
-       OID_GEN_VENDOR_DRIVER_VERSION,
-       OID_GEN_PHYSICAL_MEDIUM,
-       OID_GEN_XMIT_OK,
-       OID_GEN_RCV_OK,
-       OID_GEN_XMIT_ERROR,
-       OID_GEN_RCV_ERROR,
-       OID_GEN_RCV_NO_BUFFER,
-       OID_GEN_DIRECTED_BYTES_XMIT,
-       OID_GEN_DIRECTED_FRAMES_XMIT,
-       OID_GEN_MULTICAST_BYTES_XMIT,
-       OID_GEN_MULTICAST_FRAMES_XMIT,
-       OID_GEN_BROADCAST_BYTES_XMIT,
-       OID_GEN_BROADCAST_FRAMES_XMIT,
-       OID_GEN_DIRECTED_BYTES_RCV,
-       OID_GEN_DIRECTED_FRAMES_RCV,
-       OID_GEN_MULTICAST_BYTES_RCV,
-       OID_GEN_MULTICAST_FRAMES_RCV,
-       OID_GEN_BROADCAST_BYTES_RCV,
-       OID_GEN_BROADCAST_FRAMES_RCV,
-       OID_802_3_PERMANENT_ADDRESS,
-       OID_802_3_CURRENT_ADDRESS,
-       OID_802_3_MULTICAST_LIST,
-       OID_802_3_MAXIMUM_LIST_SIZE,
-       OID_802_3_MAC_OPTIONS,
-       OID_802_3_RCV_ERROR_ALIGNMENT,
-       OID_802_3_XMIT_ONE_COLLISION,
-       OID_802_3_XMIT_MORE_COLLISIONS,
-       OID_TCP_TASK_OFFLOAD
-};
-#endif

-NDIS_OID NICSupportedOidsTest[] =
-{
-    OID_GEN_SUPPORTED_LIST,
-    OID_GEN_HARDWARE_STATUS,
-    OID_GEN_MEDIA_SUPPORTED,
-    OID_GEN_MEDIA_IN_USE,
-    OID_GEN_MAXIMUM_LOOKAHEAD,
-    OID_GEN_MAXIMUM_FRAME_SIZE,
-    OID_GEN_TRANSMIT_BUFFER_SPACE,
-    OID_GEN_RECEIVE_BUFFER_SPACE,
-    OID_GEN_TRANSMIT_BLOCK_SIZE,
-    OID_GEN_RECEIVE_BLOCK_SIZE,
-    OID_GEN_VENDOR_ID,
-    OID_GEN_VENDOR_DESCRIPTION,
-    OID_GEN_VENDOR_DRIVER_VERSION,
-    OID_GEN_CURRENT_PACKET_FILTER,
-    OID_GEN_CURRENT_LOOKAHEAD,
-    OID_GEN_DRIVER_VERSION,
-    OID_GEN_MAXIMUM_TOTAL_SIZE,
-    OID_GEN_MAC_OPTIONS,
-    OID_GEN_MAXIMUM_SEND_PACKETS,
-    OID_GEN_XMIT_OK,
-    OID_GEN_RCV_OK,
-    OID_GEN_XMIT_ERROR,
-    OID_GEN_RCV_ERROR,
-    OID_GEN_RCV_NO_BUFFER,
-    OID_GEN_RCV_CRC_ERROR,
-    OID_GEN_TRANSMIT_QUEUE_LENGTH,
-    OID_802_3_PERMANENT_ADDRESS,
-    OID_802_3_CURRENT_ADDRESS,
-    OID_802_3_MULTICAST_LIST,
-    OID_802_3_MAXIMUM_LIST_SIZE,
-    OID_802_3_RCV_ERROR_ALIGNMENT,
-    OID_802_3_XMIT_ONE_COLLISION,
-    OID_802_3_XMIT_MORE_COLLISIONS,
-    OID_802_3_XMIT_DEFERRED,
-    OID_802_3_XMIT_MAX_COLLISIONS,
-    OID_802_3_RCV_OVERRUN,
-    OID_802_3_XMIT_UNDERRUN,
-    OID_802_3_XMIT_HEARTBEAT_FAILURE,
-    OID_802_3_XMIT_TIMES_CRS_LOST,
-    OID_802_3_XMIT_LATE_COLLISIONS,

-#if !BUILD_W2K
-    OID_GEN_PHYSICAL_MEDIUM,
-#endif
-
-    OID_TCP_TASK_OFFLOAD,
-
-/* powermanagement */
-
-    OID_PNP_CAPABILITIES,
-    OID_PNP_SET_POWER,
-    OID_PNP_QUERY_POWER,
-    OID_PNP_ADD_WAKE_UP_PATTERN,
-    OID_PNP_REMOVE_WAKE_UP_PATTERN,
-    OID_PNP_ENABLE_WAKE_UP,
-
-
-/* custom oid WMI support */
-//    OID_CUSTOM_PERF_COUNTERS,
- //   OID_CUSTOM_STRING,
-
-    OID_GEN_RECEIVE_SCALE_CAPABILITIES,
-    OID_GEN_RECEIVE_SCALE_PARAMETERS,
-
-//
-// new and required for NDIS 6 miniports
-//
-    OID_GEN_LINK_PARAMETERS,
-    OID_GEN_INTERRUPT_MODERATION,
-    OID_GEN_STATISTICS,
-
-/* Offload */
-    OID_TCP_OFFLOAD_CURRENT_CONFIG,
-    OID_TCP_OFFLOAD_PARAMETERS,
-    OID_TCP_OFFLOAD_HARDWARE_CAPABILITIES,
-    OID_OFFLOAD_ENCAPSULATION,
-
-/* Header - Data seperation */
-   // OID_GEN_HD_SPLIT_PARAMETERS,
- //   OID_GEN_HD_SPLIT_CURRENT_CONFIG,
-
-/* VLAN */
-  //  OID_ADD_VALN_ID,
- //   OID_DELETE_VLAN_ID,
-
-/* Set MAC */
-  //  OID_SET_MAC_ADDRESS
-
-};
-
 static const NDIS_OID SUPPORTED_OIDS[] =
 {
     OID_GEN_SUPPORTED_LIST,
@@ -1167,11 +1021,11 @@
        gat.Header.Revision = 
NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES_REVISION_1;
        gat.Header.Size = sizeof(NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES);

-       gat.MediaType = NdisMedium802_3;
-       gat.MaxXmitLinkSpeed = IPOIB_MEDIA_MAX_SPEED;
-       gat.MaxRcvLinkSpeed = IPOIB_MEDIA_MAX_SPEED;
-       gat.XmitLinkSpeed = IPOIB_MEDIA_MAX_SPEED; //TODO NDIS60 
NDIS_LINK_SPEED_UNKNOWN
-       gat.RcvLinkSpeed = IPOIB_MEDIA_MAX_SPEED; // TODO NDIS60 
NDIS_LINK_SPEED_UNKNOWN ???
+       gat.MediaType =                 NdisMedium802_3;
+       gat.MaxXmitLinkSpeed =  IPOIB_MEDIA_MAX_SPEED;
+       gat.MaxRcvLinkSpeed =   IPOIB_MEDIA_MAX_SPEED;
+       gat.XmitLinkSpeed =             NDIS_LINK_SPEED_UNKNOWN;
+       gat.RcvLinkSpeed =      NDIS_LINK_SPEED_UNKNOWN;

        gat.MediaConnectState = MediaConnectStateConnected; //TODO NDIS60 Check 
the current state
        gat.MediaDuplexState = MediaDuplexStateFull;
@@ -2347,44 +2201,6 @@
                        }
                        break;

-               case OID_GEN_LINK_SPEED:
-                       IPOIB_PRINT( TRACE_LEVEL_INFORMATION,IPOIB_DBG_OID,
-                               ("Port %d received query for 
OID_GEN_LINK_SPEED\n", port_num) );
-                       if (oid_info.buf_len < buf_len)
-                       {
-                               break;
-                       }
-
-                       cl_obj_lock( &p_adapter->obj );
-                       switch( p_adapter->state )
-                       {
-                       case IB_PNP_PORT_ADD:
-                               /* Mark the adapter as pending an OID */
-                               p_adapter->pending_query = TRUE;
-
-                               /* Save the request parameters. */
-                               p_adapter->query_oid = oid_info;
-                               p_adapter->query_oid.p_pending_oid = 
pNdisRequest;
-
-                               IPOIB_PRINT( 
TRACE_LEVEL_INFORMATION,IPOIB_DBG_OID,
-                                       ("Port %d returning 
NDIS_STATUS_PENDING\n", port_num) );
-                               status = NDIS_STATUS_PENDING;
-                               break;
-
-                       case IB_PNP_PORT_REMOVE:
-                               IPOIB_PRINT( 
TRACE_LEVEL_INFORMATION,IPOIB_DBG_OID,
-                                       ("Port %d returning 
NDIS_STATUS_NOT_ACCEPTED\n", port_num) );
-                               status = NDIS_STATUS_NOT_ACCEPTED;
-                               break;
-
-                       default:
-                               CL_ASSERT( p_adapter->p_port );
-                               info = p_adapter->port_rate;
-                               break;
-                       }
-                       cl_obj_unlock( &p_adapter->obj );
-                       break;
-
                case OID_GEN_TRANSMIT_BUFFER_SPACE:
                        IPOIB_PRINT( TRACE_LEVEL_INFORMATION,IPOIB_DBG_OID,
                                ("Port %d received query for 
OID_GEN_TRANSMIT_BUFFER_SPACE\n", port_num) );

Attachment: ipoib_ndis6_cm_RATE.patch
Description: ipoib_ndis6_cm_RATE.patch

_______________________________________________
ofw mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw

--- End Message ---
_______________________________________________
ofw mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw

Reply via email to