12 years ago[mlx4] Add support for Yatir (more device ids)
tzachid [Tue, 26 Aug 2008 12:32:12 +0000 (12:32 +0000)]
[mlx4] Add support for Yatir (more device ids)

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1511 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[MTHCA] erge MR and FMR space on 64-bit systems (mlnx: 2960)
tzachid [Tue, 26 Aug 2008 11:53:56 +0000 (11:53 +0000)]
[MTHCA] erge MR and FMR space on 64-bit systems (mlnx: 2960)
(Linux, 13/02/07, Michael S. Tsirkin, commit: c20e20ab0f3af9a44842ea11287c9ecd034a5d33)

For Tavor, we currently reserve separate MPT and MTT space for FMRs to
avoid abusing the vmalloc space on 32 bit kernels. No such problem
exists on 64 bit kernels so let's not do it there.

This way we have a shared pool for MR and FMR resources, used on
demand.  This will also make it possible to write MTTs for regular
regions directly from driver.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1510 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[MTHCA] Give reserved MTTs a separate cache line (mlnx: 2959)
tzachid [Tue, 26 Aug 2008 11:53:05 +0000 (11:53 +0000)]
[MTHCA] Give reserved MTTs a separate cache line (mlnx: 2959)
(Linux, 13/02/07, Michael S. Tsirkin, commit: 1d1f19cfce7687b557cebdc41bf8a5eeba8a9882)

MTTs are allocated in non-cache-coherent memory, so we must give
reserved MTTs their own cache line, to prevent both device and
CPU from writing into the same cache line at the same time.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1509 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[MTHCA] Fix reserved MTTs calculation on mem-free HCAs (mlnx 2958)
tzachid [Tue, 26 Aug 2008 11:51:37 +0000 (11:51 +0000)]
[MTHCA] Fix reserved MTTs calculation on mem-free HCAs (mlnx 2958)
(Linux, 13/02/07, Michael S. Tsirkin, commit: c7d204e8fdf02f88d91707213f473805bcfb977b)

The reserved_mtts field has different meaning in Tavor and Arbel, so
we are wasting mtt entries on memfree. Fix the Arbel case to match
Tavor semantics.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1508 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[MTHCA] Fix off-by-one in FMR handling on memfree (mlnx: 2957)
tzachid [Tue, 26 Aug 2008 11:50:45 +0000 (11:50 +0000)]
[MTHCA] Fix off-by-one in FMR handling on memfree (mlnx: 2957)
(Linux, 05/01/07, Michael S. Tsirkin, commit: 46707e96b7254663139225ab6c9ab9922cd8c435)

mthca_table_find() will return the wrong address when the table entry
being searched for is exactly at the beginning of a sglist entry
(other than the first), because it uses >= when it should use >.

Example: assume we have 2 entries in scatterlist, 4K each, offset is
4K.  The current code will return first entry + 4K when we really want
the second entry.

In particular this means mapping an FMR on a memfree HCA may end up
writing the page table into the wrong place, leading to memory
corruption and also causing the HCA to use an incorrect address
translation table.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1507 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[IBBUS] bus_port_mgr.c: resolve mysterious/unannounced port_guid_pkey --> port_guid_p...
stansmith [Tue, 26 Aug 2008 00:20:11 +0000 (00:20 +0000)]
[IBBUS] bus_port_mgr.c: resolve mysterious/unannounced port_guid_pkey --> port_guid_pkey_t typedef change.
bus_driver.c: missing function bus_rem_pkey() - hacked in missing stub routine in order to build.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1506 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[CORE] ibbus as an upper class HCA filter
stansmith [Mon, 25 Aug 2008 22:05:17 +0000 (22:05 +0000)]
[CORE] ibbus as an upper class HCA filter


git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1504 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[tests] add option to run ib_send_bw with events. (mlnx 3032)
tzachid [Mon, 25 Aug 2008 21:11:34 +0000 (21:11 +0000)]
[tests] add option to run ib_send_bw with events. (mlnx 3032)

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1503 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[WinVerbs] set winverbs.cat for driver signing of winverbs.sys
stansmith [Mon, 25 Aug 2008 20:03:45 +0000 (20:03 +0000)]
[WinVerbs] set winverbs.cat for driver signing of winverbs.sys

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1502 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[WinVerbs] add the catalogue definition file - required for signing the winverbs...
stansmith [Mon, 25 Aug 2008 19:34:52 +0000 (19:34 +0000)]
[WinVerbs] add the catalogue definition file - required for signing the winverbs.sys driver (winverbs.cat)

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1501 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[WinVerbs] sychronize IB class name IfniniBandController with Microsoft's view.
stansmith [Mon, 25 Aug 2008 19:27:03 +0000 (19:27 +0000)]
[WinVerbs] sychronize IB class name IfniniBandController with Microsoft's view.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1500 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[ipoib,core] Improve support for partitioning.
tzachid [Mon, 25 Aug 2008 14:00:59 +0000 (14:00 +0000)]
[ipoib,core] Improve support for partitioning.
signed off by: Slava Strebkov [mailto:slavas@voltaire.com]

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1499 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[mlx4] Fixed improper zero-memory allocation.
tzachid [Mon, 25 Aug 2008 12:57:47 +0000 (12:57 +0000)]
[mlx4] Fixed improper zero-memory allocation.
signed-off by: xalex (Alexander Naslednikov)

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1498 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[ipoib] fix for receiving mcast and bcast. (mlnx: 3023)
tzachid [Sun, 24 Aug 2008 08:11:57 +0000 (08:11 +0000)]
[ipoib] fix for receiving mcast and bcast. (mlnx: 3023)
signed off by: Slava Strebkov [slavas@voltaire.com]

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1497 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[MTHCA] misplaced file removed; appears to be a copy of core\bus\kernel\ib_bus32...
stansmith [Thu, 21 Aug 2008 21:17:14 +0000 (21:17 +0000)]
[MTHCA] misplaced file removed; appears to be a copy of core\bus\kernel\ib_bus32.cdf.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1495 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[IPoIB] added ndinstall.exe as part of the ipoib install.
stansmith [Thu, 21 Aug 2008 19:42:59 +0000 (19:42 +0000)]
[IPoIB] added ndinstall.exe as part of the ipoib install.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1494 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[IBAL] bumps up the CI and AL interface version numbers to account for changes in...
tzachid [Thu, 21 Aug 2008 17:53:29 +0000 (17:53 +0000)]
[IBAL] bumps up the CI and AL interface version numbers to account for changes in structures used in those interfaces made in past revisions.

