From c710ebf63b2a2b17a006315fba3abe0adeca80c7 Mon Sep 17 00:00:00 2001 From: Christian Lamparter Date: Tue, 11 Sep 2012 23:18:34 +0200 Subject: [PATCH] --- yaml --- r: 340967 b: refs/heads/master c: e0509d3bdd7365d06c9bf570bf9f118cae6cbd58 h: refs/heads/master i: 340965: 61ca9c22b359f766274a49ae66885e5729e6df4c 340963: 73291642f9443965d12cfe82e224a90ea4d444b1 340959: dbae93baa91be957cd029670af6e2d857020b509 v: v3 --- [refs] | 2 +- trunk/drivers/net/wireless/ath/carl9170/mac.c | 21 ++++++++++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 4776d3b3e8b7..185d9a1d4ff6 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e298c79efcf7b88fded994a03375589d8b726ce7 +refs/heads/master: e0509d3bdd7365d06c9bf570bf9f118cae6cbd58 diff --git a/trunk/drivers/net/wireless/ath/carl9170/mac.c b/trunk/drivers/net/wireless/ath/carl9170/mac.c index e3b1b6e87760..24d75ab94f0d 100644 --- a/trunk/drivers/net/wireless/ath/carl9170/mac.c +++ b/trunk/drivers/net/wireless/ath/carl9170/mac.c @@ -343,7 +343,24 @@ int carl9170_set_operating_mode(struct ar9170 *ar) break; } } else { - mac_addr = NULL; + /* + * Enable monitor mode + * + * rx_ctrl |= AR9170_MAC_RX_CTRL_ACK_IN_SNIFFER; + * sniffer |= AR9170_MAC_SNIFFER_ENABLE_PROMISC; + * + * When the hardware is in SNIFFER_PROMISC mode, + * it generates spurious ACKs for every incoming + * frame. This confuses every peer in the + * vicinity and the network throughput will suffer + * badly. + * + * Hence, the hardware will be put into station + * mode and just the rx filters are disabled. + */ + cam_mode |= AR9170_MAC_CAM_STA; + rx_ctrl |= AR9170_MAC_RX_CTRL_PASS_TO_HOST; + mac_addr = common->macaddr; bssid = NULL; } rcu_read_unlock(); @@ -355,8 +372,6 @@ int carl9170_set_operating_mode(struct ar9170 *ar) enc_mode |= AR9170_MAC_ENCRYPTION_RX_SOFTWARE; if (ar->sniffer_enabled) { - rx_ctrl |= AR9170_MAC_RX_CTRL_ACK_IN_SNIFFER; - sniffer |= AR9170_MAC_SNIFFER_ENABLE_PROMISC; enc_mode |= AR9170_MAC_ENCRYPTION_RX_SOFTWARE; }