ntb_transport
—
Packet-oriented transport for Non-Transparent
Bridges
To compile this driver into your kernel, place the following lines
in your kernel configuration file:
device ntb
device ntb_transport
Or, to load the driver as a module at boot, place the following
line in
loader.conf(5):
The following tunables are settable from the
loader(8):
- hw.ntb_transport.debug_level
- Driver debug level. The default value is 0, higher means more
verbose.
- hw.ntb_transport.max_mw_size
- Limits maximum memory window usage. Allocation of big physically
contiguous memory buffer may be a problem, while too big buffers makes no
much sense for low latency network interface.
- hint.ntb_transport.X.config
- Configures a set of the transport consumers, separated by commas. Each
consumer can be configured as:
"[<name>][:<queues>]", where:
name is a name of the driver to attach (empty means
any), queues is a number of queues to allocate
(empty means automatic). The default configuration is empty string, which
means single consumer with one queue per memory window, allowing any
driver to attach.
- hint.ntb_transport.X.compact
- Non-zero value enables compact version of scratchpad protocol, using half
as many registers. Enabled automatically if there is not enough registers
to negotiate all available memory windows. The compact version does not
support memory windows of 4GB and above.
The ntb_transport
driver attaches on top
of the ntb
driver to utilize its resources to create
a set of bidirectional queues, delivering packets between the systems. The
primary purpose of this driver is to be used by
if_ntb
network interface, but other consumers may
also be developed using KPI.
Each ntb_transport
require from underlying
ntb
instance:
- 1 or more memory windows;
- 6 scratchpads, plus 2 more for each additional memory window, or 3 plus 1
in case of compact protocol;
- 1 doorbell for each memory window or configured queue.