From nobody Mon Sep 16 19:23:55 2024 Received: from mail-lf1-f45.google.com (mail-lf1-f45.google.com [209.85.167.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 01BB813A40B for ; Fri, 26 Jul 2024 20:00:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722024005; cv=none; b=TWd2d8cpt/3cpy3LPbCdXNWEj0UmuHNK6VFVePWVfzYcEiuOy8ZOWdCopKfDZlesGGgInAN/V4ZZihDX2HNE338xCVLSWubcRoQtL+ZQ/8G70WUVaUMRfI1Nx9GnDaOiE6V08SH724yg3t8szWA4iG8Bb/pZIk0XJju1k9KiMX8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722024005; c=relaxed/simple; bh=umTkgL20LJJ5BJ5TMY3wbVVZSYY4K2TQqLUKPlJzF6M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Jl6/A2D6KpSyUBHkI+uI1j4jKTM2D201xwWrpBRaS7TUdZFB9DjtKf8kpM2EW8FNkoqNGSewRRtBU6h5K/A7PpXIOE2xBgfQxKqurNGsaaywJ9yT1mQLoiKW0O1Sz5qaTefIEf9F9aNKZFyZfmFxRX3LbVUDUgiMGS0ZWQ2mpc4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=XeGNwk76; arc=none smtp.client-ip=209.85.167.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="XeGNwk76" Received: by mail-lf1-f45.google.com with SMTP id 2adb3069b0e04-52f04b3cb33so3672134e87.0 for ; Fri, 26 Jul 2024 13:00:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1722024000; x=1722628800; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=0rRANtn5FFSQpIi4AkDQO6AI/rum9i8w5k7JfryoiRY=; b=XeGNwk76gxDVusoj/Y2TjLDt1/jG130lyY33Z7QsYOFtFv6quscWEU1Kq2TSR2zPTk DsxWKSn3JPj6FgaRW1gMmLmlyFP8XMc02jJvNkzWF06Q2qWrhLZhgC3NLgyjoUrqCTwl xJV6v3dTJXtX3u6rBT9PLD1Z8khP/p/FiRfsrpUt8SFsvS8vflYbn8fV7cvW8cTaNXUE uTCOQef5XDrBA+Rp/XrTmDSGnOyF1ZSxLz3p6quvyAAzalbrnfCZ5t9avdsSCQ4uWCh3 7JD+hcrpJfyNtRw80aO7w1U7lMkydX1EqAHTd4LiqkrCnqWetqlnUhVt16TdW/4vCwjk ESQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722024000; x=1722628800; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0rRANtn5FFSQpIi4AkDQO6AI/rum9i8w5k7JfryoiRY=; b=EVxePeUSP0fYY9DBiXSVqpr0CN0NhUglrJVx8RRcTr7VpBX6qmrUyd4WfPm4fwZpi+ UWYUFYMJsrd1IVG5sYXce2tvvYXzDGLu9zSyKicYHVNNHjRt/jzyKRcrPTpuWxs6dgD8 gQyyzcp7kuXQ8JZ7t/Wnd6RWHh6xHqWl+QKIgP/LO+5BQQy3FuIWm1WOgjHM+BAffAB7 otcR4fJkDbY9F7Hr+4D52WTyzyTAJ5Er15QH6g8r0XWUXGuOMiTcBgHC99QINWKaYxpK ngG1/hd5wq1NdGDSfYSH+BhM3Q4MjEpx03/NETj+0/byDU/FjKDvyyul9j8dYvYJqe0l g50Q== X-Forwarded-Encrypted: i=1; AJvYcCXcpTAEVy3Y+a4icgPiu5JvFzzTEOkcfYS23Fe8dXgScJ44NmfGT3ud+U5Wc3lcBQBSMnoIcMiwAbrn/5SDh6RY+EEMsFcdAevSmndE X-Gm-Message-State: AOJu0YzeJ0EaArVBFVYqOQnBQU8NWP+JK0OMAsSNgMyrx4VLvEbXAtPu cucRPJfpzOazcXrHdDvD5kxVTQUUkVcQvIP1uvHFCOKYHL23A9UmC8UYW53+yVk= X-Google-Smtp-Source: AGHT+IFqyJeT7Bd3hBXayuB7ciuhZR22Sas07xipqxPU0HZelY0F87AGXarcmLjhetiEv/Y3obpt/A== X-Received: by 2002:a05:6512:2c96:b0:52f:d6d0:fc52 with SMTP id 2adb3069b0e04-5309b269222mr656156e87.6.1722023999888; Fri, 26 Jul 2024 12:59:59 -0700 (PDT) Received: from blmsp.fritz.box ([2001:4091:a245:8609:c1c4:a4f8:94c8:31f2]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a7acad90e1esm209999166b.151.2024.07.26.12.59.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Jul 2024 12:59:59 -0700 (PDT) From: Markus Schneider-Pargmann To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Vincent Mailhol , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Markus Schneider-Pargmann , =?UTF-8?q?Martin=20Hundeb=C3=B8ll?= , Michal Kubiak , Simon Horman , Tony Lindgren , Judith Mendez Cc: Matthias Schiffer , Linux regression tracking , linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/7] can: m_can: Reset coalescing during suspend/resume Date: Fri, 26 Jul 2024 21:59:38 +0200 Message-ID: <20240726195944.2414812-2-msp@baylibre.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240726195944.2414812-1-msp@baylibre.com> References: <20240726195944.2414812-1-msp@baylibre.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable During resume the interrupts are limited to IR_RF0N and the chip keeps running. In this case if coalescing is enabled and active we may miss waterlevel interrupts during suspend. It is safer to reset the coalescing by stopping the timer and adding IR_RF0N | IR_TEFN to the interrupts. This is a theoratical issue and probably extremely rare. Cc: Martin Hundeb=C3=B8ll Fixes: 4a94d7e31cf5 ("can: m_can: allow keeping the transceiver running in = suspend") Signed-off-by: Markus Schneider-Pargmann --- drivers/net/can/m_can/m_can.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c index 7f63f866083e..9d7d551e3534 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -2427,12 +2427,15 @@ int m_can_class_suspend(struct device *dev) netif_device_detach(ndev); =20 /* leave the chip running with rx interrupt enabled if it is - * used as a wake-up source. + * used as a wake-up source. Coalescing needs to be reset then, + * the timer is cancelled here, interrupts are done in resume. */ - if (cdev->pm_wake_source) + if (cdev->pm_wake_source) { + hrtimer_cancel(&cdev->hrtimer); m_can_write(cdev, M_CAN_IE, IR_RF0N); - else + } else { m_can_stop(ndev); + } =20 m_can_clk_stop(cdev); } @@ -2462,6 +2465,13 @@ int m_can_class_resume(struct device *dev) return ret; =20 if (cdev->pm_wake_source) { + /* Restore active interrupts but disable coalescing as + * we may have missed important waterlevel interrupts + * between suspend and resume. Timers are already + * stopped in suspend. Here we enable all interrupts + * again. + */ + cdev->active_interrupts |=3D IR_RF0N | IR_TEFN; m_can_write(cdev, M_CAN_IE, cdev->active_interrupts); } else { ret =3D m_can_start(ndev); --=20 2.45.2 From nobody Mon Sep 16 19:23:55 2024 Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9760C13FD66 for ; Fri, 26 Jul 2024 20:00:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722024004; cv=none; b=Uy9BfEmy1wKiUxpY73RxxxzL9TjeHgPNGyJdrMiWq18RrpTMRx4x57mtXb/1+tGcOO1zv9Yw6jYGavBHGGzrRv4dx7husSk0Dq58RcexUl1RmsQKxV66xExKnlTbJT/9JQEJONdu00jKNnz4KMmnGeP6FgB9yqH5awBs08EM2eQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722024004; c=relaxed/simple; bh=X0Lb8mIRnjkJhheZaa1C9/ChMOXWk5LNcIzDjYItBcU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=p73zmL4OyMNMnFfZtPSMFyNzVu10tKDjoAzfoSHONqLUpGmDqf53pr9oU+kr806IE3aLyNNEiQ2HEBk0Nj8N7+TiyP4x3iz+icjze8xyQ9sjks31njbSl9QGT8cG6lYFjbbOnDvKUcDs3185DX5YQ+RADsCf4UTrgXmIhnNBMW8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=UnJcUbJr; arc=none smtp.client-ip=209.85.208.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="UnJcUbJr" Received: by mail-ed1-f47.google.com with SMTP id 4fb4d7f45d1cf-5af326eddb2so1601979a12.1 for ; Fri, 26 Jul 2024 13:00:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1722024001; x=1722628801; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=RujnloDbg8cFq7uk55+LRxz/Crsv4ySF/ZqdPlHzEpI=; b=UnJcUbJrDG9Cq804yVbehwjGAd++KrMBOQzz716Pwcnv2sym3XrA7RBcmayl3k23cg vMQhICD4s+3vEUxb9aUAyDpJrAkQVB8rdJgqUGaYZmVyjxg6W74kTpM8c/ysgNJmK2bW 95aGCuNTw6nVqAFvvfRHF44wWPcd/ejbxP0XEDWNzYS3HrLt0s3YjajH3NPktFKkGINP xejpMzWqF+zG/Wdz3P8g6AoXkGdbWurp+mRQM2tRWa8Po1K3/fER+akwyvplj1C6K1qg 5kD14gKfLDLB1JKgcfk5+CtiYDCj/++PoUAHuI7r4Dh+9hTGnwfyESrVP3WezvKWGqoI fgtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722024001; x=1722628801; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=RujnloDbg8cFq7uk55+LRxz/Crsv4ySF/ZqdPlHzEpI=; b=HqJE/BamBVmX3lu2G7VpNB55glzINsrvY7zGzXiGNo39V3AIO5KSyVEMdcmDx1m+kG itlMoO3Un8BfesQDaATHsi418mFYqS1+71y30d6qkC43tQUdIv23QJxdGJWI1U0MeLkb r0RxOH4PYKVgKOrjH7NAWfrWeg8FhQIN97KDu4eW7cEVMe3abuPySLOy/h/fJGybkcGa bbQUAwAUJ/OW5fv8iR2ADyg6hfrl/PvwWPUNhL9UzuOm4uTJw/qqZGMfm5+reXc3D3Ky L/FLQcDpssZr7MEmrzpRYMKY7JgNvb4MNYNmLcWUfcFdvhEVL/XEj1WrgJl8j2vcsbrX cymw== X-Forwarded-Encrypted: i=1; AJvYcCW+sH22fL+KoZ9eJ2+hjjTINS5ax7fUDqPNa+Of6MOLWHP5F3+HBuHEitKWOg3FrH/4vYnr0t9d4i6/U1RzgVDak5z0oFa5TtjBYS/n X-Gm-Message-State: AOJu0Yw2M5MIgU7yYkRyE5t3MCFkBBFBSCICkCGCD47AXF78I0emHEbB NeMqh4NBCiXYBut8pXG/RqVQamEFmdj5jzDqb8fcBk/cQDKR3/j/C/iPbcv8yGI= X-Google-Smtp-Source: AGHT+IGLTeby7IgSps+WCZxoecp8rEY41Qs9z/KH8R39SBVZDRYsG+VUFkY5AJGG2wUOq14cKvVarA== X-Received: by 2002:a17:907:7f88:b0:a7d:2772:6d5f with SMTP id a640c23a62f3a-a7d3fa3f8bemr56915366b.23.1722024000997; Fri, 26 Jul 2024 13:00:00 -0700 (PDT) Received: from blmsp.fritz.box ([2001:4091:a245:8609:c1c4:a4f8:94c8:31f2]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a7acad90e1esm209999166b.151.2024.07.26.13.00.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Jul 2024 13:00:00 -0700 (PDT) From: Markus Schneider-Pargmann To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Vincent Mailhol , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Markus Schneider-Pargmann , =?UTF-8?q?Martin=20Hundeb=C3=B8ll?= , Michal Kubiak , Simon Horman , Tony Lindgren , Judith Mendez Cc: Matthias Schiffer , Linux regression tracking , linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/7] can: m_can: Remove coalesing disable in isr during suspend Date: Fri, 26 Jul 2024 21:59:39 +0200 Message-ID: <20240726195944.2414812-3-msp@baylibre.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240726195944.2414812-1-msp@baylibre.com> References: <20240726195944.2414812-1-msp@baylibre.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" We don't need to disable coalescing when the interrupt handler executes while the chip is suspended. The coalescing is already reset during suspend. Fixes: 07f25091ca02 ("can: m_can: Implement receive coalescing") Signed-off-by: Markus Schneider-Pargmann --- drivers/net/can/m_can/m_can.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c index 9d7d551e3534..fd600ab93218 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -1223,10 +1223,8 @@ static irqreturn_t m_can_isr(int irq, void *dev_id) struct m_can_classdev *cdev =3D netdev_priv(dev); u32 ir; =20 - if (pm_runtime_suspended(cdev->dev)) { - m_can_coalescing_disable(cdev); + if (pm_runtime_suspended(cdev->dev)) return IRQ_NONE; - } =20 ir =3D m_can_read(cdev, M_CAN_IR); m_can_coalescing_update(cdev, ir); --=20 2.45.2 From nobody Mon Sep 16 19:23:55 2024 Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0B26F14A08B for ; Fri, 26 Jul 2024 20:00:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722024007; cv=none; b=VYAB/G2Imwo+w0AgLIivggaS3CbgnKvXDFi0XSJT28VPnh9Wt/U3+lsfWJm6602/jFIN9iIuMbDqBPQFTl+ZDDM/6WZR/54NP5x3v5EBjwXrGF7TLjzqPbhbM92brqlZmbjCcSS124qRvXzQuNwDVOa6Hf/Q2anwsPtXP2afbHo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722024007; c=relaxed/simple; bh=EbgGe2gsLdH2biBweP1nqPyr3Zg50Y1HA4LdIiHtm3k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=n+iM/fcweCgBl8Aaqz6pOo7iK2wI/Bz4eUUxnBVyKiVzLv56NJAjtY4pl4qv1crBJJj4AOiKcnh+rqU20vaJkQ4eNzkU6wO6/pydkTzUQGwL4vjcPfVhiWUcIpfSo9l2l+jnPGMDlzU+doRSTRDMbcdTXI+A+V165/WNizMXOWk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=vE8wLO46; arc=none smtp.client-ip=209.85.208.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="vE8wLO46" Received: by mail-ed1-f51.google.com with SMTP id 4fb4d7f45d1cf-5afa207b8bfso706827a12.0 for ; Fri, 26 Jul 2024 13:00:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1722024003; x=1722628803; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=POgjzXRrZKTYuk9IJwxX6t4KWtvdb6O1DoH7Fypmtpc=; b=vE8wLO46tz42t4+EsgXj+WRE4wNMAzeRXioKCIhmj+m/AiV3tN3sLLwv84HFS1+HM/ kMoguvHy4wsBHXuGaxgFnH9TwN5JzbqUcYcG09nuxFCQHPI0dt1Rr56yCiQZKkIl57Fe F38W+bZg2IuT6eXoRhTQkOYCp4QleVN4TpiYzjr5jrLN7WyU1/lv9RRAet9EPo6kb00t dpBZWeidfzzi7vGPOGPYkUthyQJlGpar+eJxmjYvnqzEGwdfOM+JDUYwR6XuOrX20Swl inSB/U5ESurF9zn6DOG+aHUv7Buwfqjcz1Irta7IOBORcDIN3IIJ6IbzCbbJqdew4kB5 gRzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722024003; x=1722628803; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=POgjzXRrZKTYuk9IJwxX6t4KWtvdb6O1DoH7Fypmtpc=; b=DW3DKIILo0Ev5Vq0uLvbQxM5LC6XSH6EfsnYYO+vgkwn21U0ICprI+G5rcRNamXprC d2ciKpRBowyWAnoUoUmyagaVEwmcbG8TGLO3dk3YhEy8Iq1EGfzH3i7GrY4Jz3QBNYDk wuIYIrj10VBedWmFcga3BWUOV/XQtpgm0IV5jIJEwfRxiDg40nPH2qdFNV8LYt8Ny79E imctL8dExLPU0JF4ZCV1a9exFKsGBSHE1Z5oqR+VeOLP2PgvtidCPpM402yf2UHRr3l3 pTt8WECm+mTpTf1tLtFR0PbiNSwpZdk1crba2+/uIqYuLpFseOzoSSoI3rSKRYNp9P9F oL5g== X-Forwarded-Encrypted: i=1; AJvYcCUZgYLyTokjiDUZ4MLhtc/hbX5cTx3CZqkyHxrJ40q2P5gOQar9MahOffGtHQXWTbgeO/8eiEv0uG7Ws5gvbu84dBJOk7QYBLSeWIID X-Gm-Message-State: AOJu0Yzwl4/KpE9eSWFBrxI1lKqBD4e4dk+d35gxYFnb2wuRYaiA2+gS Qy67InUkM81vX5Ti/KBmHOTCgS3BLMv1dGeH56zTx98XwUXRsC+fcQMMehwWvuw= X-Google-Smtp-Source: AGHT+IFTEGZPICz8oxt3K4AgX4DGGbn/vDQD5wGVMFK8bcxJxs67PXzAxqfUJbBP4LD3EEqv+kU6xA== X-Received: by 2002:a17:907:2da7:b0:a7a:ab1a:2d65 with SMTP id a640c23a62f3a-a7d40160769mr43935566b.67.1722024003367; Fri, 26 Jul 2024 13:00:03 -0700 (PDT) Received: from blmsp.fritz.box ([2001:4091:a245:8609:c1c4:a4f8:94c8:31f2]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a7acad90e1esm209999166b.151.2024.07.26.13.00.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Jul 2024 13:00:02 -0700 (PDT) From: Markus Schneider-Pargmann To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Vincent Mailhol , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Markus Schneider-Pargmann , =?UTF-8?q?Martin=20Hundeb=C3=B8ll?= , Michal Kubiak , Simon Horman , Tony Lindgren , Judith Mendez Cc: Matthias Schiffer , Linux regression tracking , linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/7] can: m_can: Remove m_can_rx_peripheral indirection Date: Fri, 26 Jul 2024 21:59:40 +0200 Message-ID: <20240726195944.2414812-4-msp@baylibre.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240726195944.2414812-1-msp@baylibre.com> References: <20240726195944.2414812-1-msp@baylibre.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" m_can_rx_peripheral() is a wrapper around m_can_rx_handler() that calls m_can_disable_all_interrupts() on error. The same handling for the same error path is done in m_can_isr() as well. So remove m_can_rx_peripheral() and do the call from m_can_isr() directly. Signed-off-by: Markus Schneider-Pargmann --- drivers/net/can/m_can/m_can.c | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c index fd600ab93218..42ed7f0fea78 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -1037,22 +1037,6 @@ static int m_can_rx_handler(struct net_device *dev, = int quota, u32 irqstatus) return work_done; } =20 -static int m_can_rx_peripheral(struct net_device *dev, u32 irqstatus) -{ - struct m_can_classdev *cdev =3D netdev_priv(dev); - int work_done; - - work_done =3D m_can_rx_handler(dev, NAPI_POLL_WEIGHT, irqstatus); - - /* Don't re-enable interrupts if the driver had a fatal error - * (e.g., FIFO read failure). - */ - if (work_done < 0) - m_can_disable_all_interrupts(cdev); - - return work_done; -} - static int m_can_poll(struct napi_struct *napi, int quota) { struct net_device *dev =3D napi->dev; @@ -1250,7 +1234,7 @@ static irqreturn_t m_can_isr(int irq, void *dev_id) } else { int pkts; =20 - pkts =3D m_can_rx_peripheral(dev, ir); + pkts =3D m_can_rx_handler(dev, NAPI_POLL_WEIGHT, ir); if (pkts < 0) goto out_fail; } --=20 2.45.2 From nobody Mon Sep 16 19:23:55 2024 Received: from mail-ed1-f45.google.com (mail-ed1-f45.google.com [209.85.208.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 126D014EC4B for ; Fri, 26 Jul 2024 20:00:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722024009; cv=none; b=FxoovdRD/pV3+53IZ4XPl2hcgB7jELYZd85S+LFViCAE25kWSNwl+WaCSnxsuZUkqukcir1XTQRD2i3KRulJ9YOklhG1n6po5yvFBYPKlg/nSYwHxB6rw0MmBP/JKaNVfAwRZE6X4Uc3VZby2uJKNZo4NHUVtgRbZ1lxEPwFdoM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722024009; c=relaxed/simple; bh=J14Wge9LcsEa7FQuC1M+/lsG9UZ/eoPKBj1txE0yej8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jTAqnYL9lISGIfMWoKxkUv5YdFtsCA+WCZ/uJz6P37IlIDMGJVpY/U4TvJken5fsvIA94W0bReG2vtbPVGPk4B937gMP0l3xRpqXNltx2QfUrPF7m9tjzZHKqXD5pOQWjTGkWySjBGGNVECHPvrLNibCLOFjg4/LYFIEWJJlMD4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=yUFpBD0v; arc=none smtp.client-ip=209.85.208.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="yUFpBD0v" Received: by mail-ed1-f45.google.com with SMTP id 4fb4d7f45d1cf-5a309d1a788so2838647a12.3 for ; Fri, 26 Jul 2024 13:00:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1722024005; x=1722628805; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=CvEzDkwz6VWUUds2tie0+9vVLaqnWTgyheAACKxwxaM=; b=yUFpBD0v/GYuTjQmepxGGNxZrGzoRuOL+oz4PzCVuJwCRpzuwkErlQy/xZXsjTg0ny GtLcy/wbqJvxrm5+38f7bdGDJgI2dQEi+c/9WtZV5aqSWZwwMOzZhxKWtCnrSfj51bIs XnkY+o1XFWKzYOOxDf+Jtb+vF4ngbj7qyPykc8Bax9F1Qw1KXGe+7oh5S9sXXlINtmo8 +wgggMjsCcSRHKso1+U7U06nyHr0jvMSMccZOF/tbh5J1cYCO8wFBqtBraObjc2o6jWZ N91H/0FVb0YV4fuRoHJBjDMS5+roRiNZXdqYJ4wqHYp3wnCCerZi4O5OIYa+stLCBzeh CqNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722024005; x=1722628805; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=CvEzDkwz6VWUUds2tie0+9vVLaqnWTgyheAACKxwxaM=; b=azbv3xmtANueznRO6CTMR1cmJEp84xOpBShx1gAhRQoK+RQJOM1TMBTQNi7fhDIGNR VVG1a9poN6U+1W9596UnfpH9xJxRg9p/iVv9rxQJ+auX1RqVuyuK5lotg9lZ6ULp8hjw 2Nq0+OREOttXac4AH1APUhCJD3OBdklES5VUDY/4VHvfC0YRQOuj0hOTS0TacSbXqtBi MyXep3kq0CKLc9cn018gthIb8/jujknUGx2cPr6W8RqBrcd0y8S9lKV/lRj6kXAR75CS h2Lu20sEOPRoOn2RbN9K3BMP1EwNYdeHo7c4JwmTjo5l5Dh2Z9ykBrTcKx652B/Fsz29 3ozw== X-Forwarded-Encrypted: i=1; AJvYcCWD+qYkEnrkEFByUzeY1cdXboeMHKWZI5ddpzXurykHRg3Zsn+KlTZ37+5NQ3+e2Je3cmvenKKgqMxsw6XjRSQU5Woe3troPthMBF62 X-Gm-Message-State: AOJu0YyOhaFjvb3KvXmbJ+7mmGvtUrrs3Y20NI8edwJoKwh40GFQh4TB 7n8RFjL4yH1qBRylUxZRmeBHheXJb43OoZjPLagIxA/EKIrxYaSuqLo1lROftIQ= X-Google-Smtp-Source: AGHT+IEoDGkSOlQQ1HqCH1hfBsQQjAOrogps53xCogk84g3vmjMcSvrVqFKhcBtYalOd4BgYXx9pIg== X-Received: by 2002:a17:907:9409:b0:a7a:b1a5:21a6 with SMTP id a640c23a62f3a-a7d400a037amr42049766b.33.1722024005422; Fri, 26 Jul 2024 13:00:05 -0700 (PDT) Received: from blmsp.fritz.box ([2001:4091:a245:8609:c1c4:a4f8:94c8:31f2]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a7acad90e1esm209999166b.151.2024.07.26.13.00.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Jul 2024 13:00:05 -0700 (PDT) From: Markus Schneider-Pargmann To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Vincent Mailhol , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Markus Schneider-Pargmann , =?UTF-8?q?Martin=20Hundeb=C3=B8ll?= , Michal Kubiak , Simon Horman , Tony Lindgren , Judith Mendez Cc: Matthias Schiffer , Linux regression tracking , linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 4/7] can: m_can: Do not cancel timer from within timer Date: Fri, 26 Jul 2024 21:59:41 +0200 Message-ID: <20240726195944.2414812-5-msp@baylibre.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240726195944.2414812-1-msp@baylibre.com> References: <20240726195944.2414812-1-msp@baylibre.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" On setups without interrupts, the interrupt handler is called from a timer callback. For non-peripheral receives napi is scheduled, interrupts are disabled and the timer is canceled with a blocking call. In case of an error this can happen as well. Check if napi is scheduled in the timer callback after the interrupt handler executed. If napi is scheduled, the timer is disabled. It will be reenabled by m_can_poll(). Return error values from the interrupt handler so that interrupt threads and timer callback can deal differently with it. In case of the timer we only disable the timer. The rest will be done when stopping the interface. Fixes: b382380c0d2d ("can: m_can: Add hrtimer to generate software interrup= t") Fixes: a163c5761019 ("can: m_can: Start/Cancel polling timer together with = interrupts") Signed-off-by: Markus Schneider-Pargmann --- drivers/net/can/m_can/m_can.c | 58 ++++++++++++++++++++++++++--------- 1 file changed, 43 insertions(+), 15 deletions(-) diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c index 42ed7f0fea78..e70c7100a3c9 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -487,7 +487,7 @@ static inline void m_can_disable_all_interrupts(struct = m_can_classdev *cdev) =20 if (!cdev->net->irq) { dev_dbg(cdev->dev, "Stop hrtimer\n"); - hrtimer_cancel(&cdev->hrtimer); + hrtimer_try_to_cancel(&cdev->hrtimer); } } =20 @@ -1201,11 +1201,16 @@ static void m_can_coalescing_update(struct m_can_cl= assdev *cdev, u32 ir) HRTIMER_MODE_REL); } =20 -static irqreturn_t m_can_isr(int irq, void *dev_id) +/** + * This interrupt handler is called either from the interrupt thread or a + * hrtimer. This has implications like cancelling a timer won't be possible + * blocking. + */ +static int m_can_interrupt_handler(struct m_can_classdev *cdev) { - struct net_device *dev =3D (struct net_device *)dev_id; - struct m_can_classdev *cdev =3D netdev_priv(dev); + struct net_device *dev =3D cdev->net; u32 ir; + int ret; =20 if (pm_runtime_suspended(cdev->dev)) return IRQ_NONE; @@ -1232,11 +1237,9 @@ static irqreturn_t m_can_isr(int irq, void *dev_id) m_can_disable_all_interrupts(cdev); napi_schedule(&cdev->napi); } else { - int pkts; - - pkts =3D m_can_rx_handler(dev, NAPI_POLL_WEIGHT, ir); - if (pkts < 0) - goto out_fail; + ret =3D m_can_rx_handler(dev, NAPI_POLL_WEIGHT, ir); + if (ret < 0) + return ret; } } =20 @@ -1254,8 +1257,9 @@ static irqreturn_t m_can_isr(int irq, void *dev_id) } else { if (ir & (IR_TEFN | IR_TEFW)) { /* New TX FIFO Element arrived */ - if (m_can_echo_tx_event(dev) !=3D 0) - goto out_fail; + ret =3D m_can_echo_tx_event(dev); + if (ret !=3D 0) + return ret; } } =20 @@ -1263,16 +1267,31 @@ static irqreturn_t m_can_isr(int irq, void *dev_id) can_rx_offload_threaded_irq_finish(&cdev->offload); =20 return IRQ_HANDLED; +} =20 -out_fail: - m_can_disable_all_interrupts(cdev); - return IRQ_HANDLED; +static irqreturn_t m_can_isr(int irq, void *dev_id) +{ + struct net_device *dev =3D (struct net_device *)dev_id; + struct m_can_classdev *cdev =3D netdev_priv(dev); + int ret; + + ret =3D m_can_interrupt_handler(cdev); + if (ret < 0) { + m_can_disable_all_interrupts(cdev); + return IRQ_HANDLED; + } + + return ret; } =20 static enum hrtimer_restart m_can_coalescing_timer(struct hrtimer *timer) { struct m_can_classdev *cdev =3D container_of(timer, struct m_can_classdev= , hrtimer); =20 + if (cdev->can.state =3D=3D CAN_STATE_BUS_OFF || + cdev->can.state =3D=3D CAN_STATE_STOPPED) + return HRTIMER_NORESTART; + irq_wake_thread(cdev->net->irq, cdev->net); =20 return HRTIMER_NORESTART; @@ -1973,8 +1992,17 @@ static enum hrtimer_restart hrtimer_callback(struct = hrtimer *timer) { struct m_can_classdev *cdev =3D container_of(timer, struct m_can_classdev, hrtimer); + int ret; =20 - m_can_isr(0, cdev->net); + if (cdev->can.state =3D=3D CAN_STATE_BUS_OFF || + cdev->can.state =3D=3D CAN_STATE_STOPPED) + return HRTIMER_NORESTART; + + ret =3D m_can_interrupt_handler(cdev); + + /* On error or if napi is scheduled to read, stop the timer */ + if (ret < 0 || napi_is_scheduled(&cdev->napi)) + return HRTIMER_NORESTART; =20 hrtimer_forward_now(timer, ms_to_ktime(HRTIMER_POLL_INTERVAL_MS)); =20 --=20 2.45.2 From nobody Mon Sep 16 19:23:55 2024 Received: from mail-ed1-f41.google.com (mail-ed1-f41.google.com [209.85.208.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A34E714F9E6 for ; Fri, 26 Jul 2024 20:00:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722024010; cv=none; b=XC1TprlLuTr7Ctbt8WKP4FdqQnOwHR7+TQgCXkYxnga6UwyyHaI4OjPCk580iXLxLCyJMDtUA7bZdmlib1VEF7NC/kZnd+wGHq48AakpWH+H+UjnAowFQ25YY69I0ByJUlwtavjDRkHWPw6VxTmNyLXPlj7tl3nubMXTVO9SQaI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722024010; c=relaxed/simple; bh=t6EwZ6i4na0n8NMTSrZB1GIshA5X1Zsp8851eUofPjM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lQq/FbBlWu5VQGOFLxlUjMXSMd32Mfi7DKJk2YGMYKbRY52FfyrqKu3sQ9VlsAfFdUT5/oVqr3M9V0Qzg8KBAxckY79S93TRUhNcVaa25Me//FFji84dvO6j5NZhASy23zIoBJkKjZVu4U6Yu/rdrTKyUGDDjz6LYWvittsbozU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=EDh3v0EF; arc=none smtp.client-ip=209.85.208.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="EDh3v0EF" Received: by mail-ed1-f41.google.com with SMTP id 4fb4d7f45d1cf-5a156557029so3454749a12.2 for ; Fri, 26 Jul 2024 13:00:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1722024007; x=1722628807; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=n6vACS09qfMp/6TXOWUchSNtennyGoJCWfR5pa4HeUA=; b=EDh3v0EFWYqQmztkws5YnVxrv1SuxKZ8kmQRNhuc5bTBh/bYHU37tPzY8fKgRtfVyN 2xIylUEHb2cLXibbi1af4e9HjV+A8jnEhnwBXncpSIdYUxnJl5R6d0R/RDpPnKTJoeEX Rd223ZHVWOSba2uKp2XM1rpY4/Ghxp6E/P7t2uQFjwHX/X7JeAznwy4wXkvm7ORml0p9 pCSmBNAx1QoywM+k3EhxU2QAFLVHiU8zkkvcBKkrKZCL4zZQ/crpYlM4RVj/0t8SDADP RXhh2gl+8gpoVAD6qfu2aiGdZ/2DLMRLrWJe6EQKC7otVZ/jWcBcFR10yCCt+SeLp8OP I8IQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722024007; x=1722628807; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=n6vACS09qfMp/6TXOWUchSNtennyGoJCWfR5pa4HeUA=; b=Vn2513SxK6EkehaJgK9UOuGWtWDPx5pY+Jix9Pc9g24mVFnLbj19LFO5ywX/IaO602 lu7MHBLW0kGhFg2GmPGIBvp63PtjYbL8UUeZy4IojSHU0ftmFpkSZJfPJ5iP/klWoyDU f3ltsY1lALKqH+UP8xosaooYtXbZ/7hFxGciJu1/ElocXzEKb58IZ0MY/yaReq277ick 7yLHuUz/wvSb2LTOFsmWLLAffKjEzPpxKMOugLbh3S6j8i7C6D7y8ZPme6SavNOQJTh5 IpXibViX9i3PxRutlBMGjxZSlr8vd0GO6HCWXRXWE28ztLgkglOYjei+4RwiXEvKYPBd fnQw== X-Forwarded-Encrypted: i=1; AJvYcCUf1FDs8M/C+cLXdRz3SOXAY2yLdnQmRM2jLFM4cGpMI99YOFUI2KDG2Yczzxq8JEi5X5NgXY24yhMOfALarPQnVQcL7s0KewFfvkeQ X-Gm-Message-State: AOJu0YylpxvmJpKbtUBRKRt89IYs6VY3bKkCdmyKX4iNpxnbHQQs8XyZ LyU2cMYs1is0J9Y72t97/ODX3FDdYBiOsUeNYFzqjqUrpjuaDePoZqBlBGMIRPI= X-Google-Smtp-Source: AGHT+IEvy1txv1WUQfzxlMFCu8wRQC6RbvPsAnRENjxXb+mowGIzRFW6VNoCJbR9EDAeoYQ9pEjbew== X-Received: by 2002:a17:907:7e92:b0:a7d:33f0:4d58 with SMTP id a640c23a62f3a-a7d40128730mr45428566b.48.1722024007043; Fri, 26 Jul 2024 13:00:07 -0700 (PDT) Received: from blmsp.fritz.box ([2001:4091:a245:8609:c1c4:a4f8:94c8:31f2]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a7acad90e1esm209999166b.151.2024.07.26.13.00.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Jul 2024 13:00:06 -0700 (PDT) From: Markus Schneider-Pargmann To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Vincent Mailhol , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Markus Schneider-Pargmann , =?UTF-8?q?Martin=20Hundeb=C3=B8ll?= , Michal Kubiak , Simon Horman , Tony Lindgren , Judith Mendez Cc: Matthias Schiffer , Linux regression tracking , linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 5/7] can: m_can: disable_all_interrupts, not clear active_interrupts Date: Fri, 26 Jul 2024 21:59:42 +0200 Message-ID: <20240726195944.2414812-6-msp@baylibre.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240726195944.2414812-1-msp@baylibre.com> References: <20240726195944.2414812-1-msp@baylibre.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" active_interrupts is a cache for the enabled interrupts and not the global masking of interrupts. Do not clear this variable otherwise we may loose the state of the interrupts. Fixes: 07f25091ca02 ("can: m_can: Implement receive coalescing") Signed-off-by: Markus Schneider-Pargmann --- drivers/net/can/m_can/m_can.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c index e70c7100a3c9..bf4a9ae76db9 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -483,7 +483,6 @@ static inline void m_can_disable_all_interrupts(struct = m_can_classdev *cdev) { m_can_coalescing_disable(cdev); m_can_write(cdev, M_CAN_ILE, 0x0); - cdev->active_interrupts =3D 0x0; =20 if (!cdev->net->irq) { dev_dbg(cdev->dev, "Stop hrtimer\n"); --=20 2.45.2 From nobody Mon Sep 16 19:23:55 2024 Received: from mail-ej1-f43.google.com (mail-ej1-f43.google.com [209.85.218.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1C1F81F5E6 for ; Fri, 26 Jul 2024 20:00:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722024012; cv=none; b=p3LTu4ba33gIfkXlvBkGUVrGN/IZzi9ZgHcWdqcJ7XTqDRIHE61QxCVavdfHvelDDfXTlEdCfyOnOWOB4Py/IEHxM648Pahmoc0266vV+XzG/uoJ8Ug3QmxDYIPMPFJcc+UWfXVrcw4yX12wmfb5qdQjRw6rIrkxuR0i/iAF94s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722024012; c=relaxed/simple; bh=kgU2ysUlTalRtPMUoLD7OgezubN/PKKaPGTiUiaW48Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DG11XxqNttjYuUn2NGZAmofF74XGyj2+tvBxQ5zDTvjAOfJ2P/zV4eDZQoYy4wYTe6itO67SIJUmAHyMr++MOcQUSjn4obYTmH1aJyy5EkXjG+i+rbVDNlU8OJOWU/ciEn5Hw3Xesz8VA2vRU+jq4gKfaJHTmqMBV0cmFx/kT8M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=NlYD3o0Z; arc=none smtp.client-ip=209.85.218.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="NlYD3o0Z" Received: by mail-ej1-f43.google.com with SMTP id a640c23a62f3a-a728f74c23dso261077666b.1 for ; Fri, 26 Jul 2024 13:00:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1722024008; x=1722628808; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=QclbSBAyJmUNV1FmC5rcCovTowLRmYkjOf848LBChQs=; b=NlYD3o0Z+f+qqZo503CsGvzWfjqwbQffSLp7v4bVtDGEAqtbj5HSGNxxXIQ3EYT0D3 R93FAtVr02vR4SDdn0EOiveR4Ib4JikpmrGQJ4Ss4avFzBJknzUfUNMuEShCSbJ3+b8t x1xxzR1ZvJ2D4GiIHsLwDnJG3IsyDRscLBQRp5qRGOjhpkycUFaHBgu8kulP16AM4WD4 hDH+kzrwCReG6tXU1B3qsA9XP/l55cPv3BWV9kjpBYIIc7mpm/eQjqjDqm73UU0HY4a4 YcgQOK2hbACT2YemAX1E5i1FJKkX8e2R9lLYPzkWl6I2kT5AfI1z6s+bWkXlcQnHPho6 XcEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722024008; x=1722628808; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=QclbSBAyJmUNV1FmC5rcCovTowLRmYkjOf848LBChQs=; b=UAikXCBSpB4s7lbskMa7df6EDzj23pHgnUEkAnPnjjyox6EdtYs/mwz42t957+wRlM pLt1dZYwqlVVKo2hYEQxzY9SWBN11MSfQ4coIjzsSpqb0yAYthxKv5Tuf8iagNqCT45S s3Pk6+vkYr3WxeZexF2vjvAneWfDeJiFCDrVF9SStDb61XNEUynXnIeBOrj8czKS6VQm abXHYCWLHafDYtHIrm2eRzugcJY7xg99/jEZ3h7mdjYPpzTgaqNomFe+v7IhY6zRN78S OqBMWWggTNAhmvb+eR/dkN3h3Boh32R5Z9baQqGqcuV7aWOLQooSo69jryBmyphb8BV6 Gb+Q== X-Forwarded-Encrypted: i=1; AJvYcCXSRomCDZYqKCOTiJa9yZztVrvuGtoq6bCsx/5IGfs8x8cmVgZjkU6xzD+B15H/dK0QR97yt+JGxaP2fdPyYr6j/eH5pnaN9DWzkptC X-Gm-Message-State: AOJu0Yxqpipssd4VimelQZL48YVhRpykRSKKYdCTZdIlNq2gfGvDlMOr W3BiRbDIS7KkGoDPwyYBPbs7zL7Of9ZivVBK1GKdEc8j2g9vRqpzWeraUZY4oAM= X-Google-Smtp-Source: AGHT+IGBz2/F4chosPYowE/GtxDK8/p2E686h0ildr36QYwqG2G1z5tpS2ZWzxOnfdGhbz9kV6ILlg== X-Received: by 2002:a17:907:2da8:b0:a77:c824:b4c5 with SMTP id a640c23a62f3a-a7d4004414bmr37367666b.18.1722024008110; Fri, 26 Jul 2024 13:00:08 -0700 (PDT) Received: from blmsp.fritz.box ([2001:4091:a245:8609:c1c4:a4f8:94c8:31f2]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a7acad90e1esm209999166b.151.2024.07.26.13.00.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Jul 2024 13:00:07 -0700 (PDT) From: Markus Schneider-Pargmann To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Vincent Mailhol , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Markus Schneider-Pargmann , =?UTF-8?q?Martin=20Hundeb=C3=B8ll?= , Michal Kubiak , Simon Horman , Tony Lindgren , Judith Mendez Cc: Matthias Schiffer , Linux regression tracking , linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 6/7] can: m_can: Reset cached active_interrupts on start Date: Fri, 26 Jul 2024 21:59:43 +0200 Message-ID: <20240726195944.2414812-7-msp@baylibre.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240726195944.2414812-1-msp@baylibre.com> References: <20240726195944.2414812-1-msp@baylibre.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" To force writing the enabled interrupts, reset the active_interrupts cache. Fixes: 07f25091ca02 ("can: m_can: Implement receive coalescing") Signed-off-by: Markus Schneider-Pargmann --- drivers/net/can/m_can/m_can.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c index bf4a9ae76db9..7c9ad9f7174e 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -1542,6 +1542,7 @@ static int m_can_chip_config(struct net_device *dev) else interrupts &=3D ~(IR_ERR_LEC_31X); } + cdev->active_interrupts =3D 0; m_can_interrupt_enable(cdev, interrupts); =20 /* route all interrupts to INT0 */ --=20 2.45.2 From nobody Mon Sep 16 19:23:55 2024 Received: from mail-ed1-f52.google.com (mail-ed1-f52.google.com [209.85.208.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B52E0153812 for ; Fri, 26 Jul 2024 20:00:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722024012; cv=none; b=MB9SGRBPqCChWm5yPKKZkHzFqE9HEe684x2nyh583/W3hVjpHgq09jXZ9cMtHOj7TqHIOapOOQCpzlBZx4YDth0DXcxGjc+5gTx7ojgqqZlZtUvia059w/wlsmrj5bEQXopwau2YjkRn4V/lC23ttURoinCcVzlR30NEiFjtJLY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722024012; c=relaxed/simple; bh=PqLeQmAqctIEHugxsI29m+1Hl3ds83kYxxQINp0RkQA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FbtzQuUKCB5c86kpTOn59FjatZkZ7EKZkbWy3OlspBbq776I3ifaRlf7rXGZ+1HAU2dm0SvlhsiJzNq8ES8zUf8xineKot2tgYBvsB87PXpkvhfseb5fmikOE0NSLgJMLZagbU6KP8i+f1cT4oqnEJXFUmdm6K1fbh4KaqxVBgs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=lz5sOQO9; arc=none smtp.client-ip=209.85.208.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="lz5sOQO9" Received: by mail-ed1-f52.google.com with SMTP id 4fb4d7f45d1cf-5a2a90243c9so2581862a12.0 for ; Fri, 26 Jul 2024 13:00:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1722024009; x=1722628809; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=aAD0QrgAhMaN+Loo56/InWrP52EhZGGkh8jgEKYZ7JE=; b=lz5sOQO9FnX+k5p+LKcHqWXL5IYMPYuBBD6uBS5Ib3dS1vBt04gBPJ7/lfOXl4sZBe 1EkHWpU5sDg24xifWfon3ziO9KH8czZeav8gOZ7CcAYOnTmF0DY+okwRwVjLOkC03Dok WpSe1sE848qkJsJ5qDkCWJ2f6g2HqLxpCGNLpuMIJhynCav23SPxVd4lOhvFGcAytdtd ab/VQoSX5AunENzwUI3oLQqEe8ZssLv3DozW29aLmnZ1D/QVDbvhAcVriSdET0b6kUQZ DdFhsu++v4udXngApgfY4xf+v+VRyC3/VwEPZgaLdyfv9XFF4WE3UboQPzFg8lDUnsnn VuXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722024009; x=1722628809; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=aAD0QrgAhMaN+Loo56/InWrP52EhZGGkh8jgEKYZ7JE=; b=ukkc5qj0VveWtGAIcqqKTzJUOu9z6qGYOVNSqBR1xEHlkeLrZNT2qZH65XzDJhV8lB 1uHLShyHmFPlcefyPagfCAM/auq3nG89toIVXTKUSmR2X55+gIcAzEnZE/KkdnCAUvam jwDLomp48zVK5ei1HN71rleOkS8mpmsr5JG/SwN6Uw8HAetYSyXG+O2GOJIruNHvnQQx Zy9r6SQT86a6ll3bVfigtYIH4PHrF9eSn488GilEUcbPTg3n/mMdfs7rSZF+ESZCSMaI MK+8WEDcuaESaBQAbUlTJmTcSX+DGEzhnXLsv4Eb7ANGTPUMLulfoBweMJjgoLaET5Zi JYsQ== X-Forwarded-Encrypted: i=1; AJvYcCUh6sd5tg659mEAuyCSNwkApWl+KLzw3paJGlbVObo0B518+LC3JnF9QtoAuEIN54Id9TLyztSm/3ws2780x3nOiC9oDHKTICbaUYFT X-Gm-Message-State: AOJu0YwqHmcK1LtXTtQDAekoPgGkeghqMXrD4lT1pX/ATNhli0hsqv8i Y4K/v7R6F1KkXxK9hOZtoejdKuZ9EbbZDAz+QkzkjLzLubIRwRt/JScWW8qjP0g= X-Google-Smtp-Source: AGHT+IEEzUyGNvBusd6G8ilz3PdSiFX7wBdFiW9IWqA0E01M8aJkR571/CYCOKrUufcdbTMsQmFD1w== X-Received: by 2002:a17:907:1c19:b0:a7a:a7b8:adae with SMTP id a640c23a62f3a-a7d3fdb7dc9mr45197666b.4.1722024009219; Fri, 26 Jul 2024 13:00:09 -0700 (PDT) Received: from blmsp.fritz.box ([2001:4091:a245:8609:c1c4:a4f8:94c8:31f2]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a7acad90e1esm209999166b.151.2024.07.26.13.00.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Jul 2024 13:00:08 -0700 (PDT) From: Markus Schneider-Pargmann To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Vincent Mailhol , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Markus Schneider-Pargmann , =?UTF-8?q?Martin=20Hundeb=C3=B8ll?= , Michal Kubiak , Simon Horman , Tony Lindgren , Judith Mendez Cc: Matthias Schiffer , Linux regression tracking , linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 7/7] can: m_can: Limit coalescing to peripheral instances Date: Fri, 26 Jul 2024 21:59:44 +0200 Message-ID: <20240726195944.2414812-8-msp@baylibre.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240726195944.2414812-1-msp@baylibre.com> References: <20240726195944.2414812-1-msp@baylibre.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The use of coalescing for non-peripheral chips in the current implementation is limited to non-existing. Disable the possibility to set coalescing through ethtool. Signed-off-by: Markus Schneider-Pargmann --- drivers/net/can/m_can/m_can.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c index 7c9ad9f7174e..663eb4247029 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -2182,7 +2182,7 @@ static int m_can_set_coalesce(struct net_device *dev, return 0; } =20 -static const struct ethtool_ops m_can_ethtool_ops =3D { +static const struct ethtool_ops m_can_ethtool_ops_coalescing =3D { .supported_coalesce_params =3D ETHTOOL_COALESCE_RX_USECS_IRQ | ETHTOOL_COALESCE_RX_MAX_FRAMES_IRQ | ETHTOOL_COALESCE_TX_USECS_IRQ | @@ -2193,18 +2193,20 @@ static const struct ethtool_ops m_can_ethtool_ops = =3D { .set_coalesce =3D m_can_set_coalesce, }; =20 -static const struct ethtool_ops m_can_ethtool_ops_polling =3D { +static const struct ethtool_ops m_can_ethtool_ops =3D { .get_ts_info =3D ethtool_op_get_ts_info, }; =20 -static int register_m_can_dev(struct net_device *dev) +static int register_m_can_dev(struct m_can_classdev *cdev) { + struct net_device *dev =3D cdev->net; + dev->flags |=3D IFF_ECHO; /* we support local echo */ dev->netdev_ops =3D &m_can_netdev_ops; - if (dev->irq) - dev->ethtool_ops =3D &m_can_ethtool_ops; + if (dev->irq && cdev->is_peripheral) + dev->ethtool_ops =3D &m_can_ethtool_ops_coalescing; else - dev->ethtool_ops =3D &m_can_ethtool_ops_polling; + dev->ethtool_ops =3D &m_can_ethtool_ops; =20 return register_candev(dev); } @@ -2390,7 +2392,7 @@ int m_can_class_register(struct m_can_classdev *cdev) if (ret) goto rx_offload_del; =20 - ret =3D register_m_can_dev(cdev->net); + ret =3D register_m_can_dev(cdev); if (ret) { dev_err(cdev->dev, "registering %s failed (err=3D%d)\n", cdev->net->name, ret); --=20 2.45.2