Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp255542ybi; Wed, 29 May 2019 20:45:45 -0700 (PDT) X-Google-Smtp-Source: APXvYqxm9eKHQg558PgX5j9z8wLh1JjssGVB8vaXS5h9jDxLAYiR7nCpNIMDDv1ISldXzXikW6p7 X-Received: by 2002:a63:9dc8:: with SMTP id i191mr1746923pgd.91.1559187945360; Wed, 29 May 2019 20:45:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559187945; cv=none; d=google.com; s=arc-20160816; b=YmD4itF5lJoEQoDsKgWo2JOuI3hXKLYOOWnPZctz9GN+jOvXQ+hyqz7AU8uUNWb2Gh gZHmnClBYI3rFpXrhlz7+vAu3gCNczGlCz9tokKEYpy2hyE0MUEOGVSy4v2UGyObRHRq UZUIy9b3Sim9S876Zrp/yY7xWs2v0FOJrLCu4mktm6Ja43obQXfhhmnM2+e1zK/y0tTy wFyg2M0EO5ZlLzuYKQ+RoBOnqCW+mQ2x4sA7eGmDIAIlbGYYG2xtqZ0erY5hzKe4OnHh w1OHFnuuUOr9dBbGTwNzUZO2WafY/lxlL2EUOWI4g/Ln7ASFXEQstt5kOmpNLZDmrRxB hqEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=denTrb9WNp2S+Z5OWgokQRj4yDVFfTlChjmSa/t+N5Y=; b=U1cO/GFRC/sQWWwxWoS/AgIPflAqDLgzjHkyt3uGZ0O2ikiq2xzH8YwWPLLG7ScNDa l8S7erNqfoM1mqupNzC2iZ9N2RLkGEOrXJoIbQjuHZANt/f7NcIcwoYrM7y1/N9I2W33 D90qlIzce2f60J9F6ZRqfIAUwEKUU/9ukNSRmILs2zVTpTkcS0C0NUw0p66H/s0MXnRG 3s4TBfyLIbROS0QNEFHIo9oMPoF9SHBnHDgrxi+NX6kGh4rYCWciS3AbpbzZ1gaGqHCG w9QoXTCGu222EbofpmADm4jsrgWXRB2cFpxsnXZ6+AascaQ053HiM3MzbIF3eLXtqvI4 m9ow== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=W8LMLary; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n31si510444pjc.5.2019.05.29.20.45.28; Wed, 29 May 2019 20:45:45 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=W8LMLary; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732599AbfE3DnG (ORCPT + 99 others); Wed, 29 May 2019 23:43:06 -0400 Received: from mail.kernel.org ([198.145.29.99]:32896 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732431AbfE3DVE (ORCPT ); Wed, 29 May 2019 23:21:04 -0400 Received: from localhost (ip67-88-213-2.z213-88-67.customer.algx.net [67.88.213.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 04C0F2498A; Thu, 30 May 2019 03:21:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1559186464; bh=w1LT5UR517Rs7CnOJOe8ZIHRcIeX0It/g1UAjUzlAEo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=W8LMLaryPs4xpesTKkOehH9gLQfJG7Jati0JUhWqchY8+Nxb14/EHnbyzxYpaLbPI G2/ZHMZc1PSNxgtVX0R1lHddJQNAffGXN9wqljAwiL7f2Ox64sdKdok6Fcc+QJMXk2 dGtU9OhymoO/lvNG2fAfWAXBeVWC2ykezvxZzcLg= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Sergey Matyukevich , Johannes Berg , Sasha Levin Subject: [PATCH 4.9 041/128] mac80211/cfg80211: update bss channel on channel switch Date: Wed, 29 May 2019 20:06:13 -0700 Message-Id: <20190530030441.620213016@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190530030432.977908967@linuxfoundation.org> References: <20190530030432.977908967@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org [ Upstream commit 5dc8cdce1d722c733f8c7af14c5fb595cfedbfa8 ] FullMAC STAs have no way to update bss channel after CSA channel switch completion. As a result, user-space tools may provide inconsistent channel info. For instance, consider the following two commands: $ sudo iw dev wlan0 link $ sudo iw dev wlan0 info The latter command gets channel info from the hardware, so most probably its output will be correct. However the former command gets channel info from scan cache, so its output will contain outdated channel info. In fact, current bss channel info will not be updated until the next [re-]connect. Note that mac80211 STAs have a workaround for this, but it requires access to internal cfg80211 data, see ieee80211_chswitch_work: /* XXX: shouldn't really modify cfg80211-owned data! */ ifmgd->associated->channel = sdata->csa_chandef.chan; This patch suggests to convert mac80211 workaround into cfg80211 behavior and to update current bss channel in cfg80211_ch_switch_notify. Signed-off-by: Sergey Matyukevich Signed-off-by: Johannes Berg Signed-off-by: Sasha Levin --- net/mac80211/mlme.c | 3 --- net/wireless/nl80211.c | 5 +++++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 6e0aa296f1346..d787717140e54 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -1072,9 +1072,6 @@ static void ieee80211_chswitch_work(struct work_struct *work) goto out; } - /* XXX: shouldn't really modify cfg80211-owned data! */ - ifmgd->associated->channel = sdata->csa_chandef.chan; - ifmgd->csa_waiting_bcn = true; ieee80211_sta_reset_beacon_monitor(sdata); diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index 09a353c6373a8..d6e6293157717 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -14014,6 +14014,11 @@ void cfg80211_ch_switch_notify(struct net_device *dev, wdev->chandef = *chandef; wdev->preset_chandef = *chandef; + + if (wdev->iftype == NL80211_IFTYPE_STATION && + !WARN_ON(!wdev->current_bss)) + wdev->current_bss->pub.channel = chandef->chan; + nl80211_ch_switch_notify(rdev, dev, chandef, GFP_KERNEL, NL80211_CMD_CH_SWITCH_NOTIFY, 0); } -- 2.20.1