#define LNET_COOKIE_TYPE_MD 1
#define LNET_COOKIE_TYPE_ME 2
#define LNET_COOKIE_TYPE_EQ 3
-#define LNET_COOKIE_TYPES 4
+#define LNET_COOKIE_TYPE_BITS 2
+#define LNET_COOKIE_TYPES (1 << LNET_COOKIE_TYPE_BITS)
/* LNET_COOKIE_TYPES must be a power of 2, so the cookie type can be
* extracted by masking with (LNET_COOKIE_TYPES - 1) */
/* Arbitrary choice of hash table size */
#ifdef __KERNEL__
the_lnet.ln_lh_hash_size =
- CFS_PAGE_SIZE / sizeof (cfs_list_t);
+ (2 * CFS_PAGE_SIZE) / sizeof (cfs_list_t);
#else
the_lnet.ln_lh_hash_size = (MAX_MES + MAX_MDS + MAX_EQS)/4;
#endif
if ((cookie & (LNET_COOKIE_TYPES - 1)) != type)
return (NULL);
- hash = ((unsigned int)cookie) % the_lnet.ln_lh_hash_size;
+ hash = ((unsigned int)(cookie >> LNET_COOKIE_TYPE_BITS)) % the_lnet.ln_lh_hash_size;
list = &the_lnet.ln_lh_hash_table[hash];
cfs_list_for_each (el, list) {
lh->lh_cookie = the_lnet.ln_next_object_cookie | type;
the_lnet.ln_next_object_cookie += LNET_COOKIE_TYPES;
- hash = ((unsigned int)lh->lh_cookie) % the_lnet.ln_lh_hash_size;
+ hash = ((unsigned int)(lh->lh_cookie >> LNET_COOKIE_TYPE_BITS)) % the_lnet.ln_lh_hash_size;
cfs_list_add (&lh->lh_hash_chain, &the_lnet.ln_lh_hash_table[hash]);
}