Received: by 2002:ab2:6857:0:b0:1ef:ffd0:ce49 with SMTP id l23csp2474189lqp; Sun, 24 Mar 2024 22:21:34 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCWOxatAOkFf8iBfcKAMSaGET9WYkhilkTgG4EtzbITb0OVWQviSVVXjyLXeWNlxDIbk8eUrO3aqbghPK8u+xBr/6Rw6ac3rdnVzWgJwJA== X-Google-Smtp-Source: AGHT+IEOMcjTPiL1javDtwkTb0IlRBqJT6ut5+ukBQuYJMEQLUXpBr1j5MBWCg7IpJEPhLt56lhg X-Received: by 2002:a17:902:7002:b0:1e0:a97:90bc with SMTP id y2-20020a170902700200b001e00a9790bcmr4764092plk.60.1711344094295; Sun, 24 Mar 2024 22:21:34 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1711344094; cv=pass; d=google.com; s=arc-20160816; b=G4Iwlp0NIe5Zs4HzH4NjBQ7N0Dsl/cqPz2TWH46OWKX3B3fPwD9F6uEJsclT6syftR uu2s+CJLQqzcLzij7OFacfDZqCHdXIZWjT1tBIf4Ql23//Fj24d+37nQ0jFvePRvoft1 yuPRCtzDAilXDIMFZ+q1bRgZSio4r7nL0igONvZ3isBYe5bAnJ21Giey6Uc8+FMRxyFz BEmYYa6YGB2XhCAr85ncsi2O4+4DLoYz7TFDcCQnb4RzWoFjmmvUgeisbqlLcDCYRSD0 i8a6kg1g0+fbGVrjDXDTrBuc5T8e7/vx+cj5cWvxBAXb36To7fnvDDij11N8Sbt3dVox aeiQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=/AKMFPcpkHYvcVkvH44a0ycEJoh8abCXVb1KxH/iTow=; fh=M09wjVRTiQyMAYJtRnazP4Wnt/K4NDtwIy0lcmW15KY=; b=nmVr3m/5ReqDYG3xGlZSgn8n99SPMtB0vXLr3l5LmScEul7PTCubkBwfa6E1sX6zvj Bx8H75a57wr3NleJ4ExdApeTlqni7Y7epRubQjUrhGaHRc+C3lL2Y5UZ1z3lrRw4RAsQ LWKhVWDzOvU5EypYPZAjX+QsshpP5qu0xYlgLAZx/K9DnXh4BJlwCw4kBE1jSREtWBBw rPyU7RMGBLj5585xjV8hfByRXes+hFjSoMY3qQu5ClaznC8lupd0Y+yoNS8Y/hZYi0zU M6PYESQi7TvkCug6Hd0AYJSFkhKV2MAUHgKSpBVL17UHDQEf8ewHMWlY/uBGZf8sMLSG OALA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=gfiAkPN3; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-113763-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-113763-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id d2-20020a170902cec200b001e014d1fb38si4554584plg.141.2024.03.24.22.21.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 24 Mar 2024 22:21:34 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-113763-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=gfiAkPN3; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-113763-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-113763-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 4A75B2901AF for ; Mon, 25 Mar 2024 05:19:51 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4583712D1F1; Sun, 24 Mar 2024 22:58:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="gfiAkPN3" Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5A8DC146583; Sun, 24 Mar 2024 22:52:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711320778; cv=none; b=sDWReW5GENWjuHyKBAtuM2btd7eHwRJiER75+wyNVLQUjBVIsyszGMF0553MC4TS2bAOlzBht+0dBMuh+ax2/zSVY0GJHHYJFlkjpOAd50i+8rC3g73nvwxKXFLbEl73YGuWVwCAZRIWTTQP2VFZMxbHORgUQa4nYIxT8kQBoDM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711320778; c=relaxed/simple; bh=SyyvxpOBiscFYM8hG/1wtsgj6jCx4t5ztVWGGSs0e6k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hVQ5rv8nTaNrRpkBV6qMPopbEG1qS3lw0HdiUbMyAsnMctp2LVerjWDSvtzwDsKNZkdMCNtFozNPu/xE8Nm3vSfNBqhhI/0nIDI4KKRTK/hQLGz5I/bXYgVgEIMtrcl0OzxDuZWjecJDbh7PzX/ExOZUWqBIjxvbzbEaDv29fm4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=gfiAkPN3; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1EFCAC43394; Sun, 24 Mar 2024 22:52:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711320776; bh=SyyvxpOBiscFYM8hG/1wtsgj6jCx4t5ztVWGGSs0e6k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gfiAkPN3Me1MXd5XYxHY5yGuQVjiHB4tMWEs93n6xdpZ14fUJboS8H5U1EEOLio5b rQCHLqjOcUiLsTwkK09HkNN+StjmpPSTxByO7oauSODgwsDkyj8s1XrKHdgH06A8Wu darwpCFJYsRcPW/z4uGmb4g+BqDVAcLM82zk5sKamivzF8VaZ+aqMMtuQNFxgyr4V+ xkT/anZiWGmOUnHBo9bJSgcGVaa8IV/ud4w2k3MXE/8w1nJ0ig32zh32rmR5R2wnzA VO5wnHeTd9WP9CYcZxajEgDmKEPM0IW0hhRbg40E7dZBkYCTa9rIh15rsaL8rTdhXq gStPCswK79E4w== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Vinicius Costa Gomes , Kurt Kanzenbach , Naama Meir , Tony Nguyen , Sasha Levin Subject: [PATCH 6.7 340/713] igc: Fix missing time sync events Date: Sun, 24 Mar 2024 18:41:06 -0400 Message-ID: <20240324224720.1345309-341-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240324224720.1345309-1-sashal@kernel.org> References: <20240324224720.1345309-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit From: Vinicius Costa Gomes [ Upstream commit 244ae992e3e80e5c9c272c77324c831148457f95 ] Fix "double" clearing of interrupts, which can cause external events or timestamps to be missed. The IGC_TSIRC Time Sync Interrupt Cause register can be cleared in two ways, by either reading it or by writing '1' into the specific cause bit. This is documented in section 8.16.1. The following flow was used: 1. read IGC_TSIRC into 'tsicr'; 2. handle the interrupts present in 'tsirc' and mark them in 'ack'; 3. write 'ack' into IGC_TSICR; As both (1) and (3) will clear the interrupt cause, if the same interrupt happens again between (1) and (3) it will be ignored, causing events to be missed. Remove the extra clear in (3). Fixes: 2c344ae24501 ("igc: Add support for TX timestamping") Reviewed-by: Kurt Kanzenbach Tested-by: Kurt Kanzenbach # Intel i225 Signed-off-by: Vinicius Costa Gomes Tested-by: Naama Meir Signed-off-by: Tony Nguyen Signed-off-by: Sasha Levin --- drivers/net/ethernet/intel/igc/igc_main.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c index 58ffddc6419ad..45716d271d955 100644 --- a/drivers/net/ethernet/intel/igc/igc_main.c +++ b/drivers/net/ethernet/intel/igc/igc_main.c @@ -5304,25 +5304,22 @@ igc_features_check(struct sk_buff *skb, struct net_device *dev, static void igc_tsync_interrupt(struct igc_adapter *adapter) { - u32 ack, tsauxc, sec, nsec, tsicr; struct igc_hw *hw = &adapter->hw; + u32 tsauxc, sec, nsec, tsicr; struct ptp_clock_event event; struct timespec64 ts; tsicr = rd32(IGC_TSICR); - ack = 0; if (tsicr & IGC_TSICR_SYS_WRAP) { event.type = PTP_CLOCK_PPS; if (adapter->ptp_caps.pps) ptp_clock_event(adapter->ptp_clock, &event); - ack |= IGC_TSICR_SYS_WRAP; } if (tsicr & IGC_TSICR_TXTS) { /* retrieve hardware timestamp */ igc_ptp_tx_tstamp_event(adapter); - ack |= IGC_TSICR_TXTS; } if (tsicr & IGC_TSICR_TT0) { @@ -5336,7 +5333,6 @@ static void igc_tsync_interrupt(struct igc_adapter *adapter) wr32(IGC_TSAUXC, tsauxc); adapter->perout[0].start = ts; spin_unlock(&adapter->tmreg_lock); - ack |= IGC_TSICR_TT0; } if (tsicr & IGC_TSICR_TT1) { @@ -5350,7 +5346,6 @@ static void igc_tsync_interrupt(struct igc_adapter *adapter) wr32(IGC_TSAUXC, tsauxc); adapter->perout[1].start = ts; spin_unlock(&adapter->tmreg_lock); - ack |= IGC_TSICR_TT1; } if (tsicr & IGC_TSICR_AUTT0) { @@ -5360,7 +5355,6 @@ static void igc_tsync_interrupt(struct igc_adapter *adapter) event.index = 0; event.timestamp = sec * NSEC_PER_SEC + nsec; ptp_clock_event(adapter->ptp_clock, &event); - ack |= IGC_TSICR_AUTT0; } if (tsicr & IGC_TSICR_AUTT1) { @@ -5370,11 +5364,7 @@ static void igc_tsync_interrupt(struct igc_adapter *adapter) event.index = 1; event.timestamp = sec * NSEC_PER_SEC + nsec; ptp_clock_event(adapter->ptp_clock, &event); - ack |= IGC_TSICR_AUTT1; } - - /* acknowledge the interrupts */ - wr32(IGC_TSICR, ack); } /** -- 2.43.0