mac80211: Get rid of search loop for rate group index
authorHelmut Schaa <helmut.schaa@googlemail.com>
Mon, 14 Nov 2011 14:28:20 +0000 (15:28 +0100)
committerGrazvydas Ignotas <notasas@gmail.com>
Sun, 7 Jun 2015 00:20:32 +0000 (03:20 +0300)
commitaaf0b328f55f439c91e544d7fa7c3906487fe88e
treedb1b82f93684ddd164dc8cfa2c2773a6cc1ea63f
parent4cf712348fb4cee009299b430e31f1f5454176d2
mac80211: Get rid of search loop for rate group index

Finding the group index for a specific rate is done by looping through
all groups and returning if the correct one is found. This code is
called for each tx'ed frame and thus it makes sense to reduce its
runtime.

Do this by calculating the group index by this formula based on the SGI
and HT40 flags as well as the stream number:

idx = (HT40 * 2 * MINSTREL_MAX_STREAMS) +
      (SGI * MINSTREL_MAX_STREAMS) +
      (streams - 1)

Hence, the groups are ordered by th HT40 flag first, then by the SGI
flag and afterwards by the number of used streams.

This should reduce the runtime of minstrel_ht_get_group_idx
considerable.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Acked-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/rc80211_minstrel_ht.c