mesh: Fix mesh SAE auth on low spec devices
authorMasashi Honma <masashi.honma@gmail.com>
Wed, 8 Jul 2015 13:41:36 +0000 (22:41 +0900)
committerJouni Malinen <j@w1.fi>
Sun, 2 Aug 2015 18:37:10 +0000 (21:37 +0300)
commitecd40fef7413c27d1a1feae6363971f9a0417099
tree19773567ef69b7803787da31cf354516cca1b508
parent3dfa519c3252df42ea1c04519acd8fa43a5a998f
mesh: Fix mesh SAE auth on low spec devices

The mesh SAE auth often fails with master branch. By bisect I found
commit eb5fee0bf50444419ac12d3c7f38f27a47523a47 ('SAE: Add side-channel
protection to PWE derivation with ECC') causes this issue. This does not
mean the commit has a bug. This is just a CPU resource issue.

After the commit, sae_derive_pwe_ecc() spends 101(msec) on my PC (Intel
Atom N270 1.6GHz). But dot11RSNASAERetransPeriod is 40(msec). So
auth_sae_retransmit_timer() is always called and it can causes
continuous frame exchanges. Before the commit, it was 23(msec).

On the IEEE 802.11 spec, the default value of dot11RSNASAERetransPeriod
is defined as 40(msec). But it looks short because generally mesh
functionality will be used on low spec devices. Indeed Raspberry Pi B+
(ARM ARM1176JZF-S 700MHz) requires 287(msec) for new
sae_derive_pwe_ecc().

So this patch makes the default to 1000(msec) and makes it configurable.

This issue does not occur on infrastructure SAE because the
dot11RSNASAERetransPeriod is not used on it.

Signed-off-by: Masashi Honma <masashi.honma@gmail.com>
src/ap/hostapd.h
src/ap/ieee802_11.c
wpa_supplicant/config.c
wpa_supplicant/config.h
wpa_supplicant/config_file.c
wpa_supplicant/mesh.c
wpa_supplicant/wpa_cli.c