Alex Naslednikov [Mon, 29 Nov 2010 14:27:45 +0000 (14:27 +0000)]
[IPoIB_NDIS6_CM]
LSO revisited.
This patch rearrange LSO flow and makes functions more robust and reusable.
This patch affects regular flow as well (using same code for LSO and non-LSO flows
Tzachi Dar [Thu, 25 Nov 2010 12:25:55 +0000 (12:25 +0000)]
[IBBUS] fix a BS that cause due to access to uninitialized field.
Allocate of PD failed as a result the driver called to destroying PD function. This function access to field in object that was not initialized. Since the function don't use these variables in any way i removed the code from the function.
Alex Naslednikov [Mon, 22 Nov 2010 09:55:12 +0000 (09:55 +0000)]
[IPoIB_NDIS6_CM]
The purpose of __ipoib_complete_reset() is to send to NDIS async compete on reset process accomplishment and set “p_adapter->reset = FALSE”;
But __ipoib_complete_reset() can be called independently from several async threads (i.e. running in parallel), where the main of them are:
1. __ipoib_adapter_reset()
2. Ipoib_pnp_cb()
It seems like bug, but:
1. We check for adapter state within __ipoib_complete_reset() . This is to sync between NDIS and IBAL async PNP events !
2. According to the status, we have 2 possibilites:
a. State == IB_PNP_PORT_REMOVE - than complete the reset now (and ASSERT(p_adapter->reset == TRUE) should be true there))
b. Otherwise (IB_PNP_PORT_ADD), register back to pnp events
i. If succeed, do not complete reset here - reset process will be completed by ipoib_pnp_cb() thread.
ii. If not, reset process will be completed now (ASSERT(p_adapter->reset == TRUE) should be true there)
How it can happen ?
NDIS detected checked_for_hung while IPoIB get PORT_DOWN/UP pnp events
Signed-off by: Alexander Naslednikov (xalex at mellanox.co.il)
Alex Naslednikov [Wed, 17 Nov 2010 09:49:24 +0000 (09:49 +0000)]
[IPoIB_NDIS6_CM]
In order to preserve consistency of the p_port->buf_mgr.recv_pool list, acquire/release recv_lock over the call to __free_received_NBL(), as other calls to __free_received_NBL() do.
Issue is __free_received_NBL() eventually calls __buf_mgr_put_recv().
Stan Smith [Mon, 15 Nov 2010 19:57:28 +0000 (19:57 +0000)]
[TTCP] remove local getopts() parser in favor of standard etc/user/getopt.c.
Allows space/no-space between switch and argument, supports standard Windows help request '/?'.
Alex Naslednikov [Sun, 14 Nov 2010 10:18:43 +0000 (10:18 +0000)]
[IPOIB_NDIS6_CM]
This patch fix the situation when init process fails (say, __ib_mgr_init fails) and then ipoib_restart is called.
Shutter is shut first time at the end of the init process. Thus, if init will fail, shutter will be never shut,
while ipoib_restart will try to alive such shutter.
Alex Naslednikov [Wed, 10 Nov 2010 09:39:41 +0000 (09:39 +0000)]
[IPOIB_NDIS6_CM]
Bugfix:
In a case when SG num is greater than HW can support, IPoIB switches to 'send_copy' flow, but this situation is normal for UD flow
But send_gen(), when falling to 'send_copy' flow, sets the status to NDIS_STATUS_RESOURCES both for CM and UD flow.
[MLNX 2.3.0.6796]
Stan Smith [Mon, 1 Nov 2010 23:33:46 +0000 (23:33 +0000)]
[IPOIB_NDIS6_CM]
Fixes suggested by running prefast
precompile.h - not all strsafe routines are in ntstrsafe.h
mainly function declaration additions.
spacing and tabulation adjustments.
Empty line removal.
Stan Smith [Mon, 1 Nov 2010 23:09:41 +0000 (23:09 +0000)]
[IPoiB_NDIS6_CM]
1. Main fix: handling a situation when NDIS sends ‘pause’ command before the ‘reset’ command was completed
2. Debug prints improvements
3. Time notification was added to IPOIB_DBG_SHUTTER printouts, because of timestamp importance in this case. These debug prints are not in data path, so it’s safe to use them here.
signed-off-by: Alex Naslednikov [xalex@mellanox.co.il], stan.smith <stan.smith@intel.com>
Stan Smith [Sat, 30 Oct 2010 00:10:08 +0000 (00:10 +0000)]
[DAPL2] debug build: only timestamp if sending message to stdout to avoid performance hit
common: print out errors on free build and not just debug builds
Stan Smith [Fri, 15 Oct 2010 21:35:51 +0000 (21:35 +0000)]
[AL] Populate the missing items from __ib_async_event_str[] such that ib_get_async_event_str() reports the correct string for the specified AE_xxx code.
Tested in building & validating winOFED 2.3 pre-RC5.
signed-off-by: stan smith <stan.smith@intel.com>
Stan Smith [Fri, 15 Oct 2010 16:16:37 +0000 (16:16 +0000)]
[ALL] remove all .cdf driver files as they are no longer part of the build process (inf2cat replaces info in .cdf files) svn commit 2969.
Tested by building winOFED 2.3 RC5
Stan Smith [Fri, 15 Oct 2010 15:55:30 +0000 (15:55 +0000)]
[WIX] Correct oversight in WinSock Direct install as disabled. When dperforming a NODRV=1 (NO Drivers) install, installsp.exe was omitted as the IPoIB driver is not an installed feature.
Remove installsp.exe from IPoIB feature and include it with IB tools feature.
Stan Smith [Fri, 15 Oct 2010 15:48:02 +0000 (15:48 +0000)]
[SRP] commit 2967 was incomplete, missed SunMicrosystems SRP dev IDs IBA\Cff00c690ep0108r0001 & IBA\Cff00c690ep0108
Rearranged Dev ID ordering to match pre-2967 commit ordering for clarity.
Stan Smith [Thu, 7 Oct 2010 20:01:21 +0000 (20:01 +0000)]
[DOCS] document Winsock Direct install changes: winOFED default install will install WSD, although WSD is no longer enabled/started by default (use installsp.exe -i) to enable.
Stan Smith [Thu, 7 Oct 2010 20:00:15 +0000 (20:00 +0000)]
[DOCS] document Winsock Direct install changes: winOFED default install will install WSD, although WSD is no longer enabled/started by default (use installsp.exe -i) to enable.
Stan Smith [Thu, 7 Oct 2010 19:51:42 +0000 (19:51 +0000)]
[IPoIB_NDIS6_CM] The patch prevents race with BSOD when NDIS call receive callback of ipoib while
some ipoib global objects are under destruction (like p_adapter ->p_port).
It was tested by night regression run on IPoIB driver
Adding shutter_shut for Adapter Reset flow
Signed-off by: Alexander Naslednikov (xalex at mellanox.co.il)
Stan Smith [Thu, 7 Oct 2010 19:41:10 +0000 (19:41 +0000)]
[IPoIB_NDIS6_CM] NDIS6 IPOIB had a problem with forwarding packets.
The packet would be sent with one fragment size with size 0. The hw would than refuse to send the packet.
signed-off-by: Tzachi Dar <tzachid@mellanox.co.il>
Stan Smith [Fri, 1 Oct 2010 16:56:14 +0000 (16:56 +0000)]
[IPoIB_NDIS6_CM] oops - checked in the wrong set of files for EndPoint initialization; this commits fixes commit 2951 (ipoib_endpt_create() needs p_port passed in).
Leonid Kelly [Mon, 27 Sep 2010 19:32:11 +0000 (19:32 +0000)]
[HCA] Prevent stack corruption
In the case where umv_buf::command is FALSE, the else control segment is taken and a stack variable's address is stored by INIT_UDATA, to be written later in the call to alloc_pd. The stack variable then goes out of scope, so the call to alloc_pd could corrupt the stack.
The fix uses the status local variable as temporary storage, as it is unused until after the call to alloc_pd.
Signed-off-by: Fab Tillier <ftillier@microsoft.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1@2948 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86
Alex Naslednikov [Tue, 21 Sep 2010 15:15:20 +0000 (15:15 +0000)]
[IPoIB] [IPoIB_NDIS6_CM]
Guids supported by several new vendors can’t be distinguished only by first 2 bytes.
This patch adds 3-rd byte of GUID to the translation table
Alex Naslednikov [Wed, 15 Sep 2010 11:05:13 +0000 (11:05 +0000)]
[IPoIB]
DHCP fix (Linux-Windows interop). The patch caused by the change at Client Identifier (CID) format:
The format of Client Identifier Field (CID) was changed.
Alex Naslednikov [Tue, 14 Sep 2010 09:26:45 +0000 (09:26 +0000)]
[IPoIB]
Removing the patch for the bug when NDIS sends OID_GEN_NETWORK_LAYER_ADDRESSES with the list of new addresses with invalid formatting from IPoIB based on NDIS5.
Leonid Kelly [Tue, 14 Sep 2010 09:21:23 +0000 (09:21 +0000)]
[MLX4] Fix ioremap to use consistent caching attribute
When mapping Blue Flame registers to user-mode, the UAR page is first mapped from I/O space to kernel-mode, then from kernel-mode to user-mode. The mapping from I/O space uses the function ioremap, which is hard coded to use MmNonCached as the caching attribute. The subsequent mapping to user-mode specifies MmWriteCombined. On Windows Server 2008 R2, the memory manager catches the inconsistency and preserves the original MmNonCached attribute. This leads to a 200-400% regression in small message latencies due to not write combining when writing the request to the blue flame register.
The following patch adds a caching type as a parameter to ioremap, changes all previous callers to specify MmNonCached except in __map_memory_for_user, which already took a caching type, in which case it forwards the caching type to ioremap.
With this patch, small message latency is identical on Windows Server 2008 and Windows Server 2008 R2.
Signed-off-by: Fab Tillier <ftillier@microsoft.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1@2921 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86