--- 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) );
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 ---