Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp931065ybt; Wed, 17 Jun 2020 18:13:34 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyjrYXU6in8CxE/aVP/s7fH6UXCXbewBwGYzEbeCEaTXzFKqAqXGS0g5BrMiQ+VPm/wtUAN X-Received: by 2002:a17:906:16d3:: with SMTP id t19mr1638997ejd.297.1592442814012; Wed, 17 Jun 2020 18:13:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592442814; cv=none; d=google.com; s=arc-20160816; b=nni/Q0b1PC0moR2oAR0UL7U5zeT7vxbgrlITU8gazesYygeev4TxgbaWvJe6+QkTEk GXZlqfChrNBkor5QSyt7TBHlsjfzEdIomPtSquEViWc6LqEBWPIgGJk/c2ECmvHoyadM g0SqJ3ovdBGVr0OzltYK3cjqGfFj+wWrJRpsNMdEUJ2CzK59n21Mn654RLweHByeclfe PryHERacWBr4ZsoKPqYpbU8R3YTQ20uYQ173nZOggYJQy5x+uabBsfglGnGb3CEuuQS6 ZhFIlspPAH9ajDnsDSP39J489G3iP9B83luBf4lnidz4wULrYohtdooOUKhEvhoTJW09 i+jA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=JEuC2CYhIE53tttYiOcNXdHtvEq0v3qL4Lwf/cpI3AY=; b=MrkwwukpqA1CBG7sAO1xjbuM0couTeCXo5SJte6+rAGhIthi1gCpsyRZPRiQ5AeXjd zTKSTMpT9x/rXTuoLjzDOrNuxnRIHCVQI0JYqEcUkeWoEDYDGLOuWWJU/55yomkR4PlA pAWy9X4I02J9wmxRTfyKbRMR3ffjq7qOwQUXiphK0DAUC6Bw+w2+QgYWXYvtxr6Kcjt3 gFgTFhjZplVhc70CpCJ6QBNrGGvzXZ2zHSPCWBRjsx8uWt2jtBeclafyoxE/SwFGUa1V qdqmrI9M22XBqdlRqilReintJRA6mKypNua3YuytbD9gaXdVXmsjkbjC7Dv4P/98V1IE O1Eg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=wVjbK6OX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id s21si879376ejz.9.2020.06.17.18.13.12; Wed, 17 Jun 2020 18:13:33 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=wVjbK6OX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727082AbgFRBKS (ORCPT + 99 others); Wed, 17 Jun 2020 21:10:18 -0400 Received: from mail.kernel.org ([198.145.29.99]:37310 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728436AbgFRBKP (ORCPT ); Wed, 17 Jun 2020 21:10:15 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id DBE7C21D92; Thu, 18 Jun 2020 01:10:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592442614; bh=Jalkbzk064ChzNnKiFq6hlj29dMf2nKAQl+Hxl4t3QY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=wVjbK6OX/KKIhzNOhtEhEL52Fa3DSHd/ggzX0nqyRM42Din3pmdyLBpLFaXS8Zvmp VKE0kq0xCcsuo70A6PnkCgvtOcJFYcbh2ab6PI1g73IfKsuAX/kN7AACF6XglZjRUS HVGdwV7uGXRY9Ut9ArvtOpKx05jj9D87rGYququw= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Logan Gunthorpe , Allen Hubbe , Alexander Fomichev , Jon Mason , Sasha Levin , linux-ntb@googlegroups.com Subject: [PATCH AUTOSEL 5.7 095/388] NTB: ntb_pingpong: Choose doorbells based on port number Date: Wed, 17 Jun 2020 21:03:12 -0400 Message-Id: <20200618010805.600873-95-sashal@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200618010805.600873-1-sashal@kernel.org> References: <20200618010805.600873-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Logan Gunthorpe [ Upstream commit ca93c45755da98302c93abdd788fc09113baf9e0 ] This commit fixes pingpong support for existing drivers that do not implement ntb_default_port_number() and ntb_default_peer_port_number(). This is required for hardware (like the crosslink topology of switchtec) which cannot assign reasonable port numbers to each port due to its perfect symmetry. Instead of picking the doorbell to use based on the the index of the peer, we use the peer's port number. This is a bit clearer and easier to understand. Fixes: c7aeb0afdcc2 ("NTB: ntb_pp: Add full multi-port NTB API support") Signed-off-by: Logan Gunthorpe Acked-by: Allen Hubbe Tested-by: Alexander Fomichev Signed-off-by: Jon Mason Signed-off-by: Sasha Levin --- drivers/ntb/test/ntb_pingpong.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/ntb/test/ntb_pingpong.c b/drivers/ntb/test/ntb_pingpong.c index 04dd46647db3..2164e8492772 100644 --- a/drivers/ntb/test/ntb_pingpong.c +++ b/drivers/ntb/test/ntb_pingpong.c @@ -121,15 +121,14 @@ static int pp_find_next_peer(struct pp_ctx *pp) link = ntb_link_is_up(pp->ntb, NULL, NULL); /* Find next available peer */ - if (link & pp->nmask) { + if (link & pp->nmask) pidx = __ffs64(link & pp->nmask); - out_db = BIT_ULL(pidx + 1); - } else if (link & pp->pmask) { + else if (link & pp->pmask) pidx = __ffs64(link & pp->pmask); - out_db = BIT_ULL(pidx); - } else { + else return -ENODEV; - } + + out_db = BIT_ULL(ntb_peer_port_number(pp->ntb, pidx)); spin_lock(&pp->lock); pp->out_pidx = pidx; @@ -303,7 +302,7 @@ static void pp_init_flds(struct pp_ctx *pp) break; } - pp->in_db = BIT_ULL(pidx); + pp->in_db = BIT_ULL(lport); pp->pmask = GENMASK_ULL(pidx, 0) >> 1; pp->nmask = GENMASK_ULL(pcnt - 1, pidx); @@ -432,4 +431,3 @@ static void __exit pp_exit(void) debugfs_remove_recursive(pp_dbgfs_topdir); } module_exit(pp_exit); - -- 2.25.1