Received: by 2002:ac0:b08d:0:0:0:0:0 with SMTP id l13csp4926719imc; Mon, 25 Feb 2019 13:48:16 -0800 (PST) X-Google-Smtp-Source: AHgI3IaNTBBdf0M4Yvuk+tzG2eF8WeOpmWG5Fj0keQkXEkoIeMlAb2NkrdXT0FgG2IOCODSi2zXQ X-Received: by 2002:a65:50cc:: with SMTP id s12mr16413054pgp.130.1551131296541; Mon, 25 Feb 2019 13:48:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551131296; cv=none; d=google.com; s=arc-20160816; b=uavAnAqWEHGKwa0iMtWQb8vsd73jiFmHEvALFiGnEQ0+YyH3VBB0OVmLU6XR5Melbs TxpvJjriB77Lk6n/JVbesORW/ypERUTBwhU4OOLzRdr/MyDqO48B5KXV7EZsJJOJ+aqW K6u/wckkQHdEfd4gJlv7XU4ygzoMmqRlbJiSSEOH9s/digy3ASLSaDkAPajzJfYYY3ab CMKLqlMSbG8vvXE3WtawROvpUC7eHu6is6lzKb4Nvl0YOg6vGre8YQtwDuySNW64nw21 V3kM67EhAC0IA814uyystj/nkzM5o/B5xNmdQVIqJIIky99l+PRNmtrjV1JG+FiCj4bW N9yg== 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=d2dLMEw7GT9KzKq5nNMvt73M3Usl/xa4vdsSP72rIyk=; b=U3UOHNQWX3ClJgmGnjZILdCouO6O6NB8/grEr6eKavHXKfgl3zOaswvwLM/aA47VAJ o6U/kz2CUwSxF2sFmEob4mE4Y1Qdfx1E+/ambAvWeURbE+zWdRbjXKpl+9fccuVAdaWu kOon6XTsn5sEaWjgvtoc7qYTUVJW+EeszlYDtV0zEeMNs7GoHKVhe2wK+wcWsHHdbdB7 zrfKc0LlD/kOv9MTFSEi0NAB7QLNaN3qBkABMWvlNr7xne48Jxxb4gsqEkIrfTmDmww/ x8Ws69MVqufhWB7VrGtMzrgdQvzB+siAC55/db01f9DVMT9yYEdia7Gf+wRy3AZ9kfFX 7VIw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=GgjlElkF; 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 g4si11048462plm.184.2019.02.25.13.48.01; Mon, 25 Feb 2019 13:48:16 -0800 (PST) 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=GgjlElkF; 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 S1731910AbfBYV2t (ORCPT + 99 others); Mon, 25 Feb 2019 16:28:49 -0500 Received: from mail.kernel.org ([198.145.29.99]:34570 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727963AbfBYV2q (ORCPT ); Mon, 25 Feb 2019 16:28:46 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (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 B6C432084D; Mon, 25 Feb 2019 21:28:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1551130126; bh=oQaqOZEqdGFEPpSW9xl9ITzQqmGGjO++B9u5j0v7GTk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GgjlElkF+bJriS3CVkQ/ZMio+/mZT2Q4+MXAWUW/SAvsR5FjBKeHMh+2Ju44n5jva GrvGgWSb+LTYcuKHVRD3FznJ9z9jKw6QwThhvUeHp1pyNJKUzJfNyorg7mjYahlxL5 E70lAh19p6VYDaWRGI4rm5O37vh6saGj11JOJNcU= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Rakesh Pillai , Johannes Berg Subject: [PATCH 4.20 008/183] mac80211: Restore vif beacon interval if start ap fails Date: Mon, 25 Feb 2019 22:09:41 +0100 Message-Id: <20190225195056.058684625@linuxfoundation.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190225195054.748060397@linuxfoundation.org> References: <20190225195054.748060397@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore 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 4.20-stable review patch. If anyone has any objections, please let me know. ------------------ From: Rakesh Pillai commit 83e37e0bdd1470bbe6612250b745ad39b1a7b130 upstream. The starting of AP interface can fail due to invalid beacon interval, which does not match the minimum gcd requirement set by the wifi driver. In such case, the beacon interval of that interface gets updated with that invalid beacon interval. The next time that interface is brought up in AP mode, an interface combination check is performed and the beacon interval is taken from the previously set value. In a case where an invalid beacon interval, i.e. a beacon interval value which does not satisfy the minimum gcd criteria set by the driver, is set, all the subsequent trials to bring that interface in AP mode will fail, even if the subsequent trials have a valid beacon interval. To avoid this, in case of a failure in bringing up an interface in AP mode due to interface combination error, the interface beacon interval which is stored in bss conf, needs to be restored with the last working value of beacon interval. Tested on ath10k using WCN3990. Cc: stable@vger.kernel.org Fixes: 0c317a02ca98 ("cfg80211: support virtual interfaces with different beacon intervals") Signed-off-by: Rakesh Pillai Signed-off-by: Johannes Berg Signed-off-by: Greg Kroah-Hartman --- net/mac80211/cfg.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c @@ -941,6 +941,7 @@ static int ieee80211_start_ap(struct wip BSS_CHANGED_P2P_PS | BSS_CHANGED_TXPOWER; int err; + int prev_beacon_int; old = sdata_dereference(sdata->u.ap.beacon, sdata); if (old) @@ -963,6 +964,7 @@ static int ieee80211_start_ap(struct wip sdata->needed_rx_chains = sdata->local->rx_chains; + prev_beacon_int = sdata->vif.bss_conf.beacon_int; sdata->vif.bss_conf.beacon_int = params->beacon_interval; if (params->he_cap) @@ -974,8 +976,10 @@ static int ieee80211_start_ap(struct wip if (!err) ieee80211_vif_copy_chanctx_to_vlans(sdata, false); mutex_unlock(&local->mtx); - if (err) + if (err) { + sdata->vif.bss_conf.beacon_int = prev_beacon_int; return err; + } /* * Apply control port protocol, this allows us to