From nobody Fri Sep 25 12:04:28 2026 Received: from fhigh-a7-smtp.messagingengine.com (fhigh-a7-smtp.messagingengine.com [103.168.172.158]) (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 6090130D41B for ; Sun, 13 Sep 2026 10:14:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.158 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789294445; cv=none; b=Ps/A2JFl2LqewpST++q7+hCGaTTR/YS8LVQD+j0ZGM3HHfaThDKDy6Oz+y9HeCxmxns4QCW2zNwIvWgJ6K3UccvTD+zvttDIibIE+VmbrpB+s4XXR6rl4TFA8bUOw0F977nIX9ZnSMmEy/V1LqksHAZWWHnaR8hFvX7pCtp9k70= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789294445; c=relaxed/simple; bh=dhOHOd5iaY1ZqxvsmmHDO+43mejiMHcT4jgTkHlKHV8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=S2LbTGBMXv3ws9a0u0xntrd9XEQAkaYExcjK0jee9Vty8EHToj2RwEAKakm9uolNVcf6mSjHgWnqgBgCkPEqtuFmiSSwHZGX2TWHI5i5IPY80w4e/r0UFeWr955mWtNKPH5g3Il/UolRt4A5hsPl7JIu2tb6iLQYO8nK0o152OQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sakamocchi.jp; spf=pass smtp.mailfrom=sakamocchi.jp; dkim=pass (2048-bit key) header.d=sakamocchi.jp header.i=@sakamocchi.jp header.b=7LH3xAvc; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=BxuKOdWh; arc=none smtp.client-ip=103.168.172.158 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sakamocchi.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sakamocchi.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sakamocchi.jp header.i=@sakamocchi.jp header.b="7LH3xAvc"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="BxuKOdWh" Received: from phl-compute-05.internal (phl-compute-05.internal [10.202.2.45]) by mailfhigh.phl.internal (Postfix) with ESMTP id 3AEC0140005D; Sun, 13 Sep 2026 06:14:02 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-05.internal (MEProxy); Sun, 13 Sep 2026 06:14:02 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sakamocchi.jp; h=cc:cc:content-transfer-encoding:content-type:date:date:from :from:in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm1; t=1789294442; x= 1789380842; bh=qQoWl2DdoztWHBwxZPjC62IJTGMp8AXdnfB8ORilBcs=; b=7 LH3xAvcnSviMgFv7bapAO+JggpHCSlJU9KK/qmtvUda3Wo/q4dSsC5h2Fzvh3j3o QK2ofRTr1K5mXpAb/4qHG40e8ktmqeE6fJRqcLpVF2WbWBMpO2LXvYbcwPeVkENQ gIU96koKXB5mYDqA+4mLTDFOPUKjeZYnecGodgEm++9MoQZUO5N4h/x/O+ZDKNH/ BK8KeKzTBE4aykr/jQrg9OU2wRs7O/FsQrZVR0XkWw8P3wmilc4gMtkyUdLXEwxT VNPoEYqfkB/YdzXU7NqFc3ZbMG05zRMGlyfNTpBs7eclLH74HCuwIlPuUxiwh+Au 8tCsb9wVRuJfVAsy57vFg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; t=1789294442; x=1789380842; bh=q QoWl2DdoztWHBwxZPjC62IJTGMp8AXdnfB8ORilBcs=; b=BxuKOdWhRv8kEubxn 8hNqApGforOF3mXSX8GPKSoM9c2EcYT8uGxQS1sqzTV+qunXEdn1RBBKhJhJN1tU yrW9Y3AlSQvFrCfTPsz7AyVKLzyQORammxeNV/WahZEG6/56Cl5RdZ2lMbjwRFfK xgP9zpOEV2Zw35tYog3XfpMJu0cnWTTxmE80OofsfMIiow4NfGirHkn7n4hHUvXK dNCyA2naOKKu3iBS6TGahtWvko6bHTMZ1AIk+C+aKytRefanfvoUbQ/mCBPRoL5W JXg15njAAddt30oirhyZaM1fdchZ6UptxPXi9y7dbtB7lfUqSdp06zk+7Fp105FY nMOsg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTG2/vy8D0TbaMZOOhOpGNWwOGVtNK7N3/Ngp133it+bhfjOwGH+I3f6TifYcbFCix d+aExY2U0cYC7fsd7F/Fw21a1yBHo7Ftaz2iRM2h3gfR5T7dXWR8r+smeEK8E28yK4bIYd ixLHKJoqK4EZNfSK1zEMlMFiFzl5g6Jx8QVFNKC3RJa2Os6FyyhShJlD7ix43o2qA7rLeH OUwVltsbra+ufek/Q756DmmV1U+01AJ3ER4g0bUtgnCg5AB941tbiwQ3ExpQ4AI1Dh8OQh oY6X9VjBXg0YPP0riUEHb6zHa1SaebZS3x/r/3AjkMhIWic2pIMC15GtHju9uGnUtrHKoW XXSD93dI1L08C/skWwJqbqpiJaw898QkkTTD0SVXiXDj03xIpid6AEhKn192r/tl5lsFXs Eoec9bWwPRb3khMFAdUJ9W29x9M943T7ReMw5mexno7bme2xcLDhhiCh4gAhbx7ThSAByg 64+rQeNMm6Y/yAhfUFY8U4ye1jhvX53A5iK3DdKyQqo5FVkkNZ0Ue8VMsEcsGDF+U4h00L nsvGoSsPnhFpJZ8VQpE1eKvGVsJiF4oJmDG8dKNOMeFbIJBV8x8ATW+ocSVpBjIl8OL8i8 3ffwmVykmRISb6UAfkZWJZz23tr97MTgOG6t/tlT3wZvCK+Cv30swLlWafWA X-ME-Proxy: Feedback-ID: ie8e14432:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 13 Sep 2026 06:14:01 -0400 (EDT) From: Takashi Sakamoto To: linux1394-devel@lists.sourceforge.net Cc: linux-kernel@vger.kernel.org Subject: [PATCH 1/5] firewire: ohci: use in_range() macro to detect CSR address ranges Date: Sun, 13 Sep 2026 19:13:52 +0900 Message-ID: <20260913101356.156420-2-o-takashi@sakamocchi.jp> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913101356.156420-1-o-takashi@sakamocchi.jp> References: <20260913101356.156420-1-o-takashi@sakamocchi.jp> 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 current implementation handles asynchronous packets sent to the two CSR address ranges on the local node specially. To decide whether a packet is destined for either range, the destination offset needs to be checked according to the IEEE 1394 and 1394 OHCI specifications. The current implementation uses both conditional and switch statements to check the offset, which makes the range checks difficult to reuse. Add two helper functions for the range checks using the in_range() macro. Signed-off-by: Takashi Sakamoto --- drivers/firewire/ohci.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c index 7d797755bbd6..c8cb7bdcb4ed 100644 --- a/drivers/firewire/ohci.c +++ b/drivers/firewire/ohci.c @@ -1534,35 +1534,38 @@ static void handle_local_lock(struct fw_ohci *ohci, fw_core_handle_response(&ohci->card, &response); } =20 +static bool in_config_rom_csr_registers(u64 offset) +{ + return in_range(offset, CSR_CONFIG_ROM, CONFIG_ROM_SIZE); +} + +// 5.5.1 Bus Management CSR Registers. +static bool in_bus_management_csr_registers(u64 offset) +{ + // 0x22c =3D CSR_MAINT_CONTROL following to CSR_CHANNELS_AVAILABLE_LO. + return in_range(offset, CSR_BUS_MANAGER_ID, 0x22c - CSR_BUS_MANAGER_ID); +} + static void handle_local_request(struct at_context *ctx, struct fw_packet = *packet) { struct fw_ohci *ohci =3D ctx->context.ohci; - u64 offset, csr; =20 if (ctx =3D=3D &ohci->at_request_ctx) { packet->ack =3D ACK_PENDING; packet->callback(packet, &ohci->card, packet->ack); } =20 - offset =3D async_header_get_offset(packet->header); - csr =3D offset - CSR_REGISTER_BASE; + u64 csr_offset =3D async_header_get_offset(packet->header) - CSR_REGISTER= _BASE; =20 - /* Handle config rom reads. */ - if (csr >=3D CSR_CONFIG_ROM && csr < CSR_CONFIG_ROM_END) - handle_local_rom(ohci, packet, csr); - else switch (csr) { - case CSR_BUS_MANAGER_ID: - case CSR_BANDWIDTH_AVAILABLE: - case CSR_CHANNELS_AVAILABLE_HI: - case CSR_CHANNELS_AVAILABLE_LO: - handle_local_lock(ohci, packet, csr); - break; - default: + if (in_config_rom_csr_registers(csr_offset)) { + handle_local_rom(ohci, packet, csr_offset); + } else if (in_bus_management_csr_registers(csr_offset)) { + handle_local_lock(ohci, packet, csr_offset); + } else { if (ctx =3D=3D &ohci->at_request_ctx) fw_core_handle_request(&ohci->card, packet); else fw_core_handle_response(&ohci->card, packet); - break; } =20 if (ctx =3D=3D &ohci->at_response_ctx) { --=20 2.53.0 From nobody Fri Sep 25 12:04:28 2026 Received: from fhigh-a7-smtp.messagingengine.com (fhigh-a7-smtp.messagingengine.com [103.168.172.158]) (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 22D953E1228 for ; Sun, 13 Sep 2026 10:14:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.158 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789294445; cv=none; b=Zi3E5UfgXxWwHXfL9c2kV6PQn7Nk9y6tMYBk3xrZouTvpZn9sBYJx76cufGJVe6t6G4RFGQxuAl+4NivO/sSsx3sSi3HFaqKOlDJQOFBn8GgO92sPhZKtPQ5n3S9vjRyLsgQ1DNIq4cMZgzXat7SvcPuy9GjsLvmR0gP4K7WwS8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789294445; c=relaxed/simple; bh=VChGRxaG2c4unI55GPmtmcfb7WPColSjPRgjppEoNDA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sGtQrrC4d9tTGWBugU3HxYSFvG/3ruZgtCOBMRMs9dHZTxHgs1MPgqMypxeN2qH9BYLg/lVfyfX4hPxcRny1NmUC0Uz8CgqvjOMNPjZYXFj3KYqQltjcjzztzADmG9hNudHyx9MJVY+b9EszwFKugMeXk9UaugjaXfMcQNEegS0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sakamocchi.jp; spf=pass smtp.mailfrom=sakamocchi.jp; dkim=pass (2048-bit key) header.d=sakamocchi.jp header.i=@sakamocchi.jp header.b=fCInQmIy; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=DKAKGmOp; arc=none smtp.client-ip=103.168.172.158 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sakamocchi.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sakamocchi.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sakamocchi.jp header.i=@sakamocchi.jp header.b="fCInQmIy"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="DKAKGmOp" Received: from phl-compute-07.internal (phl-compute-07.internal [10.202.2.47]) by mailfhigh.phl.internal (Postfix) with ESMTP id 74BEF140005E; Sun, 13 Sep 2026 06:14:03 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-07.internal (MEProxy); Sun, 13 Sep 2026 06:14:03 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sakamocchi.jp; h=cc:cc:content-transfer-encoding:content-type:date:date:from :from:in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm1; t=1789294443; x= 1789380843; bh=1kjEhTOI5iRMtpqhlTPoCMN+ls1HPxyWnHe8hUHPglU=; b=f CInQmIyYTaz5uPCMpIm3yS8sNnt/KlNg2XhYGFdZjJYjuOX5miGhie9I9NR3pOla 12aU+qn5mFvRgIfrKYKpHTQFTB9Q6PNNPTmHuhApWtPnmQ5LWk/GFM6LcOXVPAkX ujoYcInZxwyHcIlTOG2hZlYR0wc9lLJmbPffQyJAuZsbouzEeMVNd7+yuaDg/wo5 XTFCUZSiVuGhHGYkqrjN+CE3hL+3+dc5oDOW9SiNjVPhaiklFRbsCzd9S0ZibD5f RoKfAYgxGYJ3y5CgTqCe1XAvzBOAaSruaxENh+/rBnHsqnPT4SeuMgUlSPeDsLzG qMTzTIFBJFX0q5oxEAyhg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; t=1789294443; x=1789380843; bh=1 kjEhTOI5iRMtpqhlTPoCMN+ls1HPxyWnHe8hUHPglU=; b=DKAKGmOpDI65nhvvI UnuYtasR9pcqw7oc5rhg3fnmvpJlL20Ied6MxVSPFbDnR633PNXPaWgvDU+s0JxP jS4J+9I9K4vqkNR3xy5SaEJ4xQnRfLaX+uCmuxnN1J2KHzpW4BkkUXyfZjPFApkw H0LqS4CZaqfnSAkFAAvs5UrLMP+sNFmSJEVxrdjoTfdUiu/FZFgh2MbOMDTkts4c 1KTeHY0pk8mhDlTIKtVxsMI/ZGfw8RUmuPpcK8x6sUj36eFhkGuXTIO/IR995Pjk W66VC1naYezvNaw+dmL2qnfmCvwSy3GjQ/CkaHbwT850xv5XGXP8lv4sM+dZYCBe QRldw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTG2/vy8D0TbaMZOOhOpGNWwOGVtNK7N3/Ngp133it+bhfjOwGH+I3f6TifYcbFCix d+aExY2U0cYC7fsd7F/Fw21a1yBHo7Ftaz2iRM2h3gfR5T7dXWR8r+smeEK8E28yK4bIYd ixLHKJoqK4EZNfSK1zEMlMFiFzl5g6Jx8QVFNKC3RJa2Os6FyyhShJlD7ix43o2qA7rLeH OUwVltsbra+ufek/Q756DmmV1U+01AJ3ER4g0bUtgnCg5AB941tbiwQ3ExpQ4AI1Dh8OQh oY6X9VjBXg0YPP0riUEHb6zHa1SaebZS3x/r/3AjkMhIWic2pIMC15GtHju9uGnUtrHKc1 DJdCNhX4BqTHdsaaUltlYiav5LZoG62e1dVmZw7XgJuUOH2dFaByuzDtmFHr4h890MU74V Q13ckyqExYDzf+bB7iNd4Y7ZgmYQ+rzRcgwe0RpnmYDmDZEM9yj3PcGViqudyaPsSAOz/8 dC6bkjJRwXmdnKc+tgCT6VIIhaPEWFQoC6rmUsyh++6nGtAZiuw8U0l686tJw8AmyMfgFd NPfWmUMKBPaIqVOaGIozCRGGwKlZytu3JHo5Om+V5DuWDavIReY3qHzUZyvbU37+jNjhwx WINGSNlrLT/kKAEI+sJDhZfpmLrIN3Oj/y/5uRa7c5I5lre4C0sTPsRzRwPQ X-ME-Proxy: Feedback-ID: ie8e14432:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 13 Sep 2026 06:14:02 -0400 (EDT) From: Takashi Sakamoto To: linux1394-devel@lists.sourceforge.net Cc: linux-kernel@vger.kernel.org Subject: [PATCH 2/5] firewire: ohci: add helper function to detect local AT request/response packets Date: Sun, 13 Sep 2026 19:13:53 +0900 Message-ID: <20260913101356.156420-3-o-takashi@sakamocchi.jp> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913101356.156420-1-o-takashi@sakamocchi.jp> References: <20260913101356.156420-1-o-takashi@sakamocchi.jp> 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 current implementation handles asynchronous packets sent to the local node specially. To decide whether a packet is destined for the local node, the local node ID and bus generation need to be checked while holding the spinlock, since both can change. Add a helper function annotated to require the spinlock to be held. Signed-off-by: Takashi Sakamoto --- drivers/firewire/ohci.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c index c8cb7bdcb4ed..290bac5112b7 100644 --- a/drivers/firewire/ohci.c +++ b/drivers/firewire/ohci.c @@ -1574,6 +1574,15 @@ static void handle_local_request(struct at_context *= ctx, struct fw_packet *packe } } =20 +static bool destination_is_local(const struct fw_packet *packet, const str= uct fw_ohci *ohci) +__must_hold(&ohci->lock) +{ + lockdep_assert_held(&ohci->lock); + + return (async_header_get_destination(packet->header) =3D=3D ohci->node_id= && + ohci->generation =3D=3D packet->generation); +} + static void at_context_transmit(struct at_context *ctx, struct fw_packet *= packet) { struct fw_ohci *ohci =3D ctx->context.ohci; @@ -1582,8 +1591,7 @@ static void at_context_transmit(struct at_context *ct= x, struct fw_packet *packet =20 spin_lock_irqsave(&ohci->lock, flags); =20 - if (async_header_get_destination(packet->header) =3D=3D ohci->node_id && - ohci->generation =3D=3D packet->generation) { + if (destination_is_local(packet, ohci)) { spin_unlock_irqrestore(&ohci->lock, flags); =20 // Timestamping on behalf of the hardware. --=20 2.53.0 From nobody Fri Sep 25 12:04:28 2026 Received: from fout-a4-smtp.messagingengine.com (fout-a4-smtp.messagingengine.com [103.168.172.147]) (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 8893839F166 for ; Sun, 13 Sep 2026 10:14:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.147 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789294447; cv=none; b=o1u/G83mqdhCP1lVS5TObR3RlexkYdXMOhbV/eklFv6jFFe9b/91erBOztvGT2T36KvGV9VH4vSaiM9BoFmQFq77STtxYCnXGm0kSvSHgtrW3TGM3uvJVSzuA3Pmot0Ywjoilk+DnBJgF3JA5qM2kF1WcdBZS76P0IPSi06J7/4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789294447; c=relaxed/simple; bh=SjBypaz3DT1soCXnhPB0oADSFANbq5oWrPBIawhcEGE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tXwUwMPVTUG9yHgdY/kravUNS66i0CbQX4GdH1sh68TdvdNaEsN9EtzBm3WdvMV62Kq8SmGaInMf4yn2ePAumTeJpWdXljAwKf4ZjhlwOFh8Epj1rs+cQuND0Mv6FJ5rvcIvhL0hiYH1rHQVic5XuAKhw6kPo7vpAsHOkOO1GUY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sakamocchi.jp; spf=pass smtp.mailfrom=sakamocchi.jp; dkim=pass (2048-bit key) header.d=sakamocchi.jp header.i=@sakamocchi.jp header.b=j3LiBoCs; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=Rr1r8EnT; arc=none smtp.client-ip=103.168.172.147 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sakamocchi.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sakamocchi.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sakamocchi.jp header.i=@sakamocchi.jp header.b="j3LiBoCs"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="Rr1r8EnT" Received: from phl-compute-03.internal (phl-compute-03.internal [10.202.2.43]) by mailfout.phl.internal (Postfix) with ESMTP id A3245EC019C; Sun, 13 Sep 2026 06:14:04 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-03.internal (MEProxy); Sun, 13 Sep 2026 06:14:04 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sakamocchi.jp; h=cc:cc:content-transfer-encoding:content-type:date:date:from :from:in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm1; t=1789294444; x= 1789380844; bh=ka2pH0yigSqDFdhjqx82tjE/cqgf/rVKE6tG8whlXl4=; b=j 3LiBoCsO9tB22xbFFgqqqW4kw+AVrjJUqVnHyroWA6IQ4JmeaOjLikG+3k7QYmsC G13RVHK9dtsJpL6CKl0uG8Lkye1SeIwMo5OqBOSPei1YVH0ALxUzprIRWeNEJPm0 zZwXQZUDCc+Le4jQ3y++ZCNi5IOO9HQjTPOmy5qVCW0VeJGgLsv79dKW1VThTbX8 Q41+I4VrsE4+rppMNfhcihFqnh+f0HxjolLTWoITRUexLo/7byVg5yJCVaCWp7lM ab4+qlsvNhdqet8nmzyZHknnNNYPJ2U2jFFuTj6tzOVzjwSL32ParK6nnsZ9yEub M02pNusdH+/nyWdaMuo0A== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; t=1789294444; x=1789380844; bh=k a2pH0yigSqDFdhjqx82tjE/cqgf/rVKE6tG8whlXl4=; b=Rr1r8EnTMCRrtQUhI mxlEbCgBxsaeMqzCgbtIZC2yCyz+AfRrvgmGGrqCK/lvqWD3Vc/07cYNHnpuScak zlh/TILICzC4YVhuwDxfdn8c066YdNfvMNA3wko0DPtAKG4BfhktLi/q/CvyTEK5 sO/c9J+cU0nUfpUm0VtvIFMiisJHFlV8aL66JliNQN+qCtY5EtfeLCiyAxGH/6RR cYMeCb22C6EL9iIXvQZ2Xo6AFAehgYywFeXLyPGdsmxJZnPfs1f20/LGNBo8cepu 11p4nGQUWM8bDoFQdZP2lTn5kdm0hDwimh2ApDXJTZ5T/iFRdgDvJLBM00I8CFpN tZiFA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTG2/vy8D0TbaMZOOhOpGNWwOGVtNK7N3/Ngp133it+bhfjOwGH+I3f6TifYcbFCix d+aExY2U0cYC7fsd7F/Fw21a1yBHo7Ftaz2iRM2h3gfR5T7dXWR8r+smeEK8E28yK4bIYd ixLHKJoqK4EZNfSK1zEMlMFiFzl5g6Jx8QVFNKC3RJa2Os6FyyhShJlD7ix43o2qA7rLeH OUwVltsbra+ufek/Q756DmmV1U+01AJ3ER4g0bUtgnCg5AB941tbiwQ3ExpQ4AI1Dh8OQh oY6X9VjBXg0YPP0riUEHb6zHa1SaebZS3x/r/3AjkMhIWic2pIMC15GtHju9uGnUtrHKs9 aieCzosmmdF+0mE1JeoEPcByupysjlh5GwHcdpsJm2MteItWqLs4zWOMG+PNg++zB81aw1 xyTi/oCXw2eCM0G3skGKknoqa1C50lxVkAhZU4AvEvddOsoq6g8qrn2CwxJLYMsf9PGmD8 9QCiqCSToC3DpddqKgYflnv2ThzsVGjBbTWsWo/TbJ4TqzGeECH4eW7nmoXVdBXYeCMzke zaO/i7Xq9qQEqmCObfw17n/d7wuwHszGd9CVB2NeaFP/PZ31gq6gj/4QONfG/KYUrXLaib 8VeXNSfzA9bBxHknFhko2N/+OI/knoqok3kinPdrtDCu5G6NlJeSvrchCv9Q X-ME-Proxy: Feedback-ID: ie8e14432:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 13 Sep 2026 06:14:03 -0400 (EDT) From: Takashi Sakamoto To: linux1394-devel@lists.sourceforge.net Cc: linux-kernel@vger.kernel.org Subject: [PATCH 3/5] firewire: ohci: refactor multiple calls to fw_fill_response() Date: Sun, 13 Sep 2026 19:13:54 +0900 Message-ID: <20260913101356.156420-4-o-takashi@sakamocchi.jp> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913101356.156420-1-o-takashi@sakamocchi.jp> References: <20260913101356.156420-1-o-takashi@sakamocchi.jp> 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 handle_local_rom() function calls fw_fill_response() in each conditional branch. Using local variables for the function parameters allows the function to be called from a single place. Signed-off-by: Takashi Sakamoto --- drivers/firewire/ohci.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c index 290bac5112b7..ec069657ea8b 100644 --- a/drivers/firewire/ohci.c +++ b/drivers/firewire/ohci.c @@ -1459,7 +1459,8 @@ static void handle_local_rom(struct fw_ohci *ohci, struct fw_packet *packet, u32 csr) { struct fw_packet response; - int tcode, length, i; + int tcode, rcode, length, i; + void *payload =3D NULL; =20 tcode =3D async_header_get_tcode(packet->header); if (tcode_is_block_packet(tcode)) @@ -1469,16 +1470,18 @@ static void handle_local_rom(struct fw_ohci *ohci, =20 i =3D csr - CSR_CONFIG_ROM; if (i + length > CONFIG_ROM_SIZE) { - fw_fill_response(&response, packet->header, - RCODE_ADDRESS_ERROR, NULL, 0); + rcode =3D RCODE_ADDRESS_ERROR; + length =3D 0; } else if (!tcode_is_read_request(tcode)) { - fw_fill_response(&response, packet->header, - RCODE_TYPE_ERROR, NULL, 0); + rcode =3D RCODE_TYPE_ERROR; + length =3D 0; } else { - fw_fill_response(&response, packet->header, RCODE_COMPLETE, - (void *) ohci->config_rom + i, length); + rcode =3D RCODE_COMPLETE; + payload =3D (u8 *)ohci->config_rom + i; } =20 + fw_fill_response(&response, packet->header, rcode, payload, length); + // Timestamping on behalf of the hardware. response.timestamp =3D cycle_time_to_ohci_tstamp(get_cycle_time(ohci)); fw_core_handle_response(&ohci->card, &response); --=20 2.53.0 From nobody Fri Sep 25 12:04:28 2026 Received: from fout-a4-smtp.messagingengine.com (fout-a4-smtp.messagingengine.com [103.168.172.147]) (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 E45593E1D11 for ; Sun, 13 Sep 2026 10:14:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.147 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789294449; cv=none; b=sjzy5HOf4nQDhPKTxfcsfmJFUryXGF9sIjqmyvnbl3NJRtqgHwHsDTYAbEkrtkLKTWv8BeEj2h7JzLBK7W2mZ4u66jCuD8GR2i70bYct/u3Ofuh5m9WqtBXbxA/MVUf6seyvFBlMC1OS2SI6PJeORgYohNH4ZNmPLBIqxuA4s/8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789294449; c=relaxed/simple; bh=OFMIvSrCNckt583wQZ5szz6EZ+YgIB8EOdg7dB6a+P0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iT9antZH8T2Sio8YWizcdoUbVH+aU6TsstHPdBY7XFwCGi5pNFkmX8mL4YFAasuHb26xMQYGB6dWNgd+BGDWmaY3PzMwvYSSjYwbpiX/MBX0pkFhF6nGX7n5ZhOu0GEkh7ysuBitIlO/jrxNmflKAaZqraO/DmCbfsL/jvffis0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sakamocchi.jp; spf=pass smtp.mailfrom=sakamocchi.jp; dkim=pass (2048-bit key) header.d=sakamocchi.jp header.i=@sakamocchi.jp header.b=4l3vXjGI; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=uy00HYRz; arc=none smtp.client-ip=103.168.172.147 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sakamocchi.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sakamocchi.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sakamocchi.jp header.i=@sakamocchi.jp header.b="4l3vXjGI"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="uy00HYRz" Received: from phl-compute-04.internal (phl-compute-04.internal [10.202.2.44]) by mailfout.phl.internal (Postfix) with ESMTP id D71B7EC01BE; Sun, 13 Sep 2026 06:14:05 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-04.internal (MEProxy); Sun, 13 Sep 2026 06:14:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sakamocchi.jp; h=cc:cc:content-transfer-encoding:content-type:date:date:from :from:in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm1; t=1789294445; x= 1789380845; bh=S5P06Ntp/PmxB7SbKz4waXQKUzWFyQ/AB81m7jyroSo=; b=4 l3vXjGIxRxefrx3uK2RTciA2CuHbleqIlYB8mPL3Z+16WnVe3EQAjGeJDGf4GUrJ McoFfDzvmQ6B+smLlxOyHjodC06SUKBYkSH4rFHXNdj3oyfqBwma4mjAZYphiEfh eLdr1BDJ+fyUoyraAzJkyCR4QXYummAN3pDsPaE63ToV00vvwcAqwhMFLZVsEB7E ne96lDz6aYdXDhhag1qWgaQJQCCwoLKJZy1laALurRFFRXXvIMC6mdsxI5YCLlFu Ij1R0BBMu4vsS1O3eoba83IDWTugmjYwUJZS3utfFCfPJ3nbjtTAKXkDjBhpdP4g NMcwPYg+shgX+wuO04/Vw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; t=1789294445; x=1789380845; bh=S 5P06Ntp/PmxB7SbKz4waXQKUzWFyQ/AB81m7jyroSo=; b=uy00HYRzVmvlt4l1q Ee0vNNldO05brJFdy+PWXpHl/oYLupsAyKwXGcXa44rQgssfszB++whyCIECbH3I qPmFKk2hrNoO5Tts81k2XpX3JfNC6QrswOdyY7bynl6lgIFEMJWJCTzijBcbGdwr oSLcO7Wfvx7Zjky8AwYShIqZWCHykUGbC6PUC8eOfEErN/XXTgiDn7wIUzhWJtmB PUMIzcfoFP90uEn07rIgfRTOAzp2C5lSmblNhuYvF4AQU1FZA286/vsYmFyyaCqH TmdXctyQb+B+zFvBx7H0S1w/9hHGDwaFH9TuOQTY7BEuuQk+vrWY4RKB9f/i44jO zw9rA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTG2/vy8D0TbaMZOOhOpGNWwOGVtNK7N3/Ngp133it+bhfjOwGH+I3f6TifYcbFCix d+aExY2U0cYC7fsd7F/Fw21a1yBHo7Ftaz2iRM2h3gfR5T7dXWR8r+smeEK8E28yK4bIYd ixLHKJoqK4EZNfSK1zEMlMFiFzl5g6Jx8QVFNKC3RJa2Os6FyyhShJlD7ix43o2qA7rLeH OUwVltsbra+ufek/Q756DmmV1U+01AJ3ER4g0bUtgnCg5AB941tbiwQ3ExpQ4AI1Dh8OQh oY6X9VjBXg0YPP0riUEHb6zHa1SaebZS3x/r/3AjkMhIWic2pIMC15GtHju9uGnUtrHKDg 5tFWzP6hZzz2NLtE3Fb9XJmRE1S7Xvx/In1M3c76QV6nbveG0rOyOHWTmthlyyRugpeVOX 5eiBrlgzNSup6KFu+mZLM6YSGVLDZ2FPl5b6+Q3jDQuQrbLsl+3UDzi5eBjYxy53LHhIN1 4omkOUsAiGtOH062J/dDWSmJXC9HdCKwJA0g+XPqO2SM4L9sk0NJ6S51FBli8jhrf7+uW4 56FuUJwvbF9XyTGJEc6uNBTgZsHTMCkHfOmxQLA58jOeDXwv1dD7mZZLex5BdKf7w3OaPh wwxWO0dV4HO4bnomh/mvxyI9XLdlfQRtj11zCc4Qj5D72kb7fBx4ZNH2uf7g X-ME-Proxy: Feedback-ID: ie8e14432:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 13 Sep 2026 06:14:04 -0400 (EDT) From: Takashi Sakamoto To: linux1394-devel@lists.sourceforge.net Cc: linux-kernel@vger.kernel.org Subject: [PATCH 4/5] firewire: ohci: refactor local response packet handling Date: Sun, 13 Sep 2026 19:13:55 +0900 Message-ID: <20260913101356.156420-5-o-takashi@sakamocchi.jp> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913101356.156420-1-o-takashi@sakamocchi.jp> References: <20260913101356.156420-1-o-takashi@sakamocchi.jp> 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" For an asynchronous transaction to one of the two CSR address ranges on the local node, the current implementation generates the packet data for the response subaction internally while handling the request subaction. The handling code is duplicated between the two ranges. Reduce the duplication by moving response handling to the callers. Signed-off-by: Takashi Sakamoto --- drivers/firewire/ohci.c | 54 ++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 28 deletions(-) diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c index ec069657ea8b..8a0aedf50a92 100644 --- a/drivers/firewire/ohci.c +++ b/drivers/firewire/ohci.c @@ -1455,10 +1455,9 @@ static int handle_at_packet(struct context *context, =20 static u32 get_cycle_time(struct fw_ohci *ohci); =20 -static void handle_local_rom(struct fw_ohci *ohci, - struct fw_packet *packet, u32 csr) +static void handle_local_rom(struct fw_ohci *ohci, struct fw_packet *packe= t, u32 csr, + struct fw_packet *response) { - struct fw_packet response; int tcode, rcode, length, i; void *payload =3D NULL; =20 @@ -1480,17 +1479,12 @@ static void handle_local_rom(struct fw_ohci *ohci, payload =3D (u8 *)ohci->config_rom + i; } =20 - fw_fill_response(&response, packet->header, rcode, payload, length); - - // Timestamping on behalf of the hardware. - response.timestamp =3D cycle_time_to_ohci_tstamp(get_cycle_time(ohci)); - fw_core_handle_response(&ohci->card, &response); + fw_fill_response(response, packet->header, rcode, payload, length); } =20 -static void handle_local_lock(struct fw_ohci *ohci, - struct fw_packet *packet, u32 csr) +static void handle_local_lock(struct fw_ohci *ohci, struct fw_packet *pack= et, u32 csr, + struct fw_packet *response) { - struct fw_packet response; int tcode, length, ext_tcode, sel, try; __be32 *payload, lock_old; u32 lock_arg, lock_data; @@ -1508,9 +1502,8 @@ static void handle_local_lock(struct fw_ohci *ohci, lock_arg =3D 0; lock_data =3D 0; } else { - fw_fill_response(&response, packet->header, - RCODE_TYPE_ERROR, NULL, 0); - goto out; + fw_fill_response(response, packet->header, RCODE_TYPE_ERROR, NULL, 0); + return; } =20 sel =3D (csr - CSR_BUS_MANAGER_ID) / 4; @@ -1522,19 +1515,13 @@ static void handle_local_lock(struct fw_ohci *ohci, if (reg_read(ohci, OHCI1394_CSRControl) & 0x80000000) { lock_old =3D cpu_to_be32(reg_read(ohci, OHCI1394_CSRData)); - fw_fill_response(&response, packet->header, - RCODE_COMPLETE, - &lock_old, sizeof(lock_old)); - goto out; + fw_fill_response(response, packet->header, RCODE_COMPLETE, &lock_old, + sizeof(lock_old)); + return; } =20 ohci_err(ohci, "swap not done (CSR lock timeout)\n"); - fw_fill_response(&response, packet->header, RCODE_BUSY, NULL, 0); - - out: - // Timestamping on behalf of the hardware. - response.timestamp =3D cycle_time_to_ohci_tstamp(get_cycle_time(ohci)); - fw_core_handle_response(&ohci->card, &response); + fw_fill_response(response, packet->header, RCODE_BUSY, NULL, 0); } =20 static bool in_config_rom_csr_registers(u64 offset) @@ -1560,10 +1547,21 @@ static void handle_local_request(struct at_context = *ctx, struct fw_packet *packe =20 u64 csr_offset =3D async_header_get_offset(packet->header) - CSR_REGISTER= _BASE; =20 - if (in_config_rom_csr_registers(csr_offset)) { - handle_local_rom(ohci, packet, csr_offset); - } else if (in_bus_management_csr_registers(csr_offset)) { - handle_local_lock(ohci, packet, csr_offset); + if (in_config_rom_csr_registers(csr_offset) || in_bus_management_csr_regi= sters(csr_offset)) { + struct fw_packet response; + + memset(&response, 0, sizeof(response)); + + if (in_bus_management_csr_registers(csr_offset)) + handle_local_lock(ohci, packet, csr_offset, &response); + else + handle_local_rom(ohci, packet, csr_offset, &response); + + // Timestamping on behalf of the hardware. + response.timestamp =3D cycle_time_to_ohci_tstamp(get_cycle_time(ohci)); + + // Finish the transaction immediately. + fw_core_handle_response(&ohci->card, &response); } else { if (ctx =3D=3D &ohci->at_request_ctx) fw_core_handle_request(&ohci->card, packet); --=20 2.53.0 From nobody Fri Sep 25 12:04:28 2026 Received: from fhigh-a7-smtp.messagingengine.com (fhigh-a7-smtp.messagingengine.com [103.168.172.158]) (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 E8D883E16A9 for ; Sun, 13 Sep 2026 10:14:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.158 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789294449; cv=none; b=stUWYv0W2ELR28yvqKDmZL5koP+BV8b+rb30Au1haQxI6a1dY3bdYtViUmSzF/JV3NGmAIQt4nyv5p/XP4D+NRF9s7WVK7XHdwNStFib0jbdlcUm2C/zxim9hhm3NgpJnbawXERVKTNUBUhSC3dVMGGVWjLfhKu0NA/5fj9+g2w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789294449; c=relaxed/simple; bh=nFq8l1G9kfc7LCrqcMv2OZ4h5mcafNV3F97OhUmMrKE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=P59ExbMpE+1pWmZ6u59iqWk07+ejaDBYwFS0+MqyFJhZZYrZf81pawanJIjXBojwD1k4N2sGrYhXZ9drYKDJE8bpKslJ4dyyfVds0M0WNsjz3lsFZJbsJe5YB7NAnizicyOBw+bcxdz017mHCx6N5sCylkdzfGdftuQa8t7t3Zg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sakamocchi.jp; spf=pass smtp.mailfrom=sakamocchi.jp; dkim=pass (2048-bit key) header.d=sakamocchi.jp header.i=@sakamocchi.jp header.b=pd3xGA8L; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=XTZv/W74; arc=none smtp.client-ip=103.168.172.158 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sakamocchi.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sakamocchi.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sakamocchi.jp header.i=@sakamocchi.jp header.b="pd3xGA8L"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="XTZv/W74" Received: from phl-compute-04.internal (phl-compute-04.internal [10.202.2.44]) by mailfhigh.phl.internal (Postfix) with ESMTP id 14C51140008F; Sun, 13 Sep 2026 06:14:07 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-04.internal (MEProxy); Sun, 13 Sep 2026 06:14:07 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sakamocchi.jp; h=cc:cc:content-transfer-encoding:content-type:date:date:from :from:in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm1; t=1789294447; x= 1789380847; bh=YYo67wZB/QxnbnXQL9vD7htB9ipv/tpYgs4Ntv7xZmo=; b=p d3xGA8L+kQZ39Fnz5lE7iSlLgfna5WhXGRkVA2ovEAFQiu4Dsp1YHFlSgcWJYkgI fOZQLsgunfOcpOQIXUdSpLp9OCzx7oWetH8JeYNtRddW/jN7+JnRY4sMaqWT2f7P 6zj0bN0nqDoIes3JWo7Fxg8a5osJx6/4Y6ULZ/fsk9uB67+oDsCJG7+QMITubO6N +AQCKz+rmONxiDN9a33PBSrUDyeu13FBsoAzeYR6ko8MKUJcqYpmdli/Z40PwK48 bSZuin+apdOb3dps8z5KR6GG9gxGgsEcSGR2tXG7NhHfhIELUOoI2qu0I31KLZ7f wVFWFRyis2I/JIi1UHU4Q== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; t=1789294447; x=1789380847; bh=Y Yo67wZB/QxnbnXQL9vD7htB9ipv/tpYgs4Ntv7xZmo=; b=XTZv/W74pKCbnk027 1roeufVsmkHa+Yg6vkO3IiCXUT4gXhOfEeWxXZbVnoRpKSSZdiKGQuvqSkIxMxQW 5tKATuKj3ZLwKr9VwJ4mSu+Aja7wCuCjLvsxqMjO3Kc316N0gZOEM3IlleJt8cnQ xK4OKNO2epFpmSADc20b8NuOJkuoXvsbfyaJbJHal1NrCi19O1Nl41Fkw5flCcXm i3wvWrM5aU2VciCaI1LDb/rsYAlITaldRrXK+UytGo6C8U3MZ7rT2i7On6y4GLc/ rYv3Us4nCdimVu0tV92bwOeSC98x57DK0kxMNEycF1f48GVxsoZ28tSZjMZ1+mp5 Y5gaw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTEQXMGwWqbWvsXCocDgzN5+n/eLn+00fTSurvqCLvHMCAsM1cPRsJWA+ooHxQvH1/ fwnoZBkskPXn6FuvrpVNEDBS09idfLijDPLEZyFcW6kHnzFJAFDRAk5Xvq9sLxt+qyYddQ pQ5WIM9VicXaa/Ii8X2ZZ+/EuIlfzgz56BURFaVT5cY9mToVWnzUXT2wZZLPbyE82R9n8v kHzSVXpO096VhR8TtCGA/fGyEFYr0PeULtyOL4sMAm5sIXWZhK/hLW/t1/2QhKz6X/HO4o KUbkRsRPw5vjJtc0WDBlkQSUcpwmQ05uuOloNWDABx0M+/to8oj4u5EvVrUv1EggIAMghy xXp8C2Rb2MEmlEVoUnQi7EJHCQdQwTat/YiiLJtQ3iSbXlYVd7HZhERS0ONXev18q2H2Y7 HBsXkKISWd82Q0qqtugo0oIc5YPaawL6KTKoPyV5Z0+BGNbhxGfBsynv9DQGHqjLgqJmrN a8jAhysP2KHZGRcAAQMJ0jjNkWvitUtocIEWG5nus83B9haB2JpCU4mMTBohOfyYnIOIoi QMXqs1yq0mWgt9kvzruJVozw1qd3JmT4qR4YqdMJ1/tzVn8uH6ureNC4NI4khyL48EljGN gwliUK8+gaYVlQyAKVR0Ml4ACCR4ii8Wj96XQPOKBHTnrZkt5ve36E8VgI4Q X-ME-Proxy: Feedback-ID: ie8e14432:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 13 Sep 2026 06:14:06 -0400 (EDT) From: Takashi Sakamoto To: linux1394-devel@lists.sourceforge.net Cc: linux-kernel@vger.kernel.org Subject: [PATCH 5/5] firewire: ohci: refactor handling of local AT request/response packets Date: Sun, 13 Sep 2026 19:13:56 +0900 Message-ID: <20260913101356.156420-6-o-takashi@sakamocchi.jp> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913101356.156420-1-o-takashi@sakamocchi.jp> References: <20260913101356.156420-1-o-takashi@sakamocchi.jp> 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" For an asynchronous transaction to one of the two CSR address ranges on the local node, the current implementation generates the packet data for the response subaction internally while handling the request subaction. Unlike transactions to other addresses, there is no need to submit the new packet for the response subaction. The current implementation handles both subactions in a single helper function with conditional statements. This makes it difficult to see why the two subactions should be handled differently. Split the helper function into two helper functions, one for the request subaction and the other for the response subaction. Signed-off-by: Takashi Sakamoto --- drivers/firewire/ohci.c | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c index 8a0aedf50a92..bd3e01b2f450 100644 --- a/drivers/firewire/ohci.c +++ b/drivers/firewire/ohci.c @@ -1536,14 +1536,11 @@ static bool in_bus_management_csr_registers(u64 off= set) return in_range(offset, CSR_BUS_MANAGER_ID, 0x22c - CSR_BUS_MANAGER_ID); } =20 -static void handle_local_request(struct at_context *ctx, struct fw_packet = *packet) +static void handle_local_at_request_packet(struct fw_ohci *ohci, struct fw= _packet *packet) { - struct fw_ohci *ohci =3D ctx->context.ohci; - - if (ctx =3D=3D &ohci->at_request_ctx) { - packet->ack =3D ACK_PENDING; - packet->callback(packet, &ohci->card, packet->ack); - } + // Emulate split transaction. + packet->ack =3D ACK_PENDING; + packet->callback(packet, &ohci->card, packet->ack); =20 u64 csr_offset =3D async_header_get_offset(packet->header) - CSR_REGISTER= _BASE; =20 @@ -1563,16 +1560,23 @@ static void handle_local_request(struct at_context = *ctx, struct fw_packet *packe // Finish the transaction immediately. fw_core_handle_response(&ohci->card, &response); } else { - if (ctx =3D=3D &ohci->at_request_ctx) - fw_core_handle_request(&ohci->card, packet); - else - fw_core_handle_response(&ohci->card, packet); + fw_core_handle_request(&ohci->card, packet); } +} =20 - if (ctx =3D=3D &ohci->at_response_ctx) { - packet->ack =3D ACK_COMPLETE; - packet->callback(packet, &ohci->card, packet->ack); - } +static void handle_local_at_response_packet(struct fw_ohci *ohci, struct f= w_packet *packet) +{ + u64 csr_offset =3D async_header_get_offset(packet->header) - CSR_REGISTER= _BASE; + + // The transaction is already finished by handle_local_at_request_packet(= ). + if (WARN_ON(in_config_rom_csr_registers(csr_offset)) || + WARN_ON(in_bus_management_csr_registers(csr_offset))) + return; + + fw_core_handle_response(&ohci->card, packet); + + packet->ack =3D ACK_COMPLETE; + packet->callback(packet, &ohci->card, packet->ack); } =20 static bool destination_is_local(const struct fw_packet *packet, const str= uct fw_ohci *ohci) @@ -1598,7 +1602,10 @@ static void at_context_transmit(struct at_context *c= tx, struct fw_packet *packet // Timestamping on behalf of the hardware. packet->timestamp =3D cycle_time_to_ohci_tstamp(get_cycle_time(ohci)); =20 - handle_local_request(ctx, packet); + if (ctx =3D=3D &ohci->at_request_ctx) + handle_local_at_request_packet(ohci, packet); + else + handle_local_at_response_packet(ohci, packet); return; } =20 --=20 2.53.0