| # Device files | |
| The userspace CMA uses a single device file regardless of the number | |
| of adapters or ports present. | |
| To create the appropriate character device file automatically with | |
| udev, a rule like | |
| KERNEL="rdma_cm", NAME="infiniband/%k", MODE="0666" | |
| can be used. This will create the device node named | |
| /dev/infiniband/rdma_cm | |
| or you can create it manually | |
| mknod /dev/infiniband/rdma_cm c 231 255 | |
| # Common issues | |
| Using multiple interfaces | |
| : The librdmacm does support multiple interfaces. To make use | |
| of multiple interfaces, however, you need to instruct linux | |
| to only send ARP replies on the interface targeted in the ARP | |
| request. This can be done using a command similar to the | |
| following: | |
| sysctl -w net.ipv4.conf.all.arp_ignore=2 | |
| Without this change, it's possible for linux to respond to ARP | |
| requests on a different interface (IP address) than the IP | |
| address carried in the ARP request. This causes the RDMA stack | |
| to incorrectly map the remote IP address to the wrong RDMA | |
| device. | |
| Using loopback | |
| : The librdmacm relies on ARP to resolve IP address to RDMA | |
| addresses. To support loopback connections between different | |
| ports on the same system, ARP must be enabled for local | |
| resolution: | |
| sysctl net.ipv4.conf.all.accept_local=1 | |
| Without this setting, loopback connections may timeout | |
| during address resolution. |