summaryrefslogtreecommitdiffstats
path: root/virt
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2015-02-13 21:55:15 +0100
committerJohannes Berg <johannes.berg@intel.com>2015-04-01 10:06:26 +0200
commit7bedd0cfad4e122bc0ddaf3fc955a38c88c95d35 (patch)
treef156540ff672dec031e81a64fc60796dd34ea867 /virt
parent9911674fcf1f239ff3c87e56177c4826e33dfd95 (diff)
downloadlinux-stable-7bedd0cfad4e122bc0ddaf3fc955a38c88c95d35.tar.gz
linux-stable-7bedd0cfad4e122bc0ddaf3fc955a38c88c95d35.tar.bz2
linux-stable-7bedd0cfad4e122bc0ddaf3fc955a38c88c95d35.zip
mac80211: use rhashtable for station table
We currently have a hand-rolled table with 256 entries and are using the last byte of the MAC address as the hash. This hash is obviously very fast, but collisions are easily created and we waste a lot of space in the common case of just connecting as a client to an AP where we just have a single station. The other common case of an AP is also suboptimal due to the size of the hash table and the ease of causing collisions. Convert all of this to use rhashtable with jhash, which gives us the advantage of a far better hash function (with random perturbation to avoid hash collision attacks) and of course that the hash table grows and shrinks dynamically with chain length, improving both cases above. Use a specialised hash function (using jhash, but with fixed length) to achieve better compiler optimisation as suggested by Sergey Ryazanov. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'virt')
0 files changed, 0 insertions, 0 deletions