File size: 6,270 Bytes
516a027
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
ixl iWARP FreeBSD* driver for Intel(R) Ethernet Connection X722
================================================================
July 9, 2019

Contents
========

- Prerequisites
- Building and Installation
- Testing
- Configuration
- Interoperability
- Known Issues


Prerequisites
=============

- FreeBSD version 11.2
- Kernel configuration:
    Please add the following kernel configuration options:
	include GENERIC
	options COMPAT_LINUXKPI
	options IPOIB_CM
	options IXL_IW

	nodevice ixl
	nodevice iavf
	Note: IXL_IW is required for FreeBSD-CURRENT branch.
- For the iw_ixl driver to work, an if_ixl driver with iwarp interface
  is required. The interface is available in if_ixl version 1.7.12 or later.
  It should be enabled prior to usage, as the setting is switched off by
  default. To enable iwarp compatibility, add
	hw.ixl.enable_iwarp=1
to
	/boot/loader.conf

The lan driver can be downloaded from
https://downloadcenter.intel.com/download/25160/Ethernet-Intel-Network-Adapter-D
river-for-PCIe-40-Gigabit-Ethernet-Network-Connection-under-FreeBSD
Or search on downloadcenter.intel.com using '40 Gigabit Ethernet Network
Connection under FreeBSD'. Newer OS releases contain the if_ixl driver in
the ixl driver version 1.7.12-k or later.

There are some known issues with the interface on if_ixl-1.7.12. Please
use version 1.7.13 or later.

- fastreg memory mode in krping needs a patch applied to krping.
  Refer to the 'Testing' and 'Known Issues' sections for details.


Building and Installation
=========================

1. Untar ixl-<version>.tar.gz and iw_ixl-<version>.tar.gz

	# tar -xf ixl-<version>.tar.gz
	# tar -xf iw_ixl-<version>.tar.gz

2. Install the if_ixl driver:

	# cd ixl-<version>/src directory
	# make
	# make install

3. Install the iw_ixl driver:

	# cd iw_ixl-<version>/src
	# make clean
	# make IXL_DIR=$PATH_TO_IXL/ixl-<version>/src
	# make install

4. Install the man page for the iw_ixl driver by copying the iw_ixl.4.gz file
   to the directory where manual pages are held on your system. For instance:

	# cp iw_ixl-<version>/doc/iw_ixl.4.gz /usr/share/man/man4/

For in-tree driver if_ixl-1.7.12-k or later, it is sufficient to follow
the instruction from point 3 but ensure the correct path to if_ixl source
folder is supplied. For instance:
	IXL_DIR=/usr/src/sys/dev/ixl/


Testing
-------
1. To load the iw_ixl driver, call:

	# kldload iw_ixl

   If if_ixl is not already loaded, the system will load it on its own.
   Please remember to add
	hw.ixl.enable_iwarp=1
   to /boot/loader.conf file prior to if_ixl loading, to ensure the ixl
   driver has the iwarp interface enabled.

2. To validate the load of the driver, check:

	# sysctl -a | grep infiniband

   A number of sys.class.infiniband should appear, provided at least one
   port of the X722 is up.

3. The source code for krping software is provided with the kernel in
/usr/src/sys/contrib/rdma/krping/. To compile the software, change directory
to /usr/src/sys/modules/rdma/krping/ and invoke the following:

	# make clean
	# make
	# make install

4. Start krping server on one machine:

	# echo size=64,count=1,port=6601,addr=100.0.0.189,server > /dev/krping
5. Connect client from another machine:

	# echo size=64,count=1,port=6601,addr=100.0.0.189,client > /dev/krping


Configuration
=============
The following sysctl options are visible:
  - hw.iw_ixl.max_ceq
	determines the maximum number of msix vectors available to the driver
	for CEQ usage.
  - hw.iw_ixl.debug
	defines level of debug messages.
  - hw.iw_ixl.mpa_version
	shows the current MPA version used.

The max_ceq setting may be changed by adding:
	hw.iw_ixl.max_ceq=$value
to /boot/loader.conf file. The final number of CEQ is evaluated depending
on the available msix vectors, number of cpu cores, and hardware limits.

If max_ceq=0, the value is ignored.

The debug setting may be changed either by adding:
	hw.iw_ixl.debug=$value
to the /boot/loader.conf file or by calling
	sysctl hw.iw_ixl.debug=$value

The mpa_version may be changed by adding:
	hw.iw_ixl.mpa_version=$value
to the /boot/loader.conf file.


Interoperability
================

To interoperate with Chelsio iWARP devices:

1. Load the ixl driver with parameter mpa_version set to 1. Add the line:
	hw.iw_ixl.mpa_version=1
to /boot/loader.conf

2. Load Chelsio T4/T5 RDMA driver (iw_cxgb4) with parameter dack_mode set to 0.


Known Issues
============

- Loopback is not supported.
- MTU changes are not supported.
- IPv6 is not supported.
- MW memory mode is not supported.
- MR memory mode supports only single buffer.
- The function ib_cq_resize is not supported.
- The max number of registered cq, qp, pd or mr reported by the device may
  differ from the actual number of registrations achievable.
- A kernel crash may occur when trying to run krping without ensuring that the
  two machines are able to ping each other.
- A kernel crash may occur when trying to load the iw_ixl driver when
  hw.ixl.enable_iwarp=0 (fixed with if_ixl 1.7.13).
- A kernel crash may occur when loading the iw_ixl driver on a card that is
  supported by if_ixl driver, but does not have iWARP capability (fixed with
  if_ixl 1.7.13).
- Krping with fastreg memory mode will not work unless some changes are made
  to krping. To work around the issue, modify the krping_rdma_rkey function
  such that, in the case of FASTREG memory mode, the ib_post_send function
  with &cd->invalidate_wr parameter is not called during the first run of
  the function.


Support
=======
For general information, go to the Intel support website at:
http://www.intel.com/support/

If an issue is identified with the released source code on a supported kernel
with a supported adapter, email the specific information related to the issue
to [email protected]


Copyright(c) 2017-2019 Intel Corporation.


Trademarks
==========
Intel is a trademark or registered trademark of Intel Corporation or its
subsidiaries in the United States and/or other countries.

* Other names and brands may be claimed as the property of others.