winverbs/lib: cache pkey table
author(\18¬ <(\18¬@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Thu, 21 Jan 2010 06:08:53 +0000 (06:08 +0000)
committer(\18¬ <(\18¬@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Thu, 21 Jan 2010 06:08:53 +0000 (06:08 +0000)
commit49854ca9965f16418269787abf3a96e9b6f86c06
treea2f6c9c1552b9f8cadffbc7e836cb413504563ca
parent29ab0d815949cf6fb86185334a5297f30694d34b
winverbs/lib: cache pkey table

Connection establishment rates take a huge performance hit
as a result of using FindPkey, which results in querying the
HCA to lookup current pkey information.  Add a cache to the
userspace library for pkey information.

The cache is updated using the CWVDevice:Notify() routine.
Before any access is made to the cache, the caller checks
for changes to the partition tables.  If a change is found,
then the cache is updated.  Otherwise, the cache is accessed
to map pkey values to indices.

This results in the connection rate over winverbs almost
doubling.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@2672 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86
core/winverbs/user/wv_device.cpp
core/winverbs/user/wv_device.h