From patchwork Mon Dec 7 12:57:33 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Neil Armstrong X-Patchwork-Id: 553379 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id B6531140291 for ; Mon, 7 Dec 2015 23:59:52 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b=D2V7nEIp; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755779AbbLGM7N (ORCPT ); Mon, 7 Dec 2015 07:59:13 -0500 Received: from mail-wm0-f52.google.com ([74.125.82.52]:32910 "EHLO mail-wm0-f52.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755649AbbLGM7K (ORCPT ); Mon, 7 Dec 2015 07:59:10 -0500 Received: by wmec201 with SMTP id c201so164193335wme.0 for ; Mon, 07 Dec 2015 04:59:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=U5ap6io26sUSw8GxPmWZ/P3vGpgMLNa67pXNEqz/8fI=; b=D2V7nEIpsv/lR97p8mk0dM6DN8Rkq0E1fnHUut9cHndU8CGTp+DaaVuMNaCrsEAxis Panoc8TXTiLIa9TaN+8CUJ6feIPMKlghlzIs/C/K1+l55BcEMDjG2d4SjUNp7NVUnSXH Cw4oGbegi94CFbB8g/fvN/fldWf5B/bgvmFIM7kCxaquymzLG5FsaJq+iu0pPmGE3TFQ C+g95AyKure5iId3rEbnyXnbBFYS9d8BugO+ci5SQca3/JFAxChow+hcocL0KcU4J1FV ACjgnRCPChYkPShv5yIPeoWpTYOAdwYBqgyagG7ezGQyfcu2hfnJG17BQOYbGhJMdlz5 N4Gg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=U5ap6io26sUSw8GxPmWZ/P3vGpgMLNa67pXNEqz/8fI=; b=hkAbCPCfW5Jz7jEPEKBqmav4lCXecoyiV/CnYNF6CQiHiDDDUmMKaak8iHkR87KRQO bWyiVQWagIxBPrO1nDuLbgRjVBS7OPuuZ6Z35cXDFlYn+Vp1BvDbtwAXSgTqF3YdBjSG PqLapLPeq1oXtYis3PEb0br4uicoZFmz48bMSWOXBa1OzTuMaP+TThktO2ECIkkVtl+a mRwrCMd5R47FCDaAJMOJ8PvMYiG8gY5qCulfAaMYe/WYL+pbGVyX8cV2mHghEVCxx6OB +QtEkYLxbYZcysTAr6LIWdfwu44P6BGUCEJm73rPD3GWXKOav7Q7rSx4fky2jPr03f64 J95A== X-Gm-Message-State: ALoCoQntAILUWy4+DtMQThnkopzcNPGFa3VQSwwbz4XKOltNN87xmiOu4Q3/RdWbdjViRxjvSCak X-Received: by 10.194.200.5 with SMTP id jo5mr32890629wjc.79.1449493146994; Mon, 07 Dec 2015 04:59:06 -0800 (PST) Received: from zoidberg.home ([90.63.244.31]) by smtp.gmail.com with ESMTPSA id 186sm16660793wmv.9.2015.12.07.04.59.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 07 Dec 2015 04:59:05 -0800 (PST) From: Neil Armstrong To: davem@davemloft.net, andrew@lunn.ch, f.fainelli@gmail.com, linux@roeck-us.net, vivien.didelot@savoirfairelinux.com, fabf@skynet.be, pavel.nakonechny@skitlab.ru, joe@perches.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Neil Armstrong Subject: [PATCH v3 net-next 2/4] net: dsa: cleanup resources upon module removal Date: Mon, 7 Dec 2015 13:57:33 +0100 Message-Id: <1449493055-29047-3-git-send-email-narmstrong@baylibre.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1449493055-29047-1-git-send-email-narmstrong@baylibre.com> References: <56321D9A.8010109@baylibre.com> <1449493055-29047-1-git-send-email-narmstrong@baylibre.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Make sure that we unassign the master_netdev dsa_ptr to make the packet processing go through the regular Ethernet receive path. Suggested-by: Florian Fainelli Signed-off-by: Neil Armstrong --- net/dsa/dsa.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/net/dsa/dsa.c b/net/dsa/dsa.c index 0f41f71..d9e0172 100644 --- a/net/dsa/dsa.c +++ b/net/dsa/dsa.c @@ -985,6 +985,14 @@ static int dsa_suspend(struct device *d) struct dsa_switch_tree *dst = platform_get_drvdata(pdev); int i, ret = 0; + dst->master_netdev->dsa_ptr = NULL; + + /* If we used a tagging format that doesn't have an ethertype + * field, make sure that all packets from this point get sent + * without the tag and go through the regular receive path. + */ + wmb(); + for (i = 0; i < dst->pd->nr_chips; i++) { struct dsa_switch *ds = dst->ds[i];