So I finally got around to working on this... Anyway, here's a patch that adds node_type and transport_type members to struct ibv_device. I just set them up once when the device is initialized, rather than adding all sorts of query functions etc. How does this strike you? - R.