]>
Commit | Line | Data |
---|---|---|
a1bd3bae AH |
1 | # NTB Drivers |
2 | ||
3 | NTB (Non-Transparent Bridge) is a type of PCI-Express bridge chip that connects | |
4 | the separate memory systems of two computers to the same PCI-Express fabric. | |
5 | Existing NTB hardware supports a common feature set, including scratchpad | |
6 | registers, doorbell registers, and memory translation windows. Scratchpad | |
7 | registers are read-and-writable registers that are accessible from either side | |
8 | of the device, so that peers can exchange a small amount of information at a | |
9 | fixed address. Doorbell registers provide a way for peers to send interrupt | |
10 | events. Memory windows allow translated read and write access to the peer | |
11 | memory. | |
12 | ||
13 | ## NTB Core Driver (ntb) | |
14 | ||
15 | The NTB core driver defines an api wrapping the common feature set, and allows | |
16 | clients interested in NTB features to discover NTB the devices supported by | |
17 | hardware drivers. The term "client" is used here to mean an upper layer | |
18 | component making use of the NTB api. The term "driver," or "hardware driver," | |
19 | is used here to mean a driver for a specific vendor and model of NTB hardware. | |
20 | ||
21 | ## NTB Client Drivers | |
22 | ||
23 | NTB client drivers should register with the NTB core driver. After | |
24 | registering, the client probe and remove functions will be called appropriately | |
25 | as ntb hardware, or hardware drivers, are inserted and removed. The | |
26 | registration uses the Linux Device framework, so it should feel familiar to | |
27 | anyone who has written a pci driver. | |
28 | ||
e26a5843 AH |
29 | ### NTB Transport Client (ntb\_transport) and NTB Netdev (ntb\_netdev) |
30 | ||
31 | The primary client for NTB is the Transport client, used in tandem with NTB | |
32 | Netdev. These drivers function together to create a logical link to the peer, | |
33 | across the ntb, to exchange packets of network data. The Transport client | |
34 | establishes a logical link to the peer, and creates queue pairs to exchange | |
35 | messages and data. The NTB Netdev then creates an ethernet device using a | |
36 | Transport queue pair. Network data is copied between socket buffers and the | |
37 | Transport queue pair buffer. The Transport client may be used for other things | |
38 | besides Netdev, however no other applications have yet been written. | |
39 | ||
a1bd3bae AH |
40 | ## NTB Hardware Drivers |
41 | ||
42 | NTB hardware drivers should register devices with the NTB core driver. After | |
43 | registering, clients probe and remove functions will be called. | |
e26a5843 AH |
44 | |
45 | ### NTB Intel Hardware Driver (ntb\_hw\_intel) | |
46 | ||
47 | The Intel hardware driver supports NTB on Xeon and Atom CPUs. | |
48 | ||
49 | Module Parameters: | |
50 | ||
51 | * b2b\_mw\_idx - If the peer ntb is to be accessed via a memory window, then use | |
52 | this memory window to access the peer ntb. A value of zero or positive | |
53 | starts from the first mw idx, and a negative value starts from the last | |
54 | mw idx. Both sides MUST set the same value here! The default value is | |
55 | `-1`. | |
56 | * b2b\_mw\_share - If the peer ntb is to be accessed via a memory window, and if | |
57 | the memory window is large enough, still allow the client to use the | |
58 | second half of the memory window for address translation to the peer. |