user/openlumi-21.02.0-rc/files/package/kernel/rtl8189es/src/os_dep/linux/rhashtable.h
/* The bucket lock is selected based on the hash and protects mutations
 * on a group of hash buckets.
 *
 * A maximum of tbl->size/2 bucket locks is allocated. This ensures that
 * a single lock always covers both buckets which may both contains
 * entries which link to the same bucket of the old table during resizing.
 * This allows to simplify the locking as locking the bucket in both
 * tables during resize always guarantee protection.
 *
 * IMPORTANT: When holding the bucket lock of both the old and new table
 * during expansions and shrinking, the old bucket lock must always be
 * acquired first.
 */
The bucket lock is selected based on the hash and protects mutations
on a group of hash buckets.

A maximum of tbl->size/2 bucket locks is allocated. This ensures that
a single lock always covers both buckets which may both contains
entries which link to the same bucket of the old table during resizing.
This allows to simplify the locking as locking the bucket in both
tables during resize always guarantee protection.

When holding the bucket lock of both the old and new table
during expansions and shrinking, the old bucket lock must always be
acquired first.
The bucket lock is selected based on the hash and protects mutations on a group of hash buckets . A maximum of tbl - > size / 2 bucket locks is allocated . This ensures that a single lock always covers both buckets which may both contains entries which link to the same bucket of the old table during resizing . This allows to simplify the locking as locking the bucket in both tables during resize always guarantee protection . When holding the bucket lock of both the old and new table during expansions and shrinking the old bucket lock must always be acquired first .
static inline spinlock_t *rht_bucket_lock(const struct bucket_table *tbl,
					  unsigned int hash)
{
	return &tbl->locks[hash & tbl->locks_mask];
}
static inline spinlock_t * rht_bucket_lock ( const struct bucket_table * tbl , unsigned int hash ) { return & tbl -> locks [ hash & tbl -> locks_mask ] ; }
The bucket lock is selected based on the hash and protects mutations
 on a group of hash buckets.
The bucket lock is selected based on the hash and protects mutations on a group of hash buckets .