Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp10242420ybi; Thu, 11 Jul 2019 02:06:56 -0700 (PDT) X-Google-Smtp-Source: APXvYqzSoBKHupg5peXc/aLWICu36ZzqQA0vfNIXYLu40zxByHyys0IEutZMlMfmVmtlYzfCC08C X-Received: by 2002:a63:4442:: with SMTP id t2mr3185425pgk.327.1562836016101; Thu, 11 Jul 2019 02:06:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1562836016; cv=none; d=google.com; s=arc-20160816; b=mJhv08unj3692nHXDK0/9LPYUfaUrXBZPe7fAut13IHdIImC5PFndO8C3hzOCjSA9X oRR+xt3S0VRCyaGd/qQmDr3qMwjTVvEOeF0u3K8Wrq3xXd5xwpvqeptV32RgNu3pu1MC CpbT5/+IelsJ9Bh+7ijqezqmbIu4rej1Gm3+/z7/0THzvGXtXYsMoC20imbDMJ+B/qTr 8j7otvl4aV4YxYghXL1GCha4hjEkHAtxf9UW9j6szl3BoLqZ+Wrjau6AiCot7sIxFziC tItlz52LFb2teEOXqe3ySwOhQZ2sxPi6ulTTX1tSf2s6Ko/F1L7QNcztt2bqz2dOjGQI EHHg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:dkim-filter; bh=N41BGYnc3+UeeJXVOFtDF5tyKi3TLmannlc/qGPyyQQ=; b=Fu1+a7G5sCi7Lq3Wyrhrq36yMLgHZ5hqtGy9Oo1LJbuA57WC4CtbN7iSZTchN9cUCp K6o20HoNVo4O6ncH/Hp2npUPtrADz7Oa+X89cOjEc0w3ne+jIQpfhuH/3cLYt4v9sS0X iQ1ah9aWvkps0j2cxHYjnDo+q2zoE6pA2+DXnwEL3zf9fxiaCXIkcVhWd6iUrMb0VAUc w/8kVusznHYAYmRe9QGOBFG+L6VsS1BETHnhRX4udzLU2K9wcL9X1/mwkCy9BlFP167r vpIglXc4Q7ff1BuxNdF0DeOw9csgDJkAO9aPpLHQoOEYxAc4lVGBxAfrvKYuWyF5VqTG UPQQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@broadcom.com header.s=dkimrelay header.b=Qhg8wej3; spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=broadcom.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c7si4645787pjo.88.2019.07.11.02.06.40; Thu, 11 Jul 2019 02:06:56 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-wireless-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=@broadcom.com header.s=dkimrelay header.b=Qhg8wej3; spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=broadcom.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728289AbfGKJFX (ORCPT + 99 others); Thu, 11 Jul 2019 05:05:23 -0400 Received: from rnd-relay.smtp.broadcom.com ([192.19.229.170]:59746 "EHLO rnd-relay.smtp.broadcom.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726088AbfGKJFX (ORCPT ); Thu, 11 Jul 2019 05:05:23 -0400 Received: from mail-irv-17.broadcom.com (mail-irv-17.lvn.broadcom.net [10.75.224.233]) by rnd-relay.smtp.broadcom.com (Postfix) with ESMTP id 862A730C004; Thu, 11 Jul 2019 02:05:21 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 rnd-relay.smtp.broadcom.com 862A730C004 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1562835921; bh=VjJNh4MWRf/tu2DoDMhq420fEFEG552W2S/Ub8ekiRU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Qhg8wej3oMTt68NfN4mRwTNRiCGWYKQQQYS//GDanlyvKfo6fP6x6JIgSwbFH5CfX 61g+e7v59uipCUaDTFpEmdcn681CJDis5j/PYzanAs+eI7FN7z+g4Ej6V0z/W92hKZ zvjVVuloJk9VHx43M+Ms/5LMiLEMgngipfAnmaGE= Received: from bld-bun-01.bun.broadcom.com (bld-bun-01.bun.broadcom.com [10.176.128.83]) by mail-irv-17.broadcom.com (Postfix) with ESMTP id 7CCC660D1D; Thu, 11 Jul 2019 02:05:21 -0700 (PDT) Received: by bld-bun-01.bun.broadcom.com (Postfix, from userid 25152) id 132A9B00668; Thu, 11 Jul 2019 11:05:19 +0200 (CEST) From: Arend van Spriel To: Kalle Valo Cc: linux-wireless@vger.kernel.org, Arend van Spriel Subject: [PATCH 2/7] brcmfmac: change the order of things in brcmf_detach() Date: Thu, 11 Jul 2019 11:05:07 +0200 Message-Id: <1562835912-1404-3-git-send-email-arend.vanspriel@broadcom.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1562835912-1404-1-git-send-email-arend.vanspriel@broadcom.com> References: <1562835912-1404-1-git-send-email-arend.vanspriel@broadcom.com> Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org When brcmf_detach() from the bus layer upon rmmod we can no longer communicate. Hence we will set the bus state to DOWN and cleanup the event and protocol layer. The network interfaces need to be deleted before brcmf_cfg80211_detach() because the latter does the wiphy_unregister() which issues a warning if there are still network devices linked to the wiphy instance. Reviewed-by: Hante Meuleman Reviewed-by: Pieter-Paul Giesberts Reviewed-by: Franky Lin Signed-off-by: Arend van Spriel --- .../wireless/broadcom/brcm80211/brcmfmac/core.c | 27 +++++++++++----------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c index fda6044..80d54d2 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c @@ -1307,25 +1307,26 @@ void brcmf_detach(struct device *dev) unregister_inet6addr_notifier(&drvr->inet6addr_notifier); #endif - /* stop firmware event handling */ - brcmf_fweh_detach(drvr); - if (drvr->config) - brcmf_p2p_detach(&drvr->config->p2p); - brcmf_bus_change_state(bus_if, BRCMF_BUS_DOWN); - - /* make sure primary interface removed last */ - for (i = BRCMF_MAX_IFS-1; i > -1; i--) - brcmf_remove_interface(drvr->iflist[i], false); - - brcmf_cfg80211_detach(drvr->config); - drvr->config = NULL; - brcmf_bus_stop(drvr->bus_if); + brcmf_fweh_detach(drvr); brcmf_proto_detach(drvr); + /* make sure primary interface removed last */ + for (i = BRCMF_MAX_IFS - 1; i > -1; i--) { + if (drvr->iflist[i]) + brcmf_del_if(drvr, drvr->iflist[i]->bsscfgidx, false); + } + + if (drvr->config) { + brcmf_p2p_detach(&drvr->config->p2p); + brcmf_cfg80211_detach(drvr->config); + drvr->config = NULL; + } + bus_if->drvr = NULL; + wiphy_free(drvr->wiphy); } -- 1.9.1