Signed-off-by: Fab Tillier <ftillier@microsoft.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1492 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[WinOF] support ND on all architectures. Setup Winverbs files for WIX install.
stansmith [Thu, 21 Aug 2008 17:48:00 +0000 (17:48 +0000)]
[WinOF] support ND on all architectures. Setup Winverbs files for WIX install.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1491 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[WINVERBS] support Winverbs installation - retarget .inf file to be co-resident with...
stansmith [Thu, 21 Aug 2008 17:09:16 +0000 (17:09 +0000)]
[WINVERBS] support Winverbs installation - retarget .inf file to be co-resident with windverbs.sys file.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1490 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[CORE\IOU] add support for ib_iou.cdf & ib_iou.inf files
stansmith [Thu, 21 Aug 2008 16:18:43 +0000 (16:18 +0000)]
[CORE\IOU] add support for ib_iou.cdf & ib_iou.inf files

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1489 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[CORE\IOU] added following files:
stansmith [Thu, 21 Aug 2008 16:08:42 +0000 (16:08 +0000)]
[CORE\IOU] added following files:
  ib_iou.cdf - for driver signing
  ib_iou.inx - for ibiou.sys installation; IOU relevant items
  makefile.inx - for creation of and date/time stamping ib_iou.inf file.
 Added to SOURCES files the rules required to create ib_iou.inf file.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1488 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[ND] added fre_svr-03_ia64 binaries, which are really fre_svr-03_x86 binaries.
stansmith [Thu, 21 Aug 2008 15:59:00 +0000 (15:59 +0000)]
[ND] added fre_svr-03_ia64 binaries, which are really fre_svr-03_x86 binaries.
replaced fre_svr-08_ia64 binaries with fre_svr-08_x86 binaries.
Reason for replacement is due to changes in netipoib.inf, now that ndinstall.exe is always installed, so when uninstalling, the installer doesn't know if ND was started or not (ndinstall.exe is always present) so it assumes a need to remove ND ala 'ndinstall -r'. Since ND is yet to be supported on ia64 and I did not want to special case ia64 in the uninstall path, it turns out the x86 ndinstall.exe executes fine on ia64.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1487 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[ND] added XP_x86 binaries to fake build env.
stansmith [Fri, 15 Aug 2008 17:25:56 +0000 (17:25 +0000)]
[ND] added XP_x86 binaries to fake build env.
renamed objfre_svr* --> fre_svr* to make it easier to identify ND binary folders from build generated folders.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1483 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[MLX4] some fixes to support the mixed IB/Eth mode. (mlnx: 2947,2949)
leonidk [Thu, 14 Aug 2008 18:45:08 +0000 (18:45 +0000)]
[MLX4] some fixes to support the mixed IB/Eth mode. (mlnx: 2947,2949)

The only mixed configuration, supported now, is port1-IB, port2-Eth.
To work with it one has to burn FW with parameter 'dpdp_en=true' in INI file, for example MHGH28-XSC_A4-A5.ini.

ib_query_ca returns now the number of IB- and not physical ports. So VSTAT will show only one port and IBBUS will create only one IPoIB adapter.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1482 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years agoThe mlx4 hca driver should install as an InfiniBandHca class driver,
shefty [Wed, 13 Aug 2008 19:31:04 +0000 (19:31 +0000)]
The mlx4 hca driver should install as an InfiniBandHca class driver,
rather than inventing its own class.  This allows filter drivers to
reside above both the mthca and mlx4 drivers.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1481 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[MLX4] fixed mechanism of mlx4_hca's asynchronous events notification.
leonidk [Tue, 12 Aug 2008 18:34:39 +0000 (18:34 +0000)]
[MLX4] fixed mechanism of mlx4_hca's asynchronous events notification.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1480 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[IBAL] Fix UAL_NDI_NOOP handling
leonidk [Tue, 12 Aug 2008 08:23:29 +0000 (08:23 +0000)]
[IBAL] Fix UAL_NDI_NOOP handling

The NOOP IOCTL allows the ND provider to complete requests asynchronously when a synchronous operation completes in user-land.  This is used for memory registration and deregistration, as well as for connection establishment when ARP resolution is in progress (IBAT returns E_PENDING) in the NetworkDirect provider.  In the latter case, the expectation is that the IOCTL will complete asynchronously with STATUS_TIMEOUT.  However the code processes the IOCTL synchronously, so the IOCTL fails with an immediate error rather than an asynchronous error.

This patch completes the IRP so that it's completion will be reported asynchronously.

Signed-off-by: Fab Tillier <ftillier@microsoft.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1479 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years agomlx4: add winverbs support
shefty [Mon, 11 Aug 2008 16:17:04 +0000 (16:17 +0000)]
mlx4: add winverbs support

