How rdma driver converts IP address to the GID? How mlx4_en converts GID to the MAC address?


I was trying to understand the connection establishment between two RDMA devices. There I came across the function rdma_resolve_addr() before issuing rdma_connect().

As per the online references, rdma_resolve_addr() function resolves destination IP address to RDMA address(i.e GID). Does anyone know how this resolution is done?

Ethernet drivers like mlx4_en then maps this GID to the MAC using GID table. How this mapping is done?



Start from kernel cma.c source file, you’ll trace that address resolution finally is done by addr4_resolve function and then standard kernel address resolutions functions are called