From 65ae1afd449dac9a2aad0c5fceccdaf18cc312aa Mon Sep 17 00:00:00 2001 From: Helmut Schaa Date: Sun, 31 Oct 2010 21:36:43 +0200 Subject: [PATCH] nl80211: Pass data frames from unknown STAs to hostapd Pass data frames from unknown STAs to hostapd in order to reply with a Deauthentication or Disassociation frame. This fixes compliance with IEEE Std 802.11-2007, 11.3. Furthermore, this does not cause a lot of overhead (at least with mac80211 drivers) since mac80211 does not pass all data frames (but at least from unauthenticated and unassociated STAs) to cooked monitor interfaces. Tested with rt2800pci on a MIPS board. Signed-off-by: Helmut Schaa --- src/drivers/driver_nl80211.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index c17240960..5caa2fc68 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -3652,8 +3652,15 @@ static struct sock_filter msock_filter_insns[] = { * add a filter here that filters on our DA and that flag * to allow us to deauth frames to that bad station. * - * Not a regression -- we didn't do it before either. + * For now allow all To DS data frames through. */ + /* load the IEEE 802.11 frame control field */ + BPF_STMT(BPF_LD | BPF_H | BPF_IND, 0), + /* mask off frame type, version and DS status */ + BPF_STMT(BPF_ALU | BPF_AND | BPF_K, 0x0F03), + /* accept frame if version 0, type 2 and To DS, fall through otherwise + */ + BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 0x0801, PASS, 0), #if 0 /*