Export the mlx4 channel interface via PnP query interface calls.  This allows the driver to export its channel interface to multiple drivers, such as WinVerbs.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1477 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years agomlx4: fix line endings to windows format
shefty [Mon, 11 Aug 2008 16:12:58 +0000 (16:12 +0000)]
mlx4: fix line endings to windows format

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1476 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[MLX4] added support for Condor_G2 device
leonidk [Mon, 11 Aug 2008 14:31:22 +0000 (14:31 +0000)]
[MLX4] added support for Condor_G2 device

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1474 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[MLX4] fixed a typo
leonidk [Mon, 11 Aug 2008 13:04:34 +0000 (13:04 +0000)]
[MLX4] fixed a typo

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1473 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[MTHCA] removed debug code, which disabled cache update mechanism
leonidk [Mon, 11 Aug 2008 12:54:05 +0000 (12:54 +0000)]
[MTHCA] removed debug code, which disabled cache update mechanism

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1472 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[ND] add fake ND build support; to be removed when ND src hits svn.
stansmith [Sat, 9 Aug 2008 00:11:54 +0000 (00:11 +0000)]
[ND] add fake ND build support; to be removed when ND src hits svn.
  Turn down tracing volume
  New Commands: assist in handling large # of WinOF installers.
    msi-label {tag}
       rename .msi files to WOF_os*_arch*tag; frequently svn version #
       delete .msi installers containing this tag
       directory listing of current WinOF .msi installers

    ND installation
    32 versions .cdf files
    Less tracing noise!
    Added comments.

  dirs - added nd to the build

  dirs - added user to the build
  user\ - ugly hack until ND sources show up in svn - pending legal issues with MS
     objfre_svr-03_amd64 - ND binaries from Mellanox
     objfre_svr-08_ia64 - side-steps ia64 ipoib.cdf & ipoib.inx install issues; actually x64 copies.

  ipoib32.cdf - support ND signing for 32 bit systems
  ipoib32-xp.cdf - support XP32 signing
  ipoib.cdf - ND signing
  netipoib.inx - ND install
  netipoib-xp32.inf - XP32 install, no WSD/ND

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1470 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[ipoib] Added receive statistics for ipoib. (mlnx: 2945)
tzachid [Wed, 6 Aug 2008 14:07:28 +0000 (14:07 +0000)]
[ipoib] Added receive statistics for ipoib. (mlnx: 2945)
signed by: Slava Strebkov [slavas@voltaire.com]

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1467 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years agoadded missing catalogue files
leonidk [Tue, 5 Aug 2008 13:15:15 +0000 (13:15 +0000)]
added missing catalogue files

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1466 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years agoFix winverbs build for XP.
shefty [Mon, 4 Aug 2008 20:51:57 +0000 (20:51 +0000)]
Fix winverbs build for XP.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1464 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[MLX4] added HCA Soft Reset mechanism (used by Ethernet interface so far)
leonidk [Mon, 4 Aug 2008 16:18:23 +0000 (16:18 +0000)]
[MLX4] added HCA Soft Reset mechanism (used by Ethernet interface so far)

Soft Reset here is HCA re-initialization without bus driver reloading.
A reset can be initiated by clients (mlx4_eth, mlx4_hca) and/or driver (mlx4_bus).
Driver issues reset upon card fatal error, which prevents the following work with the card.
Clients may request the reset at any moment upon their will.

Clients have to register event callback after getting bus interface.

When a reset event comes, the bus driver will:
   - bar the following work with card, returning –EFAULT to all, but destroy_xx, commands;
   - reset the card to stop incoming traffic (only in case of client-initiated reset);
   - notify all registered clients about pending reset.

Getting this notification clients have to:
   - wait for all issued commands to end;
   - reset its own clients, if any, and bar their work;
   - release all the device resources, they were using till now;
   - send “I’m reset-ready” notification to the bus driver;

The driver starts to perform device reset only after receiving the “I’m reset-ready” notifications from all the registered clients. It re-initializes the device and notifies all the clients.

Having received this notification, clients have to:
   - dereference the old bus interface;
   - get the new interface from bus driver;
   - register new event handler;
   - resume/restart itself;
   - wake up its own clients, if any;

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1463 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[MLX4] added Hibernate/Standby support. (mlnx: 2906)
leonidk [Mon, 4 Aug 2008 12:23:51 +0000 (12:23 +0000)]
[MLX4] added Hibernate/Standby support. (mlnx: 2906)

Mellanox HCA cards do not have Power Management support so far.
So MLX4 driver resets the card on power-down  and starts its back on power-up.
Pay attention, one can go to Standby/Hibernate only when there is no running IB applications (including WSD).
Otherwise he will get an error window with a message like: "Driver mlx4_hca.sys refuses to go Hibernate/Standby".
MTHCA driver behaves upon Hibernate/Standby the same way.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1462 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[MLX4] bugfix: mlx4_hca was compiled without USE_WDM_INTERRUPTS, which caused it...
leonidk [Mon, 4 Aug 2008 12:00:17 +0000 (12:00 +0000)]
[MLX4] bugfix: mlx4_hca was compiled without USE_WDM_INTERRUPTS, which caused it to see 'struct pci_dev' differently than mlx4_bus.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1461 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[MLX4] fixed a memory leak in mlx4_bus driver. (mlnx: 2886, 2890)
leonidk [Mon, 4 Aug 2008 11:48:05 +0000 (11:48 +0000)]
[MLX4] fixed a memory leak in mlx4_bus driver. (mlnx: 2886, 2890)

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1460 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[OPENSM] adjust OPENSM to changed types of the stack.
leonidk [Sun, 3 Aug 2008 08:44:29 +0000 (08:44 +0000)]
[OPENSM] adjust OPENSM to changed types of the stack.

