From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.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 2AF2C36215F for ; Mon, 17 Aug 2026 07:51:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786953066; cv=none; b=WPqTDjIh2nGWujGWEjD1l1Hgr/Z96DV/FAGP7k98oa7h4B+3iOJlxX1qEm2V6rpB3KTkOMFfYQOLHa488ZAIUwfigPT0MpeTUWqONyhemxPU+kRputnwKG+1oG8xiGm6Pq+s0nqvbxQ8I5Lpt+vAe7yiOuFD3hoF9qjubl42miE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786953066; c=relaxed/simple; bh=KqGtfRoq3jZT/Dml4qg+Mxz1uCIEFJzeVXIq0OKduLk=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type; b=ClAn7X4punNgL9B2GZZd0UqVMobdtU2zheTDQmD5V4nShZt5bjzDtEwtgTC4r644KQH4W1hmPCrNrRSggikO5I7hLdV/6S3ls52s8FgC+F+/LPyUgQMR2zGhc0Og+xOwf6536ZAeW2AmXNBG6GmQ+7qs1w786h5KCH5PBYIzy4k= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=LT3KZzX/; arc=none smtp.client-ip=209.85.128.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="LT3KZzX/" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-4998e0916faso13914135e9.2 for ; Mon, 17 Aug 2026 00:51:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786953063; x=1787557863; darn=vger.kernel.org; h=content-transfer-encoding:content-type:mime-version:message-id:date :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to :content-type; bh=DDeFtTnxMBvDDeM+UXcBJoOG/+TlVBVJ2Mo0e9wRHls=; b=LT3KZzX/BjyCw8+wKR1qFBm+3/AuNUzbGuIiN7u/jmEolL5UWMzmf4XaLydaQoKV3l 5Z3huDM1a8YrbkmkPOYPDd59w63TfioL4QLiuwddqD6W2vHk1n+hsLbQVtNbVzaFE0jZ cozX6D+oOoCuV6yhMW+KBFvhqlpr8RzsDBbGKLHesXWYgjxl0ltMMlvzZpev2N+tkdc7 VTHtCQ/U5yC/3pztHtLBlbBft73dcF6+kJxM7e6DUvDGFl6/C3n6YZKo4dzRKm4q2dv2 ydy67rbfies3oTvm6MnHV99ozwh6C58IhoscneP3xmYZedJY03H3r5bYZJDjRYPn5P0D vQFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786953063; x=1787557863; h=content-transfer-encoding:content-type:mime-version:message-id:date :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=DDeFtTnxMBvDDeM+UXcBJoOG/+TlVBVJ2Mo0e9wRHls=; b=m37CLkGP0wUgU4DLgUmlv/s8FVMCgIcvPGWmTgGEYu0mnAJLkaEzJjEnGf4LUmWcVW y4sh3QL6SkKDlWbBe4id8I9Np3pFwUWnm6G5YjL+r4qimSvPpZAePkMB+FuQ2UpsrEaj 8ljD9Nwyeuaxz1W7D+YuV2CDDWaiRjiVd8orOqrMhminmw/MqWF+o8inxsv1lB+UksFh 9/ELNSYu635EUANFzA28JfxrfuH4IUB++uJpFyrlewjQAMB3RTLAcqdh7cff5MLeuxP3 RRRiEEdJBgf87wAFsMggH8/fiY2QVmovgihXr12n4mLkrIeQOFc+BJcM+W67gpEwqwur PJcQ== X-Forwarded-Encrypted: i=1; AHgh+RosUVmDR64mqTfeX7Qxq1rNPKODje4iK/ZK5V5jbw/juxaqdDfc1KR6L9ikBkJ4xn7GuSQ5miN2hSztTnY=@vger.kernel.org X-Gm-Message-State: AOJu0YykFj7X9cQMwd/gdVhGu6kEbQ2PDl8CqSvFHfICscS48Ode7XES FhRwA3imy99gXm5syfK1RySPobjzJAaghNHeO9BQWiA+k6DTPWvTutTr X-Gm-Gg: AR+sD13yzz5OlA6z1AA9KFK4V2JzmpZGaGlPWerQvDsb7qf03RXbUPzSl7xEZRvpBWF 4KuSr9K1ot8h617tzE+e/aXG+gqNttlnl5LUofQHaiywTATnfYhMcZuYyqxAq0nwG3oKODi4slx lkh7TIT4yUlQmdFd/Pf86qELT9Ipka7yIYHtlH6fe/R0lpCDsIg3KsafXpOTDLQUlBgg+9eVG4t OVXaBqZwExZWEo8RbIDSaLhjMHdCHKE6fjk5hKbu1schzkfutusQeUQZbuvf4A52MV6BtVXs0w0 B6UKyDN++mZG8ZL3hyk1RHhy3vxOYH/Ky5sfjL1fRR2lheUBqGLkcp/9iw9iV0fvVtfXN9o5Bie k5ARc6doS14c0vPRCBLtlDmPO0ZQ3uTnWgWR57lw3hNudXpxvENQoDQOM3p8JcNWl8xoy5UXuL0 +b97P2Q+EmRRSvHGg7e7XXdJNaQWp8MVqk6SjEMxA027oiN+UuZRaET74YjpTn3JHs30trtFGRC 6ZtD4/dBFMqTUtsFbs6Da4BHBR6dn2BmEf4lcramuokUUZ9gulmU+x4 X-Received: by 2002:a05:600c:3114:b0:495:63e4:7f78 with SMTP id 5b1f17b1804b1-49987971986mr331622695e9.10.1786953063033; Mon, 17 Aug 2026 00:51:03 -0700 (PDT) Received: from Ansuel-XPS24.localdomain (host-79-40-190-175.business.telecomitalia.it. [79.40.190.175]) by smtp.googlemail.com with ESMTPSA id 5b1f17b1804b1-4999d11f073sm22486255e9.15.2026.08.17.00.51.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Aug 2026 00:51:02 -0700 (PDT) From: Christian Marangi To: Lorenzo Bianconi , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: =?UTF-8?q?Leto=20Liu=20=28=E5=88=98=E6=B6=9B=29?= , Christian Marangi Subject: [PATCH net v4] net: airoha: Add retry mechanism to airoha_qdma_set_trtcm_param() Date: Mon, 17 Aug 2026 09:50:39 +0200 Message-ID: <20260817075044.17691-1-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.53.0 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: 8bit From: Leto Liu (刘涛) CPU accesses QDMA via the bus. When multiple modules are using the bus simultaneously, CPU access to QDMA may encounter bus timeouts and fails, resulting in QDMA configuration failures and potentially causing packet transmission issues. In order to mitigate the issue, introduce a retry mechanism to airoha_qdma_set_trtcm_param routine in order to ensure the configuration is correctly applied to the hardware. Fixes: ef1ca9271313b ("net: airoha: Add sched HTB offload support") Signed-off-by: Leto Liu (刘涛) Signed-off-by: Christian Marangi --- Changes v4: - Rebase on top of net Changes v3: - Init data - Use continue instead of negative error for poll - Add memory block after CFG_PARAM drivers/net/ethernet/airoha/airoha_eth.c | 29 +++++++++++++++++++----- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/drivers/net/ethernet/airoha/airoha_eth.c b/drivers/net/ethernet/airoha/airoha_eth.c index 79418e682f71..302f8c432055 100644 --- a/drivers/net/ethernet/airoha/airoha_eth.c +++ b/drivers/net/ethernet/airoha/airoha_eth.c @@ -2712,14 +2712,31 @@ static int airoha_qdma_set_trtcm_param(struct airoha_qdma *qdma, int channel, FIELD_PREP(TRTCM_METER_GROUP_MASK, group) | FIELD_PREP(TRTCM_PARAM_INDEX_MASK, idx) | FIELD_PREP(TRTCM_PARAM_RATE_TYPE_MASK, mode); + int i; - airoha_qdma_wr(qdma, REG_TRTCM_DATA_LOW(addr), val); - airoha_qdma_wr(qdma, REG_TRTCM_CFG_PARAM(addr), config); + for (i = 0; i < 100; i++) { + u32 data = 0; - return read_poll_timeout(airoha_qdma_rr, val, - val & TRTCM_PARAM_RW_DONE_MASK, - USEC_PER_MSEC, 10 * USEC_PER_MSEC, true, - qdma, REG_TRTCM_CFG_PARAM(addr)); + airoha_qdma_wr(qdma, REG_TRTCM_DATA_LOW(addr), val); + wmb(); + airoha_qdma_wr(qdma, REG_TRTCM_CFG_PARAM(addr), config); + wmb(); + + if (read_poll_timeout(airoha_qdma_rr, data, + data & TRTCM_PARAM_RW_DONE_MASK, + USEC_PER_MSEC, 10 * USEC_PER_MSEC, + true, qdma, REG_TRTCM_CFG_PARAM(addr))) + continue; + + if (airoha_qdma_get_trtcm_param(qdma, channel, addr, param, + mode, &data, NULL)) + continue; + + if (data == val) + return 0; + } + + return -EBUSY; } static int airoha_qdma_set_trtcm_config(struct airoha_qdma *qdma, int channel, -- 2.53.0