From patchwork Mon Oct 2 14:08:05 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Marangi X-Patchwork-Id: 147358 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2a8e:b0:403:3b70:6f57 with SMTP id in14csp1529245vqb; Mon, 2 Oct 2023 09:08:05 -0700 (PDT) X-Google-Smtp-Source: AGHT+IECiWtH+Zfq9GqqLamkDkKcmNr08NeBzZ6ewUiaz19PsMts4osV60T0I9QITw/6O0rQFjNG X-Received: by 2002:a05:6a00:181b:b0:68f:b5cb:ced0 with SMTP id y27-20020a056a00181b00b0068fb5cbced0mr14893926pfa.34.1696262885223; Mon, 02 Oct 2023 09:08:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696262885; cv=none; d=google.com; s=arc-20160816; b=mE1y9cwZ9LKYCf0kJCpBuQBa2sgQXanZT4q+pH0tkfvsS54Q8u1Ye7GSWXNbrcko8j 1i/sMoSZU9DYd1A+AuWjNfrj9pk+ZhgXLYDozIZjG90RT8HfoXoX8g+xaalt5guQ6Q4S ubnxJyZwMRM4dyLVJxsE0Yn2TjU3M93hB0KbKi+r4Q9mwB+tipHP3XzVv4RE7dqbmCqc qbNDKTHxtz1fsJ6JwpaIJpTHq1m5twEqqslDOXNO4Ctb/Ozj3HtdRwqhPkEFcavdJhkC dvPJLclNO2k3Hp5sC26W4GO2EHBNTlZwxfNr5Gkho7wo3LRayj3mO0jQWRUOYeWQ0P0z YZ9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=cTarZETHcAW0O9gfgdeOmaYr0S0MXF7s2VIEeHUmcR4=; fh=BFrVyWtwR7Rn0OQtBtWizT1h5XC947j5EbFKidxxeak=; b=ow9z2mVX0vYrgsxE5LzC73StIIvCdhrg30ivEWDJIv8moEzDeIZ7omvOpLRG1G2Ray O+FpBnZ3HpeJR2RVj2mdgclEDrRCaNruQlcb+EZSrhJe/N3UwcIG27dDu0WdCNU+3CB1 nIfgxV0+0Saq0pj1r7pcCXJLwPtfC7W9AeoBDlCkk5brGErBp7H2hlds1uMKb5YdmEgK WVBtKQXwk0w3IF011cUg+70zDyfuMZtJOfNCiOtyJEMRseTtgjut7D5ITOfnLC8b8hwL 7tDel6wzvtjL1I0Fh5Hy09gPMxuvgdVoxAA3sOcmjdJg6pyiczYLXD9+JNq7L6Tg+B6+ BtpA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=SJje1Geq; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from groat.vger.email (groat.vger.email. [23.128.96.35]) by mx.google.com with ESMTPS id y21-20020a056a00191500b0068fbbef7909si29173095pfi.256.2023.10.02.09.08.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Oct 2023 09:08:05 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) client-ip=23.128.96.35; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=SJje1Geq; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 50D648086528; Mon, 2 Oct 2023 07:08:57 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237653AbjJBOIi (ORCPT + 18 others); Mon, 2 Oct 2023 10:08:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60554 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236201AbjJBOIg (ORCPT ); Mon, 2 Oct 2023 10:08:36 -0400 Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com [IPv6:2a00:1450:4864:20::336]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5CC059B; Mon, 2 Oct 2023 07:08:33 -0700 (PDT) Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-405361bb9f7so169895375e9.2; Mon, 02 Oct 2023 07:08:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1696255712; x=1696860512; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=cTarZETHcAW0O9gfgdeOmaYr0S0MXF7s2VIEeHUmcR4=; b=SJje1GeqxE8qTzdXRLfHvTodMBGbPVSReWgR1T910IUdNMUQQsMR71fugaZ3+N8q7/ x5A2O3bt2bx90rcM/Yhj3nkZgF41jGILmalbsJCiWLQEjOnlpdrzeIyF5Cnuc3y6XR6Z A0hP78El6h6XnKOj67c4NgXWNAhJdHo/Dd4A0KzYT1CPdGHMZiP9bbZ+kCg++Hc9frGw EwMuoovrjyWhUlpnYcQ6CJSvx1FGsuwwbJt6DwVAqmjdElHIckYAExfngPCu322skAH9 WSch4LylOqH4Lxu0IMHfLK9VaMYEtRtzTVENEIpu/ZGrePR/36/zyV+JZfD9iZjRlpOs Uqgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696255712; x=1696860512; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=cTarZETHcAW0O9gfgdeOmaYr0S0MXF7s2VIEeHUmcR4=; b=D6qdVBYtq/hXzXPn2R+z3ZwdjBuDUYj/MIe3hECasXoWplGaOQD19/B6EEa1iIXCzK +mHMfT0+MyvFjJO/HFaE5bWXD9rYQ1WWtXyY9bg39fbSKcEXloRvjDxbNUVcAFXnRLqH QAshxzFchJkeSENeZ3m+JarQbK/jmoo2++b2o36ALAmcbpIvuIt2bIQfjcQetME2EqRe cr1YI4ZTtvFB13DJ5N+vPAqxjHnaywq1HKk/Z4qWHiqC77/LrYzBA4Y4p7pVuMUY8XnT msKULqj6SDws7d0px7R/2Y+EHlwChBfXpCHHvT5qZUbMg2xBSK7UAhKUJ8fBVYOqYg5P EI2w== X-Gm-Message-State: AOJu0Yw52gWk7d89Jg0QyOK7V+H9IYwWprfz9qm63dI7gtaY3qd+SXn9 n6Y9gQYdXbSQCyu5HxIfJ18= X-Received: by 2002:a7b:ce09:0:b0:405:3dbc:8821 with SMTP id m9-20020a7bce09000000b004053dbc8821mr9371184wmc.22.1696255711367; Mon, 02 Oct 2023 07:08:31 -0700 (PDT) Received: from localhost.localdomain (93-34-89-13.ip49.fastwebnet.it. [93.34.89.13]) by smtp.googlemail.com with ESMTPSA id d29-20020adfa41d000000b003197869bcd7sm23150227wra.13.2023.10.02.07.08.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Oct 2023 07:08:31 -0700 (PDT) From: Christian Marangi To: Felix Fietkau , John Crispin , Sean Wang , Mark Lee , Lorenzo Bianconi , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Matthias Brugger , AngeloGioacchino Del Regno , Michael Lee , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org Cc: Christian Marangi , stable@vger.kernel.org Subject: [net PATCH] net: ethernet: mediatek: disable irq before schedule napi Date: Mon, 2 Oct 2023 16:08:05 +0200 Message-Id: <20231002140805.568-1-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.40.1 MIME-Version: 1.0 X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Mon, 02 Oct 2023 07:08:57 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778660550803889827 X-GMAIL-MSGID: 1778660550803889827 While searching for possible refactor of napi_schedule_prep and __napi_schedule it was notice that the mtk eth driver disable the interrupt for rx and tx AFTER napi is scheduled. While this is a very hard to repro case it might happen to have situation where the interrupt is disabled and never enabled again as the napi completes and the interrupt is enabled before. This is caused by the fact that a napi driven by interrupt expect a logic with: 1. interrupt received. napi prepared -> interrupt disabled -> napi scheduled 2. napi triggered. ring cleared -> interrupt enabled -> wait for new interrupt To prevent this case, disable the interrupt BEFORE the napi is scheduled. Fixes: 656e705243fd ("net-next: mediatek: add support for MT7623 ethernet") Cc: stable@vger.kernel.org Signed-off-by: Christian Marangi --- drivers/net/ethernet/mediatek/mtk_eth_soc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c index 82b51072aad8..7669b446915a 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c @@ -3172,8 +3172,8 @@ static irqreturn_t mtk_handle_irq_rx(int irq, void *_eth) eth->rx_events++; if (likely(napi_schedule_prep(ð->rx_napi))) { - __napi_schedule(ð->rx_napi); mtk_rx_irq_disable(eth, eth->soc->txrx.rx_irq_done_mask); + __napi_schedule(ð->rx_napi); } return IRQ_HANDLED; @@ -3185,8 +3185,8 @@ static irqreturn_t mtk_handle_irq_tx(int irq, void *_eth) eth->tx_events++; if (likely(napi_schedule_prep(ð->tx_napi))) { - __napi_schedule(ð->tx_napi); mtk_tx_irq_disable(eth, MTK_TX_DONE_INT); + __napi_schedule(ð->tx_napi); } return IRQ_HANDLED;