From patchwork Thu Aug 6 18:41:33 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johannes Berg X-Patchwork-Id: 39669 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n76IlAMs013687 for ; Thu, 6 Aug 2009 18:47:11 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756099AbZHFSqZ (ORCPT ); Thu, 6 Aug 2009 14:46:25 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1756095AbZHFSqY (ORCPT ); Thu, 6 Aug 2009 14:46:24 -0400 Received: from xc.sipsolutions.net ([83.246.72.84]:36280 "EHLO sipsolutions.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756074AbZHFSqX (ORCPT ); Thu, 6 Aug 2009 14:46:23 -0400 Received: by sipsolutions.net with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.69) (envelope-from ) id 1MZ7yq-0003E9-3Y; Thu, 06 Aug 2009 20:46:24 +0200 Message-Id: <20090806184234.313983716@sipsolutions.net> References: <20090806184131.114246687@sipsolutions.net> User-Agent: quilt/0.46-1 Date: Thu, 06 Aug 2009 20:41:33 +0200 From: Johannes Berg To: John Linville Cc: linux-wireless@vger.kernel.org, Pavel Roskin Subject: [PATCH 2/3] cfg80211: fix nl80211 disconnected events Content-Disposition: inline; filename=009-cfg80211-mlme-fix-events.patch Mime-Version: 1.0 X-Mailer: Evolution 2.27.5 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org When reporting a disconnection to userspace, we try to report whether it was from the AP or by our own choice. However, we misreported a broadcast deauth or disassoc as being by own choice, which is wrong. Fix this by checking the sender address instead of the destination address. Signed-off-by: Johannes Berg --- net/wireless/mlme.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- wireless-testing.orig/net/wireless/mlme.c 2009-08-06 20:36:05.000000000 +0200 +++ wireless-testing/net/wireless/mlme.c 2009-08-06 20:40:09.000000000 +0200 @@ -149,7 +149,7 @@ static void __cfg80211_send_deauth(struc reason_code = le16_to_cpu(mgmt->u.deauth.reason_code); - from_ap = memcmp(mgmt->da, dev->dev_addr, ETH_ALEN) == 0; + from_ap = memcmp(mgmt->sa, dev->dev_addr, ETH_ALEN) != 0; __cfg80211_disconnected(dev, NULL, 0, reason_code, from_ap); } else if (wdev->sme_state == CFG80211_SME_CONNECTING) { __cfg80211_connect_result(dev, mgmt->bssid, NULL, 0, NULL, 0, @@ -215,7 +215,7 @@ static void __cfg80211_send_disassoc(str reason_code = le16_to_cpu(mgmt->u.disassoc.reason_code); - from_ap = memcmp(mgmt->da, dev->dev_addr, ETH_ALEN) == 0; + from_ap = memcmp(mgmt->sa, dev->dev_addr, ETH_ALEN) != 0; __cfg80211_disconnected(dev, NULL, 0, reason_code, from_ap); }