Stan Smith [Tue, 5 Jan 2010 19:05:28 +0000 (19:05 +0000)]
[WINVERBS] winverbs: use separate structure to queue async work
KMDF tracks all requests that pass through an IO queue. Even after a
request has been removed from the queue, the request still maintains a
reference on the queue. Any attempt to delete the queue will block
until all requests holding references on the queue have completed.
To avoid deadlock conditions during cleanup, we need to ensure that
all requests can complete during cleanup. Modify the asynchronous
handling code to queue a separate data structure, so that all requests
can remain on the IO queues.
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1@2653 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86
Stan Smith [Tue, 5 Jan 2010 18:59:21 +0000 (18:59 +0000)]
[IBAL] ib/cm: fix handling failed send completions
__cep_mad_send_cb() assumes that the mad being processed is
associated with the current state of the CEP. This may not be
the case.
For example, for a short lived connection, it was observed that
a REP mad completed with status canceled. This is normal. However,
the user already attempted to disconnect the connection by sending
a DREQ. This left the cep in the DREQ_SENT state by the time that
the REP mad completed. Since the REP status was not success, but the
state was DREQ_SENT, the code assumed that the DREQ had failed and
transitioned the cep into TIMEWAIT. The result is that the DREQ is never
>matched with a DREP or canceled, but holds a reference on the CEP.
Until the DREQ times out (time depends on connection, but easily
up to a minute), attempts to destroy the CEP are blocked.
Fix this by simply discarding any completed sends that were not
sent from the current state of the cep when the completion handler
is invoked. Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1@2652 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86
Stan Smith [Tue, 5 Jan 2010 18:51:23 +0000 (18:51 +0000)]
[IPoIB_NDIS6_CM] fix the wrong length calculation of
first MDL within Net Buffer object.
The actual length of first MDL should be incremented by it's offset
signed-off by: Alexander Naslednikov (xalex at mellanox.co.il)
Sean Hefty [Mon, 4 Jan 2010 19:01:09 +0000 (19:01 +0000)]
ib/cm: fix handling failed send completions
__cep_mad_send_cb() assumes that the mad being processed is
associated with the current state of the CEP. This may not be
the case.
For example, for a short lived connection, it was observed that
a REP mad completed with status canceled. This is normal. However,
the user already attempted to disconnect the connection by sending
a DREQ. This left the cep in the DREQ_SENT state by the time that
the REP mad completed. Since the REP failed, but the state was
DREQ_SENT, the code assumed that the DREQ had failed and transitioned
the cep into TIMEWAIT. The result is that the DREQ is never
matched with a DREP or canceled, but holds a reference on the CEP.
Until the DREQ times out (time depends on connection, but easily
up to a minute), attempts to destroy the CEP are blocked.
Fix this by simply discarding any completed sends that were not
sent from the current state of the cep when the completion handler
is invoked.
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1@2650 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86
Sean Hefty [Mon, 4 Jan 2010 19:00:54 +0000 (19:00 +0000)]
KMDF tracks all requests that pass through an IO queue. Even after a
request has been removed from the queue, the request still maintains a
reference on the queue. Any attempt to delete the queue will block
until all requests holding references on the queue have completed.
To avoid deadlock conditions during cleanup, we need to ensure that
all requests can complete during cleanup. Modify the asynchronous
handling code to queue a separate data structure, so that all requests
can remain on the IO queues.
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1@2649 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86
stansmith [Tue, 29 Dec 2009 21:31:52 +0000 (21:31 +0000)]
[DOCS] manual.htm - Corrected uDAT/uDAPL discussion as uDAPL v1.1 provider is no longer supported. Fixed lingering %ProgramFiles(x86)% install path problems; removed (x86) as WinOF is installed as %ProgramFIles%\ on all systems. Updated SRP discussion to include a how to configure a Linx/OFED SRP target (vdisk+BLOCKIO) accessible from Windows.
stansmith [Thu, 24 Dec 2009 00:26:19 +0000 (00:26 +0000)]
[DAPL2] tolerate a disconnect callback racing ahead during EP disconnect(), do not return an error on invalid handle.
update .rc file to reflect IBAL provider.
stansmith [Tue, 15 Dec 2009 20:53:37 +0000 (20:53 +0000)]
[WINOF] Install previous OpenSM version 3.0.0 as an emergency SM backup; 2-2 only. Reference/install OpenSM related files from a single file instead of OpenSM_service.inc & tools.inc.
stansmith [Tue, 15 Dec 2009 20:39:53 +0000 (20:39 +0000)]
[OPENSM] added OpenSM version to osmtest.rc file description string for easy ID. osmtest.rc was not being compiled in, added osmtest.rc file to SOURCES file.
stansmith [Mon, 14 Dec 2009 19:27:49 +0000 (19:27 +0000)]
[DAPL] WinOF 2.2 - removed DAPL V1; not sure how this came into the 2.2 branch as the branch was off the HEAD and DAPL was removed from HEAD a few weeks ago?
stansmith [Fri, 11 Dec 2009 21:14:34 +0000 (21:14 +0000)]
[WINOF] introduce new cmds 'allnf path' & 'compnf path' to work around a bug in the WDK build env. If one forces a build (compf ulp\ipoib) for IPoIB or IPoIB_NDIS6_CM then 'all' instances of ipoib.sys are deleted and only the specified path component is rebuild leaving an incomplete build. 'compnf/allnf ulp\ipoib' allows nmake dependancies to make the correct rebuild descision without deleting all instances of ipoib.sys.
The RDMA address should be base + offset, in network byte order. Rather
than trying to convert the offset into network byte order, then add that
to the base, which is already in network byte order, we need to convert
the base to host order, add the offset, then convert the results back.
This allows the winverbs ND provider to pass the ndmw test.
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1@2620 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86
The RDMA address should be base + offset, in network byte order. Rather
than trying to convert the offset into network byte order, then add that
to the base, which is already in network byte order, we need to convert
the base to host order, add the offset, then convert the results back.
This allows the winverbs ND provider to pass the ndmw test.
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1@2619 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86
tzachid [Wed, 2 Dec 2009 09:41:13 +0000 (09:41 +0000)]
[IPoIB NDIS 6.0 CM] (mlnx 5191)
Fixing 2 bugs:
1. Bug caused by NDIS 6.5 offloadmisc WHQL test: it assumes that the driver version is 6.2 and sends structs with bigger size
2. Internal bug at offload handling.
tzachid [Tue, 1 Dec 2009 16:37:01 +0000 (16:37 +0000)]
[IPoIB NDIS 6.0 CM]
Bug at LSO flow.
When header is contained in 2 first SG Elements, or the total number of the SG List > MAX_SGE_NUM,
we enter send_copy flow. So, the p_send_buf should be at least 64K. (mlnx 5209)
tzachid [Mon, 30 Nov 2009 15:22:32 +0000 (15:22 +0000)]
[IPoIB NDIS 6.0 CM]
Upgrade revision to NDIS 6.1 because of bug at WHQL tests:
When running NDIS6.5 test on 6.0 driver, it starts to execute VMQ tests that not supported at IPoIB driver.
(mlnx 5136)
leonidk [Tue, 17 Nov 2009 15:03:51 +0000 (15:03 +0000)]
[MLX4] g_stat: added more prints and flags
added support for g_stat structure for MLX4_BUS driver + MAD tracing mechanism.
MAD tracing mechanism works under the control of flags, set in new Registry mlx4_bus parameter StatFlags.
The mechanism prints to debugger the IB headers of packets sent over MLX transport, i.e. on QP0 and QP1. [mlnx: 5138]
The flags are:
0x0001 - print LRH
0x0002 - print BTH
0x0004 - print DETH
0x0008 - print GRH (it won't print id the GRH is absent)
0x0010 - print some WQE info
0x0020 - print some more UD header info
0x0040 - print some send WR info
0x0080 - MLX WQE dump
leonidk [Tue, 17 Nov 2009 14:12:21 +0000 (14:12 +0000)]
[IPOIB, IBBUS] g_stat: first patch of several, adding and populating global g_stat structure to the drivers of IB stack
For debug purposes.
Usable in both checked and free version.
Usage: open Watch Window in Debugger and add ipoib!g_stat or ibbus!g_stat.
An example of a real problem: MLX4 driver is stuck on unload.
It can happen when IBAL is stuck on resource reclamation.
The reclamation is being done in one of IBAL threads, which are started on IBAL's start up.
So you'd like to look into this thread.
But where it is ?
You can find it by printing ALL the threads of System process and looking for ibbus in their stack traces.
It can take minutes.
After this patch you can do that in 3 seconds this way:
1. open Watch Window in WinDbg and add ibbus!g_stat.
2. open
ibbus!g_stat->Drv->Gp_async_obj_mgr->Thread_pool->P_thread[0]->Osd->P_thread
This field contains the address of the thread, you wanted.
stansmith [Mon, 16 Nov 2009 18:44:54 +0000 (18:44 +0000)]
[TRUNK] Change the cl_pfn_fmap_cmp_t compare function to return an 'int' instead of 'intn_t' as int is a better return value match for standard compare functions like memcmp(), cl_memcmp(), qsort() and the like.
Additionally the change removes some usage of the non-standard C type 'intn_t' in favor of the basic C data type 'int'.
Files impacted:
inc\complib\cl_fleximap.h line #185 cl_pfn_fmap_cmp_t function returns 'int' instead of 'intn_t'.
core\al\kernel\al_ioc_pnp.c
core\al\kernel\al_pnp.c
ulp\wsd\user\ibsp_ip.c
ulp\ipoib\kernel\ipoib_port.c
ulp\ipoib\kernel\ipoib_port.cpp
ulp\wsd\user\ibspproto.h
Tested by:
building WinOF installers for wlh, win7, wnet & wxp
installing newly built installers.
Running DAPL tests, IPoIB tests & opensm tests.
Signed-off-by: stan smith <stan.smith@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1@2559 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86
stansmith [Thu, 12 Nov 2009 23:19:40 +0000 (23:19 +0000)]
[WINOF] remove windows 7 existance check as it's now a default OS flavor. Sign .exe files used during a WInOF install to eliminate win7 popup notifiers asking to proceed. ndinstall.exe, installsp.exe for install, devman.exe on uninstall.