mac80211: Avoid filling up mesh preq queue with redundant requests
authorJavier Cardona <javier@cozybit.com>
Fri, 4 Nov 2011 04:11:10 +0000 (21:11 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 9 Nov 2011 21:01:02 +0000 (16:01 -0500)
commitf3011cf9deb689bd68279c728c501a4166983c19
tree7d9945a2934c6de78063c358a6d350af8b6a19a9
parent7e1e386421e2ec7804b77f2c1c8e2517e82ecb7e
mac80211: Avoid filling up mesh preq queue with redundant requests

Don't accept redundant PREQs for a given destination. This fixes a
problem under high load:

kernel: [20386.250913] mesh_queue_preq: 235 callbacks suppressed
kernel: [20386.253335] Mesh HWMP (mesh0): PREQ node queue full
kernel: [20386.253352] Mesh HWMP (mesh0): PREQ node queue full
(...)

The 802.11s protocol has a provision to limit the rate of path requests
(PREQs) are transmitted (dot11MeshHWMPpreqMinInterval) but there was no
limit on the rate at which PREQs were being queued up.  There is a valid
reason for queuing PREQs: this way we can even out PREQ bursts.  But
queueing multiple PREQs for the same destination is useless.

Reported-by: Pedro Larbig <pedro.larbig@carhs.de>
Signed-off-by: Javier Cardona <javier@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/mesh.h
net/mac80211/mesh_hwmp.c