[ND] reverting back to fake ND sources file so build out-of-svn works again.
Once MS supplied sources file actually builds something useful, will reinstate their sources file.
[HW] Pass IRP_MN_QUERY_INTERFACE IRP down the stack.
This patch changes the HCA driver to pass any IRP_MN_QUERY_INTERFACE IRP down the stack if the interface is supported, after setting the IRP status to STATUS_SUCCESS. The bottom-most driver will complete the IRP without changing the status.
Signed-off-by: Fab Tillier <ftillier@microsoft.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1@2093 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86
[WinOF]
buildrelease.bat - for compf & allf - verify input path exists; protect against bad typists/self.
README.txt - update how2 doc with current paths.
Release_notes.htm - added MS HPC driver install link to HPC install discussion.
signDrivers.bat - be explicit as to which cert-store the cert comes from (self-doc).
[DAPL2] cleanup/simpleify
dt-cli.bat standardize time output, skip 'finished test xxx' messages where start is still on the screen.
dt-svr.bat - exit with correct error code.
This patch fixes issues with connection establishment for NetworkDirect. The root cause of the issue is 'too many cooks' - CIDs exposed to user-mode should not be destroyed in the kernel code without explicit request from the user. Otherwise, the CID can get recycled in the kernel for the same process and improperly freed when the stale CID is released by the application (multiple connection objects in the app have the same CID.)
Unfortunately, the fix is not simple. The QP references the CEP, so QP destruction frees the CEP, even if there's a reference to that CEP left in the application. Removing the CEP reference form the QP solves this problem, but deadlocks the app if it destroys the QP before the CEP, since the QP is used to queue connection-related IRPs, and the CEP uses the QP as its context and so holds a reference on it.
This patch does the following:
- Remove CEP reference for ND related QP.
- Remove ND connection related IRP queue from QP.
- Remove ND IRP handling from CEP manager.
- Add a function to CEP manager to reference the context associated with a CEP if the context is non-NULL.
- Move ND connection related IRP management into al_ndi_cm.c, in nd_csq_t structure.
As part of testing, I needed to add NotifyDisconnect functionality, so this is also included in the patch.
Note that the patch depends on Sean's previous patch to change kal_cep_destroy to allow silently dropping a REQ. I did not remove Sean's previous changes from this patch, so they are duplicated here. This allows the patch to be applied and build.
-Fab
Signed-off-by: Fab Tillier <ftillier@microsoft.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1@2079 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86
[WinOF] Windows 7 support
buildrelease.bat - use 7068 WDK
build-oFA-dist.bat - Win7 support; collect OS variants prior to zip, facilitates win7 or not support.
signDriver.bat - delayed env var expansion bug: replace %CD%\arch with !CD! as pushd does update %CD%.
stansmith [Mon, 30 Mar 2009 22:49:25 +0000 (22:49 +0000)]
[WinOF] Using the WIX preprocessor OS*\arch*\wof.wxs files (all 10 of them) have been distilled down to be manageable. WIX common install sections are now included from WinOF\WIX\common\.
leonidk [Sun, 29 Mar 2009 16:06:32 +0000 (16:06 +0000)]
[MLX4_BUS] Bad order of operations in mlx4_ib teardown process. [mlnx: 4208]
The bug is that the driver performs "CLOSE_PORT" command prior to closing all resources (such as QPs).
In some cases it causes loss of completions.
According to PRM:
18.2 ConnectX Driver Teardown and Re-initialization
The HCA can be shut down (and re-initialized/restarted later on) by software. This operation is performed while the system shuts down gracefully or when PCI bus re-enumeration and memory re-allocation is required. In this case, software should perform the following steps:
•Stop HCA operations (tear-down all QPs and flush WQEs if required).
•Take down the network links by executing the CLOSE_PORT command.
leonidk [Sun, 29 Mar 2009 15:40:56 +0000 (15:40 +0000)]
[CORE,HW] remove PDO from the upper HCA interface. [mlnx: 4197]
This patch removes p_hca_dev field of the upper CA interface (ci_interface_t), which contains PDO of HCA device.
IBBUS, now sitting over HCA, gets this PDO in add_device function and stores it (in this patch) in new p_hca_dev field in IBAL CA object.
All the usages of ci_interface_t.p_hca_dev field is replaced by usage of p_hca_dev in IBAL CA object.
p_hca_obj field, added in 2019 patch in RDMA_INTERFACE_VERBS, removed and placed instead of p_hca_dev in ci_interface_t.
Removing of PDO filed from the interface required changing of ib_register_ca prototype (for technical reasons).
It is - an interface function, so the interface version number was increased (IB_CI_INTERFACE_VERSION=5).
leonidk [Sun, 29 Mar 2009 15:27:25 +0000 (15:27 +0000)]
[IBAL] make IBBUS start up synchronous. event-based implementation.
IBBUS start up was two-phased by design, because HCA, sitting in another stack, could have come later them IBAL.
Now it can't happen. So i added a wait on event at the end of the first phase, which is posted at the end of the second phase - PnP notification on arrival of HCA.
aestrin [Tue, 24 Mar 2009 15:47:54 +0000 (15:47 +0000)]
[QLGC VNIC] VNIC configuration tool.
Part of the solution for having a vendor defined device created by ibiou. This tool sends device IOCTLs to IBIOU for listing the reachable IOCs and for creation of child PDOs.
Submitted by Deepak Gupta (deepal.gupta@qlogic.com)
leonidk [Tue, 24 Mar 2009 14:33:44 +0000 (14:33 +0000)]
[IBAL] Only create CEPs for REQs that matched to a listen.
Currently, the CM creates a CEP for an incoming REQ before matching to either a listen or a Peer-to-Peer connection request. As Peer-to-Peer is not supported, this means that CEPs are created before matching the incoming REQ to a listen. In the case where there is no listen, this will result in CEPs being created, and then queued for destruction to the timewait timer callback. Because the CEPs have a timewait time of zero, the timer callback runs as fast as REQs are received, severely affecting system responsiveness.
This patch moves the CEP creation after matching against listens, avoiding creation altogether if there is no listening endpoint.
Signed-off-by: Fab Tillier <ftillier@microsoft.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1@2042 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86
leonidk [Mon, 23 Mar 2009 18:49:29 +0000 (18:49 +0000)]
[CORE] Expose vendor defined device in ibiou.
IBIOU driver doesn't create child PDO's on discovering a EVIC IOC.
It's behavior for SRP target IOCs is not altered and child devices for SRP targets will get created on their discovery.
IBIOU keeps a global list of reachable IOCs in iou_globals. IBIOU add/delete entries in this list on IOC ADD and IOC REMOVE PnP events.
User mode utility "qlgcvnic_config" is used to list all the reachable IOCs to the user and then to create the VNIC PDOs.
"qlgcvnic_config" uses device IOCTLs to communicate with the IBIOU driver.
IBIOU creates the devices only if sees that EVIC IOC is reachable from the particular CA.
"qlgcvnic_config" utility writes this device information into the registry also, so that IBIOU can pick up these device creation information on
next reboot.
In initialization phase, IBIOU reads the child device information from the registry and makes a list of VNIC child devices to be created.
On each IOC add events, it traverses the child device list (prepared during initialization) and create the child PDO for matching child device entries.
Signed off by: Deepak Gupta [deepak.gupta@qlogic.com]
stansmith [Mon, 23 Mar 2009 15:49:47 +0000 (15:49 +0000)]
[WinOF] added commands:
'compf path' to force recompile (for all arch) the specified folder; example 'buildrelease compf core\bus' would rebuild core\bus for all architectures.
'allf path' force recompile specified folder, run makebin, sign drivers & build installers.
stansmith [Tue, 17 Mar 2009 16:05:55 +0000 (16:05 +0000)]
[MTHCA] mthca_provider.c - prevent dereference of <NULL> mdev or mdev->ext
hca_pnp.c - change debug print driver name from MLX4 --> MTHCA, white space alignment.
shefty [Wed, 11 Mar 2009 21:39:31 +0000 (21:39 +0000)]
etc/comp_channel: add completion channel abstraction for scalability
Add a new abstraction, the completion channel, capable of de-multiplexing
overlapped completion events among multiple queues.
The completion abstraction consists of 3 main components:
COMP_MANAGER
Maps to an IOCP. The completion manager tracks all completions on any
of its associated channels. This allows a user to 'poll' the completion
manager to receive notification when a completion event occurs on any
of the channels, similar to polling a set of fd's.
COMP_CHANNEL
Maps to a queue of completed requests. A user can 'poll' a single channel
for completions if they are only interest in processing events on that
channel. Internally, polling on a channel will poll the manager for
completions, but only process those associated with the specified channel.
COMP_EVENT
Maps to an overlapped structure. Operations needing a completion event
reference this structure. When the event occurs, it is queued to the
correct channel.
The implementation assumes that only one or a very small number of threads
will ever be trying to process events at any one time. (Based on existing
applications, this is true.) The abstraction itself is threadless.
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1@2024 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86
leonidk [Mon, 9 Mar 2009 08:36:31 +0000 (08:36 +0000)]
[CORE,HW,TESTS] remove registration HCA with IBAL.
This patch removes registration HCA with IBAL, being done upon loading of IBBUS driver.
Instead of it IBBUS requests the upper HCA interface (GUID_RDMA_INTERFACE_VERBS) from HCA and then registers HCA itself.
On unloading it derigesters it back.
shefty [Fri, 6 Mar 2009 22:35:47 +0000 (22:35 +0000)]
ib-diags/ibstat: undo work-around reporting too many ports
A change was made to libibumad to change the index from 0 to 1 in the port array where port information is stored. We need to undo previous change to ibstat to display all ports now.
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1@2015 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86
shefty [Fri, 6 Mar 2009 22:33:11 +0000 (22:33 +0000)]
libibumad: match behavior of OFED libibumad wrt ca ports
The OFED version of libibumad stores a list of ports associated with a umad_ca_t differently based on whether the CA is on a host or is part of a switch. On a host, the port information is maintained in the port array starting at index 1, not 0. In this case, umad_ca_t:port[0] is NULL. Update the WinOF version of libibumad to behave the same. This fixes an issue with ibstat reporting 1 too many ports.
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1@2014 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86
stansmith [Thu, 5 Mar 2009 22:36:58 +0000 (22:36 +0000)]
[DAPL2] DAPL Counters & 2.0.3 extensions to support counter retrieval.
dt-cli.bat - return error codes from script, use for() loop in regression test.
SOURCES - debug version get counters by default.
shefty [Tue, 3 Mar 2009 01:05:53 +0000 (01:05 +0000)]
getopt: return '?' if user wants an arg, but none is provided
If the user specifies that an argument is required, but none is provided, return '?' as the option, rather than NULL as the optarg. This fixes an issue if the last option specified in the option list requires an argument, but none is provided.
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1@2000 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86
shefty [Tue, 3 Mar 2009 00:18:25 +0000 (00:18 +0000)]
infiniband-diags: replace ib-diags with latest
Replace the infiniband_diags port of ib-diags with a version that is in sync with the main management.git tree. The infiniband-diags tree is current with
git commit 1f5fdf3dfc69733a427520198bcbdd03645bb326. All executable ib-diags are supported. (Perl scripts that parse the output are not ported.)
The infiniband-diags directory is a mirror of the infiniband-diags directory of my ib-mgmt.git tree. This is a clone of the management.git tree, with a 1 line patch added to complete the port from Linux to Windows.
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1@1998 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86
shefty [Mon, 2 Mar 2009 22:58:48 +0000 (22:58 +0000)]
ib_types: update SA attribute definitions
To support a direct port of the ib-diags (and eventually opensm), update ib_types.h so that the relevant definitions used by the diags match between OFED and WinOF. The affected attributes are:
Users of the attributes are updated accordingly. In several cases, static inline accessor functions were provided in the ib_types.h header files that were not called by anything. Rather than update all 29 of those functions, I simply deleted them.
The updates moved the path record attribute to match the 1.2.1 spec version. The inform info attribute was updated to make it easier to use the structure.
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1@1996 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86