Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp248434ybi; Wed, 29 May 2019 20:36:37 -0700 (PDT) X-Google-Smtp-Source: APXvYqwOpjgHo9w4BZ3xzIxk5ZdlbmbQxwtp4mBL+kxQrwmk/wcRCT4VXZFRF4hptUeWf3tAo7k+ X-Received: by 2002:a17:902:306:: with SMTP id 6mr1733318pld.148.1559187397644; Wed, 29 May 2019 20:36:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559187397; cv=none; d=google.com; s=arc-20160816; b=Ff40uEV8qZbhJqdcIRhjD2zjhoZ+dSTwb19CcExSS2B3agp8TaxqeEuS5cHrj/YxpX IzrYB63OQkK2azrYjDxptvf5XO/KmhT8Y0xaeEEpZkmaD5BCWQLrmYGC0IIHzNymRfIC ktzS7q6tW13oTRW518mk0OwZnF8hJXZaBexQ7w1Eql/h1MoN90TAcTKuQ1hT7CdUgKF5 KXD85z2aa/YE5Vw5zhN0fpdO7oXAd2H1Zneouuhan0rhXxp6ka5QJJ+0b0L5fFRlTmrF xf+EixguAxW7wESLdQWOc65zVaiu/RHxovBd867YEKrzaUgT+EE6gBoAvm4ZZY7MHJtQ asrA== 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=dh3V1CH55bhlJ4WKt3/CXxYVPnq0oanv1hwCjxiKETU=; b=IZZGRVXu0jV9kpBBLEjK/wLSQYKY7tLce8jL0voedzU+Kz69eAeXmgwFyAC578HCDt EFJrdE68mFrsRv/Y1EFfeSp5e+FblY0wR44KUWD4xn603DVx0priPkV83UgbKVwsjr0z iYubYEkIGEc0bQuwKHovV5pqe/WdtlXOKEq0/5lT0aNcHGvmG/mJAIAiUxPxfFaRI6rN jW/NUVZz8iay0FEx1AjjVpplBQB3WMD+qsZ+/X/kvEM7FNZjrWNHbTFtgFoWYimWBL5s XAdTiRyzH0ffxG/5wH1dyYRUYuaecOclEnyHmxqWsxJ8AjG59l0iJI6/+d9vksN4SGI8 gOBw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="0d/f40jB"; 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 h5si1633656pjs.96.2019.05.29.20.36.20; Wed, 29 May 2019 20:36:37 -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="0d/f40jB"; 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 S2387416AbfE3D0s (ORCPT + 99 others); Wed, 29 May 2019 23:26:48 -0400 Received: from mail.kernel.org ([198.145.29.99]:53498 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730851AbfE3DTC (ORCPT ); Wed, 29 May 2019 23:19:02 -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 3EE2D24823; Thu, 30 May 2019 03:19:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1559186341; bh=figzrZJk28omJxNn3z3++baoDIH28NEjwx59Tq0jw9M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=0d/f40jBA6iORE4JnSknPixlNHrsea2YNwRZ3a6okET9aJ1OKVaGmVmxDOlilLZAe +Xnseb5/IbeGrX6ZujqhYluGRb0Tv/nytRn/ImAkxvrx36QwTaNsYOm0xpsJC9cZRt ELyIUDQOxEKT9QbBWWPaweUOLcmWY8Ugt1b8cG7Q= 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.14 067/193] mac80211/cfg80211: update bss channel on channel switch Date: Wed, 29 May 2019 20:05:21 -0700 Message-Id: <20190530030458.695246233@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190530030446.953835040@linuxfoundation.org> References: <20190530030446.953835040@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 4c59b5507e7ac..33bd6da00a1c5 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -1071,9 +1071,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 c1a2ad050e617..c672a790df1ce 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -14706,6 +14706,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