Mellanox ConnectX chips Support. 1. General This directory was not branched out from trunk. It's just a copy of my working directory. It contains a new driver, supporting ConnectX Mellanox chips. 2. Driver description The driver was not developed from scratch. It was ported from Linux OFED multiprotocol MLX4 driver. The Linux-wise look of the code was kept intentionally to facilitate applying patches of Linux driver. The driver SW consists of MLX4_HCA and MLX4_BUS drivers and MLX4U dll. 2.1. MLX4_HCA.SYS (hw\mlx4\kernel\hca) It is a shim, adjusting IBBUS to low-level driver. It was originally written in WDF model, but i didn't find a simple way to connect it to IBBUS with its current way of creating ULP devices and returned it temporary to WDM model. The true solution is to convert IBBUS into upper filter driver of MLX4_HCA and MTHCA, which, hopefully will be done in the next release. The relations of MLX4_HCA with IBBUS are completely the same as of MTHCA driver. 2.2. MLX4_BUS.SYS (hw\mlx4\kernel: \core, \ib, \net and \bus) It is the low-level driver, written in WDF model. It starts, when PnP reveals a ConnectX HCA, initializes the chip and creates MLX4_HCA virtual device. It exports interface for MLX4_HCA driver, which it gets on its startup and uses to implement IBBUS requests. 2.3. MLX4U.DLL (hw\mlx4\user) Does the same as MTHCAU.DLL. 3. Driver current state The driver is found in debugging phase now. A lot of things do not work yet. Things, that have been run, are: - vstat, opensm; - performance tests; - IPoIB, WSD, SDP. 4. Building driver We are now changing the stack so as to enable its building both with DDK and WDK. This work is not accomplished yet. So i'm doing all the development for now with WDK 6000 on x64 platform. I succeeds to compile all kernel components and most user ones with this WDK. The rest i'm compiling with DDK. 5. Not implemented - MSI-X support. - Work with DMA addresses and not with physical ones (it requires a very serious change!); 6. Known problems 6.1. Performance - Command go-bit timeout is set to CMD_WAIT_USECS. Not clear the influence. - Radix tree is implemented via COMPLIB calls, that seems like not used. It can be slow and even buggy. - Various things can be done in built_in assempbler (e.g., bit operations like fls()). 6.2. WPP support disabled. Problems: - at compilation phase; - Linux prints in MLX4_BUS are not supported by WPP (mlx4_err, mlx4_dbg, dev_err, dev_info ...); 6.3 (General) Several places are marked with '// TODO:'. They have to be reviewed from time to time, especially - upon problems.