From: Johannes Berg <johannes.berg@intel.com>
Date: Thu, 23 Apr 2015 15:26:06 +0000 (+0200)
Subject: mac80211: make station hash table max_size configurable
X-Git-Tag: firefly_0821_release~176^2~1587^2~97^2~57
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=ebd82b39bf11b38b0b50919c8d4386706b26bff7;p=firefly-linux-kernel-4.4.55.git

mac80211: make station hash table max_size configurable

Allow debug builds to configure the station hash table maximum
size in order to run with hash collisions in limited scenarios
such as hwsim testing. The default remains 0 which effectively
means no limit.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---

diff --git a/net/mac80211/Kconfig b/net/mac80211/Kconfig
index 64a012a0c6e5..5f698d4ec53b 100644
--- a/net/mac80211/Kconfig
+++ b/net/mac80211/Kconfig
@@ -305,3 +305,13 @@ config MAC80211_DEBUG_COUNTERS
 	  and show them in debugfs.
 
 	  If unsure, say N.
+
+config MAC80211_STA_HASH_MAX_SIZE
+	int "Station hash table maximum size" if MAC80211_DEBUG_MENU
+	default 0
+	---help---
+	  Setting this option to a low value (e.g. 4) allows testing the
+	  hash table with collisions relatively deterministically (just
+	  connect more stations than the number selected here.)
+
+	  If unsure, leave the default of 0.
diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c
index 737730abba6d..aec15d746aea 100644
--- a/net/mac80211/sta_info.c
+++ b/net/mac80211/sta_info.c
@@ -70,6 +70,7 @@ static const struct rhashtable_params sta_rht_params = {
 	.key_offset = offsetof(struct sta_info, sta.addr),
 	.key_len = ETH_ALEN,
 	.hashfn = sta_addr_hash,
+	.max_size = CONFIG_MAC80211_STA_HASH_MAX_SIZE,
 };
 
 /* Caller must hold local->sta_mtx */