To recall, OPENSM uses it's own pair of files ib_types.h/ib_types_extended.h instead of the stack's ib_types.h.
So all the changes of 'trunk\inc\iba\ib_types.h' should be repeated in the OPENSM's files.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1458 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[HW] fixed a bug in context values handling in new event notification mechanism ...
leonidk [Sun, 3 Aug 2008 08:37:30 +0000 (08:37 +0000)]
[HW] fixed a bug in context values handling in new event notification mechanism (addded in patch 1435).

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1457 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[WinOF] buildrelease.bat usages of 'C:' changed to '%SystemDrive%'.
stansmith [Mon, 28 Jul 2008 18:49:15 +0000 (18:49 +0000)]
[WinOF] buildrelease.bat usages of 'C:' changed to '%SystemDrive%'.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1452 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[HW] The patch add version stamping to mlx4_bus and mlx4_hca. [MLNX: 2871]
leonidk [Mon, 28 Jul 2008 08:37:43 +0000 (08:37 +0000)]
[HW] The patch add version stamping to mlx4_bus and mlx4_hca. [MLNX: 2871]
Signed-off-by: Reuven Amitai <reuven@mellanox.co.il>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1451 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[ipoib] mcast garbage collector and igmp V2 support.
tzachid [Sun, 27 Jul 2008 07:48:26 +0000 (07:48 +0000)]
[ipoib] mcast garbage collector and igmp V2 support.
signed by: Slava Strebkov [slavas@voltaire.com]

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1450 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[ipoib] mcast garbage collector and igmp V2 support. (mlnx: 2850)
tzachid [Sun, 27 Jul 2008 07:46:19 +0000 (07:46 +0000)]
[ipoib] mcast garbage collector and igmp V2 support. (mlnx: 2850)
signed by: Slava Strebkov [slavas@voltaire.com]

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1449 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years agolibibverbs/tests: fix buffer overrun issue that caused random connection failures
shefty [Fri, 25 Jul 2008 20:17:03 +0000 (20:17 +0000)]
libibverbs/tests: fix buffer overrun issue that caused random connection failures

libibverbs tests occasionally had failures connecting over sockets in order to exchange QP information.  (The ping-pong tests failed more than the perftests.)  The failure was caused by copying a port number into a buffer that was too small, then using it to look up an address.  Increase the size of the buffer and make sure that it's NULL terminated.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1447 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years agowinverbs: add new windows based verbs library and driver
shefty [Fri, 25 Jul 2008 00:53:30 +0000 (00:53 +0000)]
winverbs: add new windows based verbs library and driver

Include port of libibverbs, example programs, and perftest programs to test winverbs.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1446 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[ipoib] Always connect to mcast groups as a full member. (mlnx: 2845)
tzachid [Thu, 24 Jul 2008 13:07:24 +0000 (13:07 +0000)]
[ipoib] Always connect to mcast groups as a full member. (mlnx: 2845)
signed by: anatolyg@voltaire.com

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1445 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years agouvp/av: change create/modify calls to take SGID index
shefty [Wed, 23 Jul 2008 21:41:18 +0000 (21:41 +0000)]
uvp/av: change create/modify calls to take SGID index

The uvp requires the SGID index to create/modify address handles.
Modify the API and UVPs to take the SGID index as input.  This avoids
the UVP needing to cache the CA attributes, which can lead to accessing
a stale GID table.  The SGID index is passed into the UVP through the
resv1 field of the GRH.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1444 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years agoevents: support multiple event handlers
shefty [Wed, 23 Jul 2008 21:33:56 +0000 (21:33 +0000)]
events: support multiple event handlers

Modify the channel interface to allow clients to register different
event handlers.  This is in addition to the event handler specified when
opening the channel adapter.  The latter can be replaced in a subsequent
patch, but is left as is to minimize changes.

This change allows the channel interface to support multiple direct
call clients, such as winverbs and ibal.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1443 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years agouvp/av: complete all processing in pre_create/destroy_av() calls
shefty [Wed, 23 Jul 2008 21:13:05 +0000 (21:13 +0000)]
uvp/av: complete all processing in pre_create/destroy_av() calls

According to the documentation, if a UVP returns IB_VERBS_PROCESSING_DONE
from a pre() IOCTL call, then all verbs related processing has completed.
The mthca pre_create_av() and pre_destroy_av() uvp implementation can
both return IB_VERBS_PROCESSING_DONE, but requires that users still call
post_create_av() and post_destroy_av().  Fix the mthca UVP to complete all
processing in the pre() IOCTL calls when returning IB_VERBS_PROCESSING_DONE,
and update IBAL to remove unnecessary post() IOCTL calls.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1442 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years agouvp/ci_umv_buf: always allocate uvp buffer
shefty [Wed, 23 Jul 2008 21:08:13 +0000 (21:08 +0000)]
uvp/ci_umv_buf: always allocate uvp buffer

The UVP controls the ci_umv_buf, but does not allocate the p_inout_buf if it
is non-zero.  However, the uvp frees the buffer later.  It should always
allocate the buffer, since the caller does not know the required size and
cannot allocate it on the uvp's behalf.  This avoids an unneeded
initialization by the caller, and the if check by the uvp.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1441 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years agoverbs: optimize work request/completion structures
shefty [Wed, 23 Jul 2008 21:03:49 +0000 (21:03 +0000)]
verbs: optimize work request/completion structures

Change work completion types to quickly allow a user to determine if a
completions is for a send or receive.  Align work request and work
completion type values to be the same for consistency.

Update work request structure to avoid unnecessary internal padding and
allocating extra unused space for pointers and structures that can be
part of a union.  Arrange structure layout to allow casting between
the UVP, IBAL, WinVerbs, and libibverbs work requests.

Update debug print functions to match changes.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1440 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years agomthca/pnp: respond to query interface
shefty [Wed, 23 Jul 2008 20:34:43 +0000 (20:34 +0000)]
mthca/pnp: respond to query interface

Add infrastructure to respond to query calls for the

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1439 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years agouvp: obtain desired interface by GUID
shefty [Wed, 23 Jul 2008 20:24:16 +0000 (20:24 +0000)]
uvp: obtain desired interface by GUID

The current uvp_get_interface() routine takes a structure as input.
Included in the structure is a version number.

A better solution to supporting multiple interfaces is to define
interfaces using GUIDs.  This not only allows different versions of
the same interface (for example the UVP interface), but also provides
a mechanism that can be used to add new interfaces without affecting
existing ABIs or APIs.

