From nobody Thu Sep 19 00:58:32 2024 Received: from mail-il1-f171.google.com (mail-il1-f171.google.com [209.85.166.171]) (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 72B8C165EF1 for ; Mon, 5 Aug 2024 18:31:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722882675; cv=none; b=NEDa67bZeDoAd4i/DJULKer17Pmb3UfHMbBYb4B+NX64bnpnyiAGxLwC45XRLlwzMMqIl1i0wGb48rNQsbZzZV32/B+th5PVIVzpmBpY8R8sgyMZ5fsXORKrEQ0hCGrtSBsyzxMoTUfkMCpgp6DxuEs0zvj/d2ps64pBLRZidqg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722882675; c=relaxed/simple; bh=umTkgL20LJJ5BJ5TMY3wbVVZSYY4K2TQqLUKPlJzF6M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=cftRp9IIvlRr2u5yLAKNnnjp/0oIqRAUlw7c+5k0b01GlFjVwuVK8Eu5uaDMAPVdUQtwjfTIAxMhCD4WzK+TJw7kT1MSKy9j4PemuSJhXRmYTSUyx9qM54lyOnObe66ffSqEdTRNJy76mKAjIAtootJzbOzV997pqvjT8CEMgL4= 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=PyBQM30F; arc=none smtp.client-ip=209.85.166.171 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="PyBQM30F" Received: by mail-il1-f171.google.com with SMTP id e9e14a558f8ab-39834949f27so49515175ab.2 for ; Mon, 05 Aug 2024 11:31:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1722882672; x=1723487472; 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=PyBQM30FVh81u26deIUXzTEP3TayrqVtrQQwzT4xEK42fQcy9zzaSrbDc3ApfPGndq MrynKJ7NSvlx3oWczZFjM4T83VDLiaV/F9vpJorhb9MY4l2dIKpY74ZS9AN97WuRWhzE X5+NpyOn81fTFOeboNzsfb6DaKqYvXJwyHxzCj2+eHuW8dWluYuuHcxp7xK078TSl+Bi 76Q8dz63/FXAjCIxDZcdE8dTadnnsOuh3LUUrhNHcOKYfrnqHka9J8zLmGBAY5usB0Ew TrNRV3XaM4t2czpUDKvc8+FUWSTh2JsM3oGY5PeucZLcFn23Lx4ZIBtd+tetMoQcDeda hRpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722882672; x=1723487472; 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=gQTy2HHnJBPl6O4SN90dhYKiaVpMJJdxWM09gv/YaaJPe23kiYzsvStvtU7a++mt6y Kel8Iuhdh6ogRYEFLyptY4KsotvQP5qOwI49ZxJQADa7FnSRtwDtGD8rdzb+04gH1DEY CFIAAQfGY6DV9y1C+V//dZvzyt4qk1X6HeI6JwArnX+aK5uPfttjQypx1aPx4iSTFeEB kUfM16plxMMlYdd6DWDVymoSSX47AmV80dc37SeMjmfAEZXFCiDx9kxoCtJsuIeEF9sN 2n9JRlLMfHhssSRAt65zUd7QDv06H1RmbEfpB1+TG5jhTzOipJ3/AYsUX8q3GWOE9Qdz ZDSg== X-Forwarded-Encrypted: i=1; AJvYcCWcEZpbvuR75UTPqnRBFRdTeLdVcFp/yUu4sEgYwG6Ha7pfe4Uv+1J5AOP9Z0iywUgN7dKw9HmTmVYlTvV4oPVtDKG0s7Ix/E369Te4 X-Gm-Message-State: AOJu0YwTXbGyaXsECzfPsSQbeuv23Q6nwK74bSh+jOPv/n7xbX0tlplR NS4wgeYDD1/0KKQeiwAmjN4D9ykAQzV3PNM//eyUvE/v7e9HBZFhx4h5qMn2QVo= X-Google-Smtp-Source: AGHT+IHeeRmQwv4+q4ju/q0myu9Z6P6bR4evc/LRLY+BIe9M6etkllpDA/qldggtU/65E/yLphVmjw== X-Received: by 2002:a05:6e02:1a24:b0:39b:3635:e3a with SMTP id e9e14a558f8ab-39b36350f02mr116839525ab.22.1722882672647; Mon, 05 Aug 2024 11:31:12 -0700 (PDT) Received: from blmsp.fritz.box ([2001:4091:a245:8609:c1c4:a4f8:94c8:31f2]) by smtp.gmail.com with ESMTPSA id e9e14a558f8ab-39b20a9af29sm30867925ab.13.2024.08.05.11.31.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Aug 2024 11:31:11 -0700 (PDT) From: Markus Schneider-Pargmann To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Vincent Mailhol , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , =?UTF-8?q?Martin=20Hundeb=C3=B8ll?= , Markus Schneider-Pargmann , Judith Mendez , Tony Lindgren , Simon Horman Cc: Matthias Schiffer , Linux regression tracking , linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 1/7] can: m_can: Reset coalescing during suspend/resume Date: Mon, 5 Aug 2024 20:30:41 +0200 Message-ID: <20240805183047.305630-2-msp@baylibre.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240805183047.305630-1-msp@baylibre.com> References: <20240805183047.305630-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 Tested-by: Matthias Schiffer --- 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 Thu Sep 19 00:58:32 2024 Received: from mail-il1-f175.google.com (mail-il1-f175.google.com [209.85.166.175]) (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 392A2166F04 for ; Mon, 5 Aug 2024 18:31:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722882678; cv=none; b=lDK2mdBLCRfnxHvRB6R0OXu9jisLjSNxcYVRJFU5LCK/9CgsCGeVVpFbWwNXOPUDt1yq5PiJdqBcM++nzWyjCrdZNGjFpOgM0madGQ0oN2aDm6oSMjDgZBrl3zecfzRyKtciklDHN1JgC3AFCGPZHEauHP328x0Jnyl52/d/BbA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722882678; c=relaxed/simple; bh=X0Lb8mIRnjkJhheZaa1C9/ChMOXWk5LNcIzDjYItBcU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WGfilLBwEDZ38Xa3At2ccFrtv9z8orRMjSNKG42OdLsBZIXUrvrVEyscxBKvbtbB8E0bhQZepqvcidniC1XRSryBjLOVIi6xie0hTgdCCaefQsfFrSMcKWiFF8cg3urib4wOwyA9oGsoMCUdZbDUFA7wJX45cribW5xTWQLABes= 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=HN7DwQpf; arc=none smtp.client-ip=209.85.166.175 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="HN7DwQpf" Received: by mail-il1-f175.google.com with SMTP id e9e14a558f8ab-39b38295008so8129555ab.2 for ; Mon, 05 Aug 2024 11:31:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1722882676; x=1723487476; 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=HN7DwQpflzpLuyP5NygpOyO7QqkBpC4FVYuyDb8ZrCNP/dmaqkiTb1/a/wndCCmV4V Jikb0MF78zkhUw08Cesz/UIOSa9GVbbWioHlJoy4xL5ZGRp4fri93KujXiAbwcsXDSwX dO9q05hGqsvqCt64G8cAoGqgc7KQPm/aDW50RYDtaEbIrS9q/l3J7/lYZPp4aJC7cqLN jnmIFHSoMfLQXscaKRdrlwYM/1UYsdDDFPxWNWD4DcgeDS7wz9Qlu8EErLU12FhvpN7o a6/Pkq3Y/X9MklUJy8jXnL66ZZr3P2jMPqwiaap2phRs/XVlIDNZDVdZFV54SDCmZIvQ H6Mw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722882676; x=1723487476; 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=qWd5rGzrDf4n8sp2rWd9n4BDMGifHXF2yp0m1zT79u7jSMoP+f9OVWiGVYdS0S3/Yj t5FVRM3yHC95/Imr+tnw6uxowqnZ8Zxsuen2azJZbLA1vqpY/gWqcXlhcz/csTbfYJoE vp1zGyQmGrWG/i17DwuC200tUTu4CulU0l1L5O7MQTQvxr0xkdkBtavfES/ne8wRGrCf 3ObFzQU3ZFYwFtYGki0tYLrybzOJvsQRBJNnixaJ05uiS2chZxEqHU5BaD9dbdIc+W3n Pj8KYm6yNF6H/fSsjD5eQzB+LohbdBfYOJn8nRIM7+YCOzof/3BGh6trX8IQ6TE7he8b RzQA== X-Forwarded-Encrypted: i=1; AJvYcCXnO8s5/6lrL1DTBADNIrFu5FKntqv8bbS0p8ylmqpK7OPaCsY3t0OTYp4AqfC3cRcv/ZqEVAqo1erlK5EnhvpdteWujXdP9PKXnW9w X-Gm-Message-State: AOJu0Yybd99nOZ/LDsU5vgijqiYxjtoEHf8Za6AKPKeqssrIkd5o1yug xw0NL0ZuB2CwXwjniKnCRq7MCrUbTzhKJ9+nzXiTBp3pzu/t14SIvkHXwXP1VlQ= X-Google-Smtp-Source: AGHT+IGK/3ryl1QS+GGbx6p/ssfqROsmqw17pu1CF1Hk361QOM09xOIdr+6PvE5wAmPwTPNRUkFcmA== X-Received: by 2002:a92:cd8e:0:b0:39b:3649:1b68 with SMTP id e9e14a558f8ab-39b36491d25mr111508215ab.13.1722882676415; Mon, 05 Aug 2024 11:31:16 -0700 (PDT) Received: from blmsp.fritz.box ([2001:4091:a245:8609:c1c4:a4f8:94c8:31f2]) by smtp.gmail.com with ESMTPSA id e9e14a558f8ab-39b20a9af29sm30867925ab.13.2024.08.05.11.31.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Aug 2024 11:31:15 -0700 (PDT) From: Markus Schneider-Pargmann To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Vincent Mailhol , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , =?UTF-8?q?Martin=20Hundeb=C3=B8ll?= , Markus Schneider-Pargmann , Judith Mendez , Tony Lindgren , Simon Horman Cc: Matthias Schiffer , Linux regression tracking , linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 2/7] can: m_can: Remove coalesing disable in isr during suspend Date: Mon, 5 Aug 2024 20:30:42 +0200 Message-ID: <20240805183047.305630-3-msp@baylibre.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240805183047.305630-1-msp@baylibre.com> References: <20240805183047.305630-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 Tested-by: Matthias Schiffer --- 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 Thu Sep 19 00:58:32 2024 Received: from mail-il1-f172.google.com (mail-il1-f172.google.com [209.85.166.172]) (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 78546166F35 for ; Mon, 5 Aug 2024 18:31:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722882681; cv=none; b=gPTd+MWRXDJkz+nYIJLOPv9JfHJR+XmwMsPrch+/qWEubtgFBhXmomsx3LFYX+j7rxpF20PhLiI8r4YgXCxufJ3SLy7IMYXOtAQM8Gm5M4MVwFoZBxILkPluwF76AWQ5+cjHM0vCw9cbsjNGZC2MjNYQO+ka6FKp6gTzmOk0LdU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722882681; c=relaxed/simple; bh=EbgGe2gsLdH2biBweP1nqPyr3Zg50Y1HA4LdIiHtm3k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dWp3/cZadGDgRfFx5bR0zl7na98CPaund5ksyFEZFEiNbAwBdrdy+oKEUqpl2N6kbL8Qnc4G6xuElX1HsdD7pQFq327+STsm9JA7kE0zxEZ7e8JYsJWOkzbjNIkOoKCwjfeRceZTMU/nE8XmIMtB5/7LP/r6a92cWOtv7yn2Jmg= 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=i/lLdj71; arc=none smtp.client-ip=209.85.166.172 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="i/lLdj71" Received: by mail-il1-f172.google.com with SMTP id e9e14a558f8ab-39b3c36d3adso6972845ab.1 for ; Mon, 05 Aug 2024 11:31:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1722882679; x=1723487479; 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=i/lLdj71LDY6I/w47n1L5qsJ0hwunKsDG//hiUHjMxXXt5VfKmEUB1KI9naXh4xYyn P5NGl+jVpm7yJIcwJE2xYNSIlAocwSV7N+sWWKfZPXoevywXlBs6GrDWH4ZVkr3lvXRX g0yHGKFfarFwVLSW99vgu6kHDMBfjy0sa+qBCOTP2aePylQOKgeKK+FyE7tu8RnIDHAm SSMvYH6sj8YpER/xUkZiXa12nBJzjzm3lkdrncR2a6kN4DMchqjomt2SjAebasXWfMKf NCZk1mWbQ3SX+DcSJva5Ng19jcVvYgIT/5MTmjTPOhP6G2igDu2ZT2ON9AWWIB2rGq+o 0MKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722882679; x=1723487479; 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=U8DkCZbGIAoGB5kgkekuWsVtQ+EpURuY81lLW3zbhwvWxXAuwXGxjQoSU7gOG3tQYV Ztiq36x//WtUgguPENepyAqMtxuNWftGBipNYh1kY9R9yIET1Z494xwtoyr8QTuVU9Sg 7X+KG0yd25PE0p3U2sopNbxtCyE3sXbTTJQaSxPvtNHTk2shoQGJsbpPg4NpI0tn+n8t cuPLDvl85PQD1jh4pYolHqkio0R8lRC2kBtNojbxfcKvLxm5lkcxBoD6JpYp9sP6p17k 2yDkz/K/+Nq1570Gbb394PlBhbYfvAqGI1J4F/7bRA7AdRaGqjzz5cJkoB5TcXUsNVQU V9HQ== X-Forwarded-Encrypted: i=1; AJvYcCXrFYl9zCx3RjLSNoB7y2XkV4vDcjif+Y5Lhh4N11ub5FUM7BWYLrzX0ygLW6aTF/XFzLLX+h9c0CCkjNn7YmDEjw2siDwv0URFdFPA X-Gm-Message-State: AOJu0Yz2c5zUFOGIkpdZe9C9zfuxfcu0X8QC3ActkdnWWjom02nixd6o 5wATv2i5Ldp/I96kPmvn65Os3src7Qs4hw1a6mewUfQQVZ8aN1xPwtZ87Uz3brk= X-Google-Smtp-Source: AGHT+IGMnS1rb3UU6bj+V6bpqO+qUs1ylLOBvntJW8Xy8XScEgNEkHRyzpbGdB5iBFzFgK7uWf5xgw== X-Received: by 2002:a05:6e02:52d:b0:39b:369e:ae4e with SMTP id e9e14a558f8ab-39b369eafedmr78788705ab.2.1722882679509; Mon, 05 Aug 2024 11:31:19 -0700 (PDT) Received: from blmsp.fritz.box ([2001:4091:a245:8609:c1c4:a4f8:94c8:31f2]) by smtp.gmail.com with ESMTPSA id e9e14a558f8ab-39b20a9af29sm30867925ab.13.2024.08.05.11.31.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Aug 2024 11:31:19 -0700 (PDT) From: Markus Schneider-Pargmann To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Vincent Mailhol , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , =?UTF-8?q?Martin=20Hundeb=C3=B8ll?= , Markus Schneider-Pargmann , Judith Mendez , Tony Lindgren , Simon Horman Cc: Matthias Schiffer , Linux regression tracking , linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 3/7] can: m_can: Remove m_can_rx_peripheral indirection Date: Mon, 5 Aug 2024 20:30:43 +0200 Message-ID: <20240805183047.305630-4-msp@baylibre.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240805183047.305630-1-msp@baylibre.com> References: <20240805183047.305630-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 Tested-by: Matthias Schiffer --- 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 Thu Sep 19 00:58:32 2024 Received: from mail-il1-f174.google.com (mail-il1-f174.google.com [209.85.166.174]) (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 A79FE16B388 for ; Mon, 5 Aug 2024 18:31:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722882685; cv=none; b=XjIX4TSkHqSbRmF/eDu/Fkb5SR8e2/3UNDEnXrfS6lnuCA2lJ4+3gDFNrjotzYr9rLEPOw1empnz/wpbr+e0T6Q2tzomhzZhguqJ3s94ASf9JuGXOp04w7z77kqYGnsunnKAwstj29BU13XPhgpDjiPiSRxPuB3+IHJQ3/+o0i4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722882685; c=relaxed/simple; bh=1sCAMwHlLhrTJzQWswIXJnmmANEP5KJsAtG838cx+CU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fgxGhbsLRUDIZCXRJfqdnxTeqKcVLHaszULklX04IqD/ni0e1gjwc0mhV0yq3HfPh8WHhjghRRxapzQ1/rVxYw2tgvW67BLO+iMSgO3P1m01VotHAJO7GjH7g2d0NgaHB441yIl2uKB2oxw+I5MJ10QbSHUjYc/KAi7G1Ktl2NQ= 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=Dhj8A0l1; arc=none smtp.client-ip=209.85.166.174 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="Dhj8A0l1" Received: by mail-il1-f174.google.com with SMTP id e9e14a558f8ab-39b2da8537dso6076715ab.0 for ; Mon, 05 Aug 2024 11:31:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1722882683; x=1723487483; 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=+JGlrEXu3NtOZu5ryCLf4wFhjQ6Lr9D+AY1HpLPHozk=; b=Dhj8A0l1T2+6XVR7ZfoX51L4Chh/K7x8xlxr0f3spvHa8A35r1tnxuP17OfwXTV2uj tdz9dWaHJNf/2XRE7kzMxOWSukXl1EwsHqFE8lx9q9JQfhpLgPsGCGDghgVmU3JUj+9M h+7vUbIvZUWtZJZr/Id+o054jiSFq8jDZ7W9/ZVIogYFWlCWbnqWQWzJhUdDe7UKwLcb 23r+qK/5hcgjnb/m6gAN7O1Um8idcFp7UDG9/CKB6KkzcVCGfRxUDq0LEACQ1W5pPzbi GC9TEqPe27Eecb9f0qbCVvGJkMkBq34M7xlPN5f0U9RyWZRZM0BMtRZdpn1jPIwReORq 6YRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722882683; x=1723487483; 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=+JGlrEXu3NtOZu5ryCLf4wFhjQ6Lr9D+AY1HpLPHozk=; b=EU3hSY11v0f8r21EC+Y+Vl+d/qOmKf+FRu4hstCVDBgThKYqpOUZrhbOV7n6IR+1x3 tK30cCdtB1v+ImABMRlJq/xLeI+IyuW+hPgfDF/XisVpuvu6Wuw7Dv28+wndj0CgN1NT 9hgn5L/fD5FgUhChy/HikKW81TK+1g5O1ItvnvdKBONPpfUeYIU8Vs9A40bcWzp1BoNn phcX6tmnN1Yn0dy69MvoltEYWV4HnwgBEN3xBt21wicw+9goxZW63fbIFsFxFN91/Jwp ecBTQXtc+D+1V3u8sTeHqFBSAF9tATRf43YTa/Re29pe7Ak+dyM7kH/kDEeVPK3tYnWR hALA== X-Forwarded-Encrypted: i=1; AJvYcCU9rFp8/ohKcL/BGSi04bNfOZFCqV9rhEr0FxTgGj033/BC3gxkiXDiRLohE2+onw8ZsVZFRG1UTK6xbb05L2iLZ0Oa8+plX7ETghj4 X-Gm-Message-State: AOJu0YxR1LD1IpP3NCVIef2xpHsalXWSHhr84rnMPlUloDIwwm9JhwkT KS+p82f1di8iKdUXMbCkNK8Cp4nhcu7J7csN+Fetr19O3IPCoTMoPgpv8OEg27OuzBbsvvH04Vs Z X-Google-Smtp-Source: AGHT+IHksmBssQdErDi7l3d3mDIMU7STM/GX8eeApV/gOKjo26laMPcbWqj8OJnsZcu3YNThhvyYJw== X-Received: by 2002:a92:c52e:0:b0:39a:16b2:7290 with SMTP id e9e14a558f8ab-39b201c25d2mr98433625ab.9.1722882682647; Mon, 05 Aug 2024 11:31:22 -0700 (PDT) Received: from blmsp.fritz.box ([2001:4091:a245:8609:c1c4:a4f8:94c8:31f2]) by smtp.gmail.com with ESMTPSA id e9e14a558f8ab-39b20a9af29sm30867925ab.13.2024.08.05.11.31.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Aug 2024 11:31:22 -0700 (PDT) From: Markus Schneider-Pargmann To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Vincent Mailhol , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , =?UTF-8?q?Martin=20Hundeb=C3=B8ll?= , Markus Schneider-Pargmann , Judith Mendez , Tony Lindgren , Simon Horman Cc: Matthias Schiffer , Linux regression tracking , linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 4/7] can: m_can: Do not cancel timer from within timer Date: Mon, 5 Aug 2024 20:30:44 +0200 Message-ID: <20240805183047.305630-5-msp@baylibre.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240805183047.305630-1-msp@baylibre.com> References: <20240805183047.305630-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 Tested-by: Matthias Schiffer --- drivers/net/can/m_can/m_can.c | 57 ++++++++++++++++++++++++++--------- 1 file changed, 42 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..f2fc862fb21c 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,15 @@ 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 +1236,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 +1256,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 +1266,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 +1991,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 Thu Sep 19 00:58:32 2024 Received: from mail-il1-f174.google.com (mail-il1-f174.google.com [209.85.166.174]) (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 92AA216BE00 for ; Mon, 5 Aug 2024 18:31:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722882688; cv=none; b=se2VLW3g/lwSkdfQWOyCW7wghMsR1zMP/2UIAFEktlHmzQ5xwDviIL1KRfjA6Elfk4lqABYcNYkSDcaBh8rCeAOdbVk4lIgBLt+UYP8ICv/0PFkcl4ky5px20lQwT5C5vx9RzYaQd+fJVM0YmndnwLruyNB7RtajkM/hpHLJJrk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722882688; c=relaxed/simple; bh=9IXfsH20XvSwQIie4Zhn+/T6EtzkHPcaklqjFILszaQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lb5zgBRJGcr5OSU5e5vwTUwILKXPoEtcCAiAl0aXPAqpJqPivprXtgz0glMUleU9bAK/Wara/xx6h6tukzQ6DO8ryOtkH4+S7qpw1U8cPlwSRl6euhx2OAowN1oTEmD2rn0ZUFCkVToDTBdbpNV/IkTAJxA8/3OlJHBl3PH7fCU= 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=KMWVr5d8; arc=none smtp.client-ip=209.85.166.174 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="KMWVr5d8" Received: by mail-il1-f174.google.com with SMTP id e9e14a558f8ab-39b3e127718so6205445ab.3 for ; Mon, 05 Aug 2024 11:31:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1722882686; x=1723487486; 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=GxGzwj10hbPoGUDFHjUigzECxz7Emr4gq2Vxs8apx1I=; b=KMWVr5d81ns6yMHyjRDRzC7XAfkhwW6RNwK3aFys4i0PYzoF2J83ubhqAyGUDIpqG3 PVmjeYgSRQasIIWr4BkoR4KPL4Jstl952HDmY1oQqWjdw0nU1Bqk7pu7KBuiKv27PCuH LskDYJgnUXASids/YPfIAqIJ3sXzg3K1pPPm9hwC1ju4tCH6dCqSsYKO/uynJ/jaxvcs y+EZj0c9ScBL1NofsUypnFM8rrjYp3FIu9mXSikV5NJczi/qhlg8GNcKdlOL7wt8cDvG aOaKSDdLWs2R/YltMPEQ9DIM0Q/IeL2ah/Yt48zPo0LLw681Km2ImAuxkJgGT85tOjtV +kvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722882686; x=1723487486; 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=GxGzwj10hbPoGUDFHjUigzECxz7Emr4gq2Vxs8apx1I=; b=He3nrVaJKA89+jr3v6hnUM1PwT5LmxwnJwIxDIAHeOP16LB+tMnZKYmYdPn6lk0VZU aOS+8jsxtpdjEd5JV6coSrdqsB4xeFGm/Ux1cPG/5VCaSkMNg1kGgiEva03X9bzMzFd/ gxLg9EaGWHd9SdbCBeIAkYvdaWw01g65dWyiPQHmYFeCeFEHsBjQTfzsyb9pJcNraQe/ zwGJ5kBtsqFFAfe4tOSR8EbDHCYa82Rtruo7Xeb3LQx7x3oZ7aSZ51FgqtTs8UJ9s9y2 fG/mUlCkEZjgleeOpglEQLR3AgSgwUUWGWqZ+LW0jKi5xf/oBqUipufftrMpsKKxQKns cN0w== X-Forwarded-Encrypted: i=1; AJvYcCVgXEmr0X1hd2G2nhd7EtvmnbvO/h+ZEkQVvLlIWhvrCKONA4WDBAR0/LvjQVxB/Oj6Gwzi87tBFldIbtVHkg02NcRpKVAxheSjCnPm X-Gm-Message-State: AOJu0YzaR0HSxAFZOgPpHd0A1LE2FQvfcVBc1toZSKwUINz3cHB9yk3Q KljDxRU7L2B2EFhq0rNZfT3HdrJCDyia0Sb7dzGiImJxHG1OaH/e8IycZEvVvtA= X-Google-Smtp-Source: AGHT+IHbUX5iMkWxY0jz/xH/juQai5lNjO2y87fBuXrzbN7VDYTkNYag15NCr2K+gsamtX8MhFXyAw== X-Received: by 2002:a05:6e02:218f:b0:39b:2ca4:e391 with SMTP id e9e14a558f8ab-39b2ca4e898mr107173745ab.1.1722882685753; Mon, 05 Aug 2024 11:31:25 -0700 (PDT) Received: from blmsp.fritz.box ([2001:4091:a245:8609:c1c4:a4f8:94c8:31f2]) by smtp.gmail.com with ESMTPSA id e9e14a558f8ab-39b20a9af29sm30867925ab.13.2024.08.05.11.31.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Aug 2024 11:31:25 -0700 (PDT) From: Markus Schneider-Pargmann To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Vincent Mailhol , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , =?UTF-8?q?Martin=20Hundeb=C3=B8ll?= , Markus Schneider-Pargmann , Judith Mendez , Tony Lindgren , Simon Horman Cc: Matthias Schiffer , Linux regression tracking , linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 5/7] can: m_can: disable_all_interrupts, not clear active_interrupts Date: Mon, 5 Aug 2024 20:30:45 +0200 Message-ID: <20240805183047.305630-6-msp@baylibre.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240805183047.305630-1-msp@baylibre.com> References: <20240805183047.305630-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 Tested-by: Matthias Schiffer --- 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 f2fc862fb21c..7910ee5c5797 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 Thu Sep 19 00:58:32 2024 Received: from mail-il1-f177.google.com (mail-il1-f177.google.com [209.85.166.177]) (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 B62E516BE13 for ; Mon, 5 Aug 2024 18:31:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722882691; cv=none; b=X5XMGNj+Syc0eJwyqgZyCNQDIJu8PuW4V7rQ3b9xmRJhciku3c1xXzywyV/ss+SzFgdjolb54Q194Cn+n5WhJUK938DdKSawN6pL24DH4yVDdpGQEBKok5lMdZ6ZyiexvAjn/j56r1nvFiX/OFgCglI6gmB5yZNKWki56nAUcTs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722882691; c=relaxed/simple; bh=J1n8p9ZiV4NPzCCG4igoxgIPW/lPHOV2bvu8WbY9M3Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=eqJSNuLjitGFwwRLnCjPdAwYQqXkzxutXIFNy682uz3mAtGiyZwzJ6qN72Wn74G9vF5vRlf/jsihheCnX8WojTpg5H4VC4f8ua9TMDl3Gc3QpdJzFS2kK5Dbzxi6fAF/EdR92ajuJO1p7JzruGjyPFQNsLIqjzHFgIWHiwwrOUA= 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=jdVMrfqB; arc=none smtp.client-ip=209.85.166.177 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="jdVMrfqB" Received: by mail-il1-f177.google.com with SMTP id e9e14a558f8ab-3737dc4a669so47362415ab.0 for ; Mon, 05 Aug 2024 11:31:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1722882689; x=1723487489; 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=f+HPjuz5W8Yx1DVIjzCZ4+iLii+dpzxtWHgPSNE/Bhk=; b=jdVMrfqBh500qkvXX/UaWRDgiM6YyHIoH32SOabGtu+JLyRa7+eocaSpSb8pddaMvq nBLjwVZkzqebwaUjylZA+nKCy6E3xA3/JmOY+yI/Mky9vbTh0jFUalpMXrlJ7UrWOwr2 CDQ/7cntU+SD9lRAsi7bz9CxtcFYpKgfd3/J+Y+MIeHF0StI+bb7mdAVVO0MCukdcIEZ SYuUaTaeT/86+s+fD8mxyDmZDp6Q615EjDU/rxPR2VITH0miHlSjD39UR4oktExVgWxb jaSVTyVD0SpikPotCYlFZwBeP4WezB14RxRAK18+rPreb2mfjFHJhCnCUhnFtOCM2REF HOhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722882689; x=1723487489; 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=f+HPjuz5W8Yx1DVIjzCZ4+iLii+dpzxtWHgPSNE/Bhk=; b=XvQjjDpVqr3n7tD69vsgXa87Wgc/SqqiAa/lGFF1y2DvPubFk/8roxejdXzRq5g0IC c7ukDJbb2AvudX/mS0SpoFLY/yQJrmrS9NDlapqcre8snaMsRExJJr/2LNnWJ3abU5iK /GwGbeK+HM5Ab1QANE86Uz2J+sg/x16YYNu3ztdSofrVDMImnLVCJTpP/OkweMO0Za51 hTfYN2gzEJ/EbtjhcBkMacY1t3Cf0BB5lLKUEOzR4WyCHzW4jagvSbI0djyvAR00OVDE xECryyNGUi/itWy5hukXdYjt9f6SVhpvUuTHYHjF500UQxKpc+SM9uR4PutrAneWfGuN lsZw== X-Forwarded-Encrypted: i=1; AJvYcCWQbB/KmncHFxugpZfQhn0JZda5fumitXNcXif8QKx3k9g4+9jpesRv8WNAOtfw3XvuCrzqPMMVKF8MeLKBkXPZUIwqTUpopIbXdw3B X-Gm-Message-State: AOJu0YybbSWMXzemIhi3NQjTKJYhMbdINK1pIOhY/7uGonQ2Vyb2ahol f40VPXb3KRID2DYkBl49iGmw/KFc9QinWNALgFUYno6TglroZE5AezA/sLD5IR4= X-Google-Smtp-Source: AGHT+IEq6598CGYDXwUJlEvoWxu+/g6kFoPjvVucBrR7owowbQb3f7jYWmpb4FTOuABE7Ovcpsxrdw== X-Received: by 2002:a92:c988:0:b0:39b:393e:28ca with SMTP id e9e14a558f8ab-39b393e29c4mr71466915ab.12.1722882688825; Mon, 05 Aug 2024 11:31:28 -0700 (PDT) Received: from blmsp.fritz.box ([2001:4091:a245:8609:c1c4:a4f8:94c8:31f2]) by smtp.gmail.com with ESMTPSA id e9e14a558f8ab-39b20a9af29sm30867925ab.13.2024.08.05.11.31.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Aug 2024 11:31:28 -0700 (PDT) From: Markus Schneider-Pargmann To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Vincent Mailhol , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , =?UTF-8?q?Martin=20Hundeb=C3=B8ll?= , Markus Schneider-Pargmann , Judith Mendez , Tony Lindgren , Simon Horman Cc: Matthias Schiffer , Linux regression tracking , linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 6/7] can: m_can: Reset cached active_interrupts on start Date: Mon, 5 Aug 2024 20:30:46 +0200 Message-ID: <20240805183047.305630-7-msp@baylibre.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240805183047.305630-1-msp@baylibre.com> References: <20240805183047.305630-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 Tested-by: Matthias Schiffer --- 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 7910ee5c5797..69a7cbce19b4 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -1541,6 +1541,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 Thu Sep 19 00:58:32 2024 Received: from mail-il1-f177.google.com (mail-il1-f177.google.com [209.85.166.177]) (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 D13BE16C87B for ; Mon, 5 Aug 2024 18:31:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722882694; cv=none; b=oGZVZXUgTHdLFZPjzfFgNHz2maozBFK4I/kseM0Q7yo31h2e4XwdMIae8G8gw5PETXA8u/7K2V7NEQhPxG92UeARRxMmW29NcrkRZaoX9FFJvTurYd8jUeb+G5Ycp9kp0HbZRENTdMrlUwx4wQMZRmaQA4ozxcleybz6BY8syRc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722882694; c=relaxed/simple; bh=ChE2g8Bo15dbwXQCCELmyUPyayPuAqr/37EK4Q7ZpbM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rsANCbsond47/mz//pB63FNvcoEeXqYvMF1fCAt1vkPsordvs1kAmkMraXquCgpv8/wb3L+ZO6sSXN8MHX/wk6YtZGj0pxQmuuvhJ90yQO74MkU0Blk94tvgrnGr3ulDFqRG1ZRDd/3MSwfNl/8KGqZLOx+4jx6JrzC6V+8urcM= 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=MGgdwHrj; arc=none smtp.client-ip=209.85.166.177 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="MGgdwHrj" Received: by mail-il1-f177.google.com with SMTP id e9e14a558f8ab-39b3754468eso8011725ab.2 for ; Mon, 05 Aug 2024 11:31:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1722882692; x=1723487492; 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=Jt7QmiC+1K2MGxeb2j6VpzaOIs10RnCuQP9HHad9ocQ=; b=MGgdwHrjvjGji3glD5U++0SrVoXTlB2Dl3dc3MSCu1tPObTpuhxJXWBlElVZ4/XKEf 7ICWR+SsD+cEICW00mUpVCqbgmoyRjPoMki2KGO4j3SqB5VUJVhE7u/bBEfvZVEoIF70 hFQukWnI9b8wRevPfKaSb9RnFjtMevXNVrdjKe4M13oWL77lyfbnOKlr33P97taeE3w9 5omJ194jLesJBiKQoiGCHek7NCVZIuLvK5tGQPUM9X5jUEC8C33NjHoR02hgBCQrtGQz 9yDtqxY78L2IAZRrSo1reXF0KPpSTJjNkXC/drQYr+94XK9368y0e3h9QP5JjrGU8A2T pMUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722882692; x=1723487492; 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=Jt7QmiC+1K2MGxeb2j6VpzaOIs10RnCuQP9HHad9ocQ=; b=dCw0zjQAjIAM4lzWhUpzlknjgDwJ6njKjOuTeAQJdWT1H8jZuFCwbL5UA1NRyzxnTV 2jzW9oDSqbk+zcQBWdZvoPftY5+j5UYuxQmcIqMYuokkC4oXblHwwHqYhOuB4hnGDfIl y2OsDA+GVAoKDyxCj/NiUk0esP/sbhpkZl5pJIIr3eDSpYWPbwo1crOJsBPOy3TqawTf 8hc2w8tC0CjW//FW4ZgimGCJC6N2L778uxQicTfqgYcuZzVNghpVsAva7g1zxP340kJv bkQ9AJQWBsr7qKeeiGqVQiAPHWsJK6XrOYDKd00f0pdxMUkVjei7ztKwNrK+6yQLGEBZ xB0g== X-Forwarded-Encrypted: i=1; AJvYcCVqMA1BE4OEq6+Ymy8CW3CE4jVtavcabOL1psEcvEWnC1SKuSyIM2TXpgEST6sJOvOICyBth9oJMkIHMfdyffHb11e5lOQmEpKpbQSm X-Gm-Message-State: AOJu0YxqPi6f2NCOPv6jlPzuaibAvzfPAw3mIgYgY4uh8dXK8y7q9QP1 WSwPECiSCGlT+BXtU/gXiri/fLt67unxSAFVYmOBliUyv9pr/qxYCZKKsmqW9Wg= X-Google-Smtp-Source: AGHT+IFsYDvT/ScJTO38P4uPEY7MfcyBrpm0xyFckk7S5UPZJYPzTYR+VYnkh8TLJZtvjqPo5U1Jew== X-Received: by 2002:a05:6e02:214b:b0:39b:32f6:5e90 with SMTP id e9e14a558f8ab-39b32f65ed5mr87967485ab.15.1722882692118; Mon, 05 Aug 2024 11:31:32 -0700 (PDT) Received: from blmsp.fritz.box ([2001:4091:a245:8609:c1c4:a4f8:94c8:31f2]) by smtp.gmail.com with ESMTPSA id e9e14a558f8ab-39b20a9af29sm30867925ab.13.2024.08.05.11.31.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Aug 2024 11:31:31 -0700 (PDT) From: Markus Schneider-Pargmann To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Vincent Mailhol , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , =?UTF-8?q?Martin=20Hundeb=C3=B8ll?= , Markus Schneider-Pargmann , Judith Mendez , Tony Lindgren , Simon Horman Cc: Matthias Schiffer , Linux regression tracking , linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 7/7] can: m_can: Limit coalescing to peripheral instances Date: Mon, 5 Aug 2024 20:30:47 +0200 Message-ID: <20240805183047.305630-8-msp@baylibre.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240805183047.305630-1-msp@baylibre.com> References: <20240805183047.305630-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 Tested-by: Matthias Schiffer --- 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 69a7cbce19b4..5fd1af75682c 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -2181,7 +2181,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 | @@ -2192,18 +2192,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); } @@ -2389,7 +2391,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