Cause: Various aspects of cache on Infiband, sometimes due to upstream infrastructure changes resulted in potentially bad performance.
Consequence: Poor cache performance on InfiniBand
Fix: 1. Only cache valid GIDs and not empty ones to reduce search time. 2. When searching GIDs on a list of devices, first start with the device that received the request. 3. Change cma_acquire_dev function to search for cached GIDs.
Result: Improved IB performance, potentially pathological (for throughput performance) code paths removed.