This will make it easier to extend the existing interfaces in the future.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1438 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years agocq: allow polling with an array of wc's
shefty [Wed, 23 Jul 2008 20:20:52 +0000 (20:20 +0000)]
cq: allow polling with an array of wc's

Allow polling for a list of work completions using an array of
completion structures, rather than a linked list.  This avoids needing
to walk the list to link the structures together before calling poll,
which is a fast path operation.

A new completion structure is added that provides the qp_context
associated with a completion.  This avoids changes to the existing
ULPs, while taking advantage of the underlying UVP capabilities.
Providing the qp_context is useful when dealing with SRQ.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1437 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years agouvp/interface: add support for reporting QP context in WCs
shefty [Wed, 23 Jul 2008 20:14:05 +0000 (20:14 +0000)]
uvp/interface: add support for reporting QP context in WCs

Extend the uvp_interface to include support for reporting the QP context in
work completions.  The required changes are to allow specifying a qp_context
in the pre_create_qp() IOCTL call, and reporting the qp_context through the
work completion structure.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1436 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years agoevents: allow callbacks per CQ, QP, or SRQ
shefty [Wed, 23 Jul 2008 20:09:45 +0000 (20:09 +0000)]
events: allow callbacks per CQ, QP, or SRQ

The underlying hardware drivers both support setting callbacks on a per
widget (CQ, QP, or SRQ) basis, but the verbs interface only allows one
global event handler and one completion handler for the HCA.  Modify the
verbs interface to allow setting events callbacks directly on the HCA
objects.  This allows the HCA to support multiple consumers of its
interface, and users can optimize their event handling based on the call.
For example, the HCA drivers can invoke callbacks directly to the ULPs
without the calls first being filtered by IBAL.  This will improve
completion event reporting.

To minimize changes to the existing stack, the current event handler is
used for all events, regardless of type.  Optimizations are left for a
separate patch.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1435 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years agoib_types/events: remove trap data from event record
shefty [Wed, 23 Jul 2008 20:01:18 +0000 (20:01 +0000)]
ib_types/events: remove trap data from event record

The trap data in the ib_event_rec is both incomplete (wrt the types of
traps that it can report) and unused.  Remove it to save stack space.

This will also make it cleaner to have event handlers per QP, SRQ, CQ, etc.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1434 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years agocomplib/cl_byteswap_osd.h: Add missing include file for stdlib.h
shefty [Wed, 23 Jul 2008 19:56:47 +0000 (19:56 +0000)]
complib/cl_byteswap_osd.h: Add missing include file for stdlib.h

Avoid build errors when cl_byteswap_osd.h is included directly.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1433 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years agoRemoving false Prefast alarms by:
tzachid [Tue, 22 Jul 2008 06:55:12 +0000 (06:55 +0000)]
Removing false Prefast alarms by:
Adding __analysis_assume() to ASSERT when DBG and _PREFAST_ are used for use in all the WinOF tree.
Adding __pragma(warning(suppress:6326)) to suppress constants compare warning (performance decrease is acceptable since this is chked code/ heavy windows event logging.
Signed by:Doron Tsur

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1431 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[IPOIB, MLX4] Checksum offload (mlnx: 2828)
tzachid [Tue, 22 Jul 2008 06:48:18 +0000 (06:48 +0000)]
[IPOIB, MLX4] Checksum offload (mlnx: 2828)

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1430 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[mlx4] Use t-first interrupts by default. (mlnx: 2836)
tzachid [Tue, 22 Jul 2008 06:30:21 +0000 (06:30 +0000)]
[mlx4] Use t-first interrupts by default. (mlnx: 2836)

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1429 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[DAPL] Fully support dat_cr_accept() private data.
stansmith [Mon, 21 Jul 2008 23:15:27 +0000 (23:15 +0000)]
[DAPL] Fully support dat_cr_accept() private data.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1428 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[mlx4] Fix bug in win64 doorbell. (mlnx: 2777, 2791)
tzachid [Mon, 21 Jul 2008 12:37:02 +0000 (12:37 +0000)]
[mlx4] Fix bug in win64 doorbell. (mlnx: 2777, 2791)
Due the bug always the code acquire the spin lock although we run on 64 bits machine

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1426 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[mlx4] Add support for 6368 device.
tzachid [Mon, 21 Jul 2008 12:16:10 +0000 (12:16 +0000)]
[mlx4] Add support for 6368 device.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1425 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[HW, TOOLS] Improve VSTAT output in case of a driver startup failure. [MLNX: 2819]
leonidk [Mon, 21 Jul 2008 10:57:08 +0000 (10:57 +0000)]
[HW, TOOLS] Improve VSTAT output in case of a driver startup failure. [MLNX: 2819]

When low level drivers fail on startup, which usually happens upon an incorrect FW, they report to all the above stack a dev_id of the burning device ("livefish") and imitate such a device thereafter. It was done in order to allow to all the upper level drivers to start their work.
VSTAT shows in this case the dev_id of a "livefish", which is a bit misleading.

This patch fixes this behavior. VSTAT will now show the real dev_id. The drivers  still imitate the "livefish" device. The detailed message about the startup failure can be found in System Event Log (as it always was).

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1424 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[MLX4] added a possibility to register event handler with MLX4_BUS driver. [MLNX...
leonidk [Mon, 21 Jul 2008 10:36:38 +0000 (10:36 +0000)]
[MLX4] added a possibility to register event handler with MLX4_BUS driver. [MLNX:2786]

It is an extension of the Ethernet interface of mlx4_bus driver.
The mlx4_eth handler is called on DPC level upon asynchronous events like PORT_UP/PORT_DOWN, passing event data and the callback context parameter, set upon registration.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1423 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[HW, TOOLS] fixed a bug, causing incorrect value of max_addr_handles in query_ca...
leonidk [Mon, 21 Jul 2008 10:26:12 +0000 (10:26 +0000)]
[HW, TOOLS] fixed a bug, causing incorrect value of max_addr_handles in query_ca. [MLNX: 2790]

It is relevant only for Tavor, but the changes influence all drivers and modify ABI, so the AL_IOCTL_VERSION has been increased.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1422 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[WinOF] buildrelease no longer contains uglt hack to work around XP32 WSD build problems.
stansmith [Fri, 18 Jul 2008 23:36:48 +0000 (23:36 +0000)]
[WinOF] buildrelease no longer contains uglt hack to work around XP32 WSD build problems.
Added a 2nd cmd line arg to set OPENIB_REV value when building installers. Fix eliminates folder structure dependency, making the script more useful to a wider audience.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1419 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[DAPL2] DAPL2 debug cleanup, along with patches to IBAL provider to correctly handle...
stansmith [Fri, 18 Jul 2008 23:33:50 +0000 (23:33 +0000)]
[DAPL2] DAPL2 debug cleanup, along with patches to IBAL provider to correctly handle accept side private_data.
Fixed the async QP & CQ error handlers as they had not been updated with latest typedef's (ib_async_qp_handler_t & ib_async_cq_handler_t), hence calling arg mismatch vs. handling definitions. Resulted in bad EP pointer dereference during Async QP error handling.
Added debug value DAPL_DBG_EVD_DEQUEUE to throttle debug output when watching EVD dequeue operations.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1418 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[WinOF] Don't build WSD for WXP32
stansmith [Fri, 18 Jul 2008 00:22:47 +0000 (00:22 +0000)]
[WinOF] Don't build WSD for WXP32

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1414 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[WinOF] added support for mthca.inf from trunk\bin\kernel\xxx
stansmith [Fri, 18 Jul 2008 00:19:39 +0000 (00:19 +0000)]
[WinOF] added support for mthca.inf from trunk\bin\kernel\xxx

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1413 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[MTHCA] mthca.inf file stamping support.
stansmith [Fri, 18 Jul 2008 00:17:11 +0000 (00:17 +0000)]
[MTHCA] mthca.inf file stamping support.
rename mthca.inf --> mthca.inx
added makefile.inc

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1412 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[IBAL] This patch fixes the build error due to CSQ use for XP builds.
leonidk [Thu, 17 Jul 2008 08:16:01 +0000 (08:16 +0000)]
[IBAL] This patch fixes the build error due to CSQ use for XP builds.
Signed-off-by: Fab Tillier <ftillier@microsoft.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1408 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[WinOF] for XP32 builds, place holder files (until someone comes up with a better...
stansmith [Thu, 17 Jul 2008 01:08:45 +0000 (01:08 +0000)]
[WinOF] for XP32 builds, place holder files (until someone comes up with a better plan) utilized by makebin to cover the case of WSD not available for XP32. netipoib-xp32.inf intentionally contains 64 bit sections as to minimize differences between it and netipoib.inf file.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1404 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[WinOF] updated for .inf file stamping & .inf file relocation to trunk\bin path
stansmith [Thu, 17 Jul 2008 01:05:08 +0000 (01:05 +0000)]
[WinOF] updated for .inf file stamping & .inf file relocation to trunk\bin path

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1403 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[DAPL2] updated old license header text to be consistent with OFA BSD license; 1st...
stansmith [Tue, 15 Jul 2008 15:06:51 +0000 (15:06 +0000)]
[DAPL2] updated old license header text to be consistent with OFA BSD license; 1st commit was mislabeled [DAPL2] should have been [DAPL].

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1396 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[DAPL2] updated old license header text to be consistent with OFA BSD license.
stansmith [Tue, 15 Jul 2008 15:04:52 +0000 (15:04 +0000)]
[DAPL2] updated old license header text to be consistent with OFA BSD license.

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1395 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[DAPL] fix x86(32-bit) pointer sign extension warning when going to wr_id (u64).
stansmith [Sun, 13 Jul 2008 22:26:58 +0000 (22:26 +0000)]
[DAPL] fix x86(32-bit) pointer sign extension warning when going to wr_id (u64).

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1394 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[IBAL] Limit time spent at DISPATCH_LEVEL when processing MADs.
leonidk [Sun, 13 Jul 2008 11:35:53 +0000 (11:35 +0000)]
[IBAL] Limit time spent at DISPATCH_LEVEL when processing MADs.

In working with some switch SMs, I found that under stress the QP0 MAD processing could get delayed by eternal QP1 MAD processing (from hitting the SA for path queries).  This caused the SMs to remove the node from the fabric (multicast group membership, etc) because it appeared unreachable.

This patch adds a DPC for QP0 and QP1 to the SMI, and limits the SMI to processing 16 MADs before re-queueing the DPC to the DPC queue.

Because QP0 processing is crucial to the fabric operating properly, the QP0 DPC is set to high importance so that it always gets queued to the front of the DPC queue, pre-empting any QP1 processing (among other things).

In any case, with this patch all my changes have now been mailed to the list.

Signed-off-by: Fab Tillier <ftillier@microsoft.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1393 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[ALL] Enable warning C4826.
leonidk [Sun, 13 Jul 2008 11:31:46 +0000 (11:31 +0000)]
[ALL]  Enable warning C4826.

Warning C4826 warns you if you have signed pointer extension when a 32-bit pointer is extended to 64-bits.  This patch turns the warning on by default (for any users of complib), and fixes all instances of problematic code.  It also eradicates __ptr64 usage from the Qlogic VNIC driver.

Code affected:
- MLX4

Note that I didn't change DAPL because it's licensed under the CPL and not BSD. So someone else will have to fix that.  In fact, DAPL should probably just go back into the SourceForge project rather than being duplicated everywhere.  Code in the WinOF SVN should be BSD only according to the contributor's agreement.

Signed-off-by: Fab Tillier <ftillier@microsoft.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1392 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[IBAL] Refine UAL_NDI_NOOP handler.
leonidk [Sun, 13 Jul 2008 11:24:55 +0000 (11:24 +0000)]
[IBAL] Refine UAL_NDI_NOOP handler.

The UAL_NDI_NOOP IOCTL handler was added to allow memory registration in user-mode to notify a client using an I/O completion port.  This patch extends the functionality to allow the IOCTL to return either STATUS_SUCCESS or STATUS_TIMEOUT.  The STATUS_TIMEOUT facility is used by the NetworkDirect provider when IBAT returns pending.  It's crude, but gets the job done.

Signed-off-by: Fab Tillier <ftillier@microsoft.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1391 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[IBAL] Fix TO_LONG_PTR use in IOCTLs. Re-applied 1387 patch.
leonidk [Sun, 13 Jul 2008 11:19:40 +0000 (11:19 +0000)]
[IBAL] Fix TO_LONG_PTR use in IOCTLs. Re-applied 1387 patch.

Some IOCTLs transfer API structures with embedded pointers.  These embedded pointers use the TO_LONG_PTR macro to pad everything out so that __ptr64 isn't used.  The idea here is fine, but the change to eliminate the __ptr64 was riddled with problems that weren't caught by the find/replace brute force code changes.

Specifically, you had code like this:

>core\al\user\ual_mr.c, ual_reg_mem@67
>       /* Clear the mr_ioctl */
>       cl_memclr( &mr_ioctl, sizeof(mr_ioctl) );

In theory, no uninitialized upper 32-bits of a TO_LONG_PTR structure would get sent to the kernel.

>       mr_ioctl.in.h_pd = h_pd->obj.hdl;
>       mr_ioctl.in.mem_create = *p_mr_create;

Oops, the mem_create in the IOCTL buffer was overwritten with the caller's structure, which may have uninitialized padding.  This isn't subsequently cleared, effectively defeating the purpose of the memclr.

>+      mr_ioctl.in.mem_create.vaddr_padding =
>+ (ULONG_PTR)p_mr_create->vaddr;

Pretty much every instance of embedded structures in IOCTLs was broken in this way.  There were cases where things were closer to being right:

>core\al\user\ual_qp.c, ual_create_qp@313
>        */
>       qp_ioctl.in.h_pd = h_pd->obj.hdl;
>       qp_ioctl.in.qp_create = *p_qp_create;

Ok, same copy issue as above...

>       qp_ioctl.in.qp_create.h_rq_cq =
>               (ib_cq_handle_t)HDL_TO_PTR(p_qp_create->h_rq_cq->obj.hdl);
>       qp_ioctl.in.qp_create.h_sq_cq =
> (ib_cq_handle_t)HDL_TO_PTR(p_qp_create->h_sq_cq->obj.hdl);

Ah, close but not quite - you have the assignment, but it only assigns the pointer part of the TO_LONG_PTR union.  The padding is still a copy of the user's structure, potentially giving an invalid handle in the kernel.  All uses of HDL_TO_PTR were eliminated as they didn't actually accomplish anything.

This patch fixes this, and always uses the 'padding' field of the TO_LONG_PTR union so that the value is always fully set.

There's also a bug fixed in UD work requests that get sent via IOCTL - the AV handle was never swizzled to its appropriate kernel handle.

Signed-off-by: Fab Tillier <ftillier@microsoft.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1390 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[IBAL] Remove TO_LONG_PTR from IOCTL structures. Re-applied 1386 patch with out SMI...
leonidk [Sun, 13 Jul 2008 11:12:55 +0000 (11:12 +0000)]
[IBAL] Remove TO_LONG_PTR from IOCTL structures. Re-applied 1386 patch with out SMI changes.

This patch removes all instances of TO_LONG_PTR from internal IOCTL structures.  The only place TO_LONG_PTR should be used is in public structures that contain pointers and are exchanged between user-mode and kernel-mode.  Actually, the code should ideally have proxy structures for such API structures into which API structure members
are copied member-wise, and whose size is fixed.  Unused pointers should be stripped from the IOCTL proxy structures.  But that's a change for some other time...

All fields in internal IOCTL structures that were formerly TO_LONG_PTR are not uint64_t, and all uses have appropriate casts.

Signed-off-by: Fab Tillier <ftillier@microsoft.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1389 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[IBAL] revert two previous patches
leonidk [Sun, 13 Jul 2008 11:08:58 +0000 (11:08 +0000)]
[IBAL] revert two previous patches

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1388 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[IBAL] Fix TO_LONG_PTR use in IOCTLs.
leonidk [Sun, 13 Jul 2008 10:54:52 +0000 (10:54 +0000)]

Some IOCTLs transfer API structures with embedded pointers.  These embedded pointers use the TO_LONG_PTR macro to pad everything out so that __ptr64 isn't used.  The idea here is fine, but the change to eliminate the __ptr64 was riddled with problems that weren't caught by the find/replace brute force code changes.

Specifically, you had code like this:

>core\al\user\ual_mr.c, ual_reg_mem@67
>       /* Clear the mr_ioctl */
>       cl_memclr( &mr_ioctl, sizeof(mr_ioctl) );

In theory, no uninitialized upper 32-bits of a TO_LONG_PTR structure would get sent to the kernel.

>       mr_ioctl.in.h_pd = h_pd->obj.hdl;
>       mr_ioctl.in.mem_create = *p_mr_create;

Oops, the mem_create in the IOCTL buffer was overwritten with the caller's structure, which may have uninitialized padding.  This isn't subsequently cleared, effectively defeating the purpose of the memclr.

>+      mr_ioctl.in.mem_create.vaddr_padding =
>+ (ULONG_PTR)p_mr_create->vaddr;

Pretty much every instance of embedded structures in IOCTLs was broken in this way.  There were cases where things were closer to being right:

>core\al\user\ual_qp.c, ual_create_qp@313
>        */
>       qp_ioctl.in.h_pd = h_pd->obj.hdl;
>       qp_ioctl.in.qp_create = *p_qp_create;

Ok, same copy issue as above...

>       qp_ioctl.in.qp_create.h_rq_cq =
>               (ib_cq_handle_t)HDL_TO_PTR(p_qp_create->h_rq_cq->obj.hdl);
>       qp_ioctl.in.qp_create.h_sq_cq =
> (ib_cq_handle_t)HDL_TO_PTR(p_qp_create->h_sq_cq->obj.hdl);

Ah, close but not quite - you have the assignment, but it only assigns the pointer part of the TO_LONG_PTR union.  The padding is still a copy of the user's structure, potentially giving an invalid handle in the kernel.  All uses of HDL_TO_PTR were eliminated as they didn't actually accomplish anything.

This patch fixes this, and always uses the 'padding' field of the TO_LONG_PTR union so that the value is always fully set.

There's also a bug fixed in UD work requests that get sent via IOCTL - the AV handle was never swizzled to its appropriate kernel handle.

Signed-off-by: Fab Tillier <ftillier@microsoft.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1387 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[IBAL] Remove TO_LONG_PTR from IOCTL structures.
leonidk [Sun, 13 Jul 2008 10:51:31 +0000 (10:51 +0000)]
[IBAL] Remove TO_LONG_PTR from IOCTL structures.

This patch removes all instances of TO_LONG_PTR from internal IOCTL structures.  The only place TO_LONG_PTR should be used is in public structures that contain pointers and are exchanged between user-mode and kernel-mode.  Actually, the code should ideally have proxy structures for such API structures into which API structure members
are copied member-wise, and whose size is fixed.  Unused pointers should be stripped from the IOCTL proxy structures.  But that's a change for some other time...

All fields in internal IOCTL structures that were formerly TO_LONG_PTR are not uint64_t, and all uses have appropriate casts.

Signed-off-by: Fab Tillier <ftillier@microsoft.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1386 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[IBAL] Remove PD context from IOCTLs.
leonidk [Sun, 13 Jul 2008 10:47:12 +0000 (10:47 +0000)]
[IBAL] Remove PD context from IOCTLs.
IBAL's ib_query_qp and ib_query_mw IOCTLs return the PD context in the output IOCTL buffer.  It is however never referenced.

This patch removes the fields (which had been changed to TO_LONG_PTR).

Signed-off-by: Fab Tillier <ftillier@microsoft.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1385 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[IBAL, HW] Remove pointers from ci_umv_buf_t.
leonidk [Sun, 13 Jul 2008 10:43:22 +0000 (10:43 +0000)]
[IBAL, HW]  Remove pointers from ci_umv_buf_t.

Part of cleaning up the __ptr64 stuff properly - rather than use the TO_LONG_PTR in the ci_umv_buf_t structure, use uint64_t.

The problem with using TO_LONG_PTR in structures that are exchanged between 32-bit clients and 64-bit drivers is that care must be taken to ensure that the upper 'padding' bytes are cleared properly.

Making the field a uint64_t makes it fool proof (though it does require casting, but at least the compiler will trap errors unlike for the padding.)

Signed-off-by: Fab Tillier <ftillier@microsoft.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1384 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[INC] Clean up TO_LONG_PTR use in ib_types.h.
leonidk [Sun, 13 Jul 2008 10:39:47 +0000 (10:39 +0000)]
[INC]  Clean up TO_LONG_PTR use in ib_types.h.
Signed-off-by: Fab Tillier <ftillier@microsoft.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1383 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[INC] Remove STRUCT_PTR64.
leonidk [Sun, 13 Jul 2008 10:34:29 +0000 (10:34 +0000)]
[INC]  Remove STRUCT_PTR64.
Signed-off-by: Fab Tillier <ftillier@microsoft.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1382 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[INC] Remove TYPEDEF_PTR64.
leonidk [Sun, 13 Jul 2008 10:31:12 +0000 (10:31 +0000)]
[INC]  Remove TYPEDEF_PTR64.
Signed-off-by: Fab Tillier <ftillier@microsoft.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1381 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[IBAL, HW, IPOIB] Remove VOID_PTR64.
leonidk [Sun, 13 Jul 2008 10:28:11 +0000 (10:28 +0000)]
Also fixed GPL license and missing copyright issues.
Signed-off-by: Fab Tillier <ftillier@microsoft.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1380 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[HW] Remove FUNC_PTR64.
leonidk [Sun, 13 Jul 2008 10:24:27 +0000 (10:24 +0000)]
[HW] Remove FUNC_PTR64.
Signed-off-by: Fab Tillier <ftillier@microsoft.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1379 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[COMPLIB] This patch removes a useless comment.
leonidk [Sun, 13 Jul 2008 10:20:55 +0000 (10:20 +0000)]
[COMPLIB] This patch removes a useless comment.
Signed-off-by: Fab Tillier <ftillier@microsoft.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1378 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[MTHCA] This patch cleans up the atomic_set function in the HCA drivers.
leonidk [Sun, 13 Jul 2008 10:16:17 +0000 (10:16 +0000)]
[MTHCA] This patch cleans up the atomic_set function in the HCA drivers.
Signed-off-by: Fab Tillier <ftillier@microsoft.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1377 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[IBAL] Cleanup ND reject IOCTL handling.
leonidk [Sun, 13 Jul 2008 09:10:39 +0000 (09:10 +0000)]
[IBAL] Cleanup ND reject IOCTL handling.
This patch removes a local variable, and changes the reject reason from IB_REJ_INSUF_QP to IB_REJ_USER_DEFINED.
Signed-off-by: Fab Tillier <ftillier@microsoft.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1376 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

12 years ago[OPENMS] This patch removes XXX_PTR64 and TO_ULONG_PTR from OpenSM.
leonidk [Sun, 13 Jul 2008 08:55:53 +0000 (08:55 +0000)]
[OPENMS] This patch removes XXX_PTR64 and TO_ULONG_PTR from OpenSM.
Signed-off-by: Fab Tillier <ftillier@microsoft.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1375 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86