public inbox for linux-rdma@vger.kernel.org
 help / color / mirror / Atom feed
From: Leon Romanovsky <leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
To: dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Steve Wise <swise-ut6Up61K2wZBDgjK7y7TUQ@public.gmane.org>,
	Mike Marciniszyn
	<mike.marciniszyn-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	Dennis Dalessandro
	<dennis.dalessandro-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	Lijun Ou <oulijun-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>,
	"Wei Hu(Xavier)"
	<xavier.huwei-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>,
	Faisal Latif
	<faisal.latif-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	Yishai Hadas <yishaih-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
	Selvin Xavier
	<selvin.xavier-1wcpHE2jlwO1Z/+hSey0Gg@public.gmane.org>,
	Devesh Sharma
	<devesh.sharma-1wcpHE2jlwO1Z/+hSey0Gg@public.gmane.org>,
	Mitesh Ahuja
	<mitesh.ahuja-1wcpHE2jlwO1Z/+hSey0Gg@public.gmane.org>,
	Christian Benvenuti
	<benve-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org>,
	Dave Goodell <dgoodell-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org>,
	Moni Shoua <monis-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
	Or Gerlitz <ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Subject: [PATCH rdma-next 06/10] IB/core: Enable to query QP types supported by IB device on a port
Date: Sun, 27 Nov 2016 16:51:32 +0200	[thread overview]
Message-ID: <1480258296-27032-7-git-send-email-leon@kernel.org> (raw)
In-Reply-To: <1480258296-27032-1-git-send-email-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>

From: Or Gerlitz <ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>

Add qp_type_cap port attribute which is a bit field representation
of the ib_qp_type enum. This will allow applications to query what QP
types are supported by an IB device instance on a specific port.

The qp_type_cap port attribute is set by the core according to the
protocol supported for the device port. This holds for all the
providers with the exception of two RoCE drivers that don't implement
UD and UC. To handle that, they (hns and qedr) are patched to remove
these QPs from what's the core has set for them as supported.

Signed-off-by: Or Gerlitz <ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Reviewed-by: Matan Barak <matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Signed-off-by: Leon Romanovsky <leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
---
 drivers/infiniband/core/device.c          | 28 ++++++++++++++++++++++++++++
 drivers/infiniband/hw/hns/hns_roce_main.c |  3 +++
 drivers/infiniband/hw/qedr/verbs.c        |  2 ++
 include/rdma/ib_verbs.h                   |  1 +
 4 files changed, 34 insertions(+)

diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c
index 760ef60..f7abde2 100644
--- a/drivers/infiniband/core/device.c
+++ b/drivers/infiniband/core/device.c
@@ -646,6 +646,31 @@ void ib_dispatch_event(struct ib_event *event)
 }
 EXPORT_SYMBOL(ib_dispatch_event);
 
+static void get_port_qp_types(const struct ib_device *device, u8 port_num,
+			      struct ib_port_attr *port_attr)
+{
+	if (rdma_cap_ib_smi(device, port_num))
+		port_attr->qp_type_cap |= BIT(IB_QPT_SMI);
+
+	if (rdma_cap_ib_cm(device, port_num))
+		port_attr->qp_type_cap |= BIT(IB_QPT_GSI);
+
+	if (rdma_ib_or_roce(device, port_num)) {
+		port_attr->qp_type_cap |= (BIT(IB_QPT_RC) | BIT(IB_QPT_UD) | BIT(IB_QPT_UC));
+		if (device->attrs.device_cap_flags & IB_DEVICE_XRC)
+			port_attr->qp_type_cap |= (BIT(IB_QPT_XRC_INI) | BIT(IB_QPT_XRC_TGT));
+	}
+
+	if (rdma_protocol_iwarp(device, port_num))
+		port_attr->qp_type_cap |= BIT(IB_QPT_RC);
+
+	if (rdma_protocol_raw_packet(device, port_num))
+		port_attr->qp_type_cap |= BIT(IB_QPT_RAW_PACKET);
+
+	if (rdma_protocol_usnic(device, port_num))
+		port_attr->qp_type_cap |= BIT(IB_QPT_UD);
+}
+
 /**
  * ib_query_port - Query IB port attributes
  * @device:Device to query
@@ -666,6 +691,9 @@ int ib_query_port(struct ib_device *device,
 		return -EINVAL;
 
 	memset(port_attr, 0, sizeof(*port_attr));
+
+	get_port_qp_types(device, port_num, port_attr);
+
 	err = device->query_port(device, port_num, port_attr);
 	if (err || port_attr->subnet_prefix)
 		return err;
diff --git a/drivers/infiniband/hw/hns/hns_roce_main.c b/drivers/infiniband/hw/hns/hns_roce_main.c
index c6b5779..22de534 100644
--- a/drivers/infiniband/hw/hns/hns_roce_main.c
+++ b/drivers/infiniband/hw/hns/hns_roce_main.c
@@ -430,6 +430,9 @@ static int hns_roce_query_port(struct ib_device *ib_dev, u8 port_num,
 			IB_PORT_ACTIVE : IB_PORT_DOWN;
 	props->phys_state = (props->state == IB_PORT_ACTIVE) ? 5 : 3;
 
+	/* mark that UD and UC aren't supported */
+	props->qp_type_cap &= ~(BIT(IB_QPT_UD) | BIT(IB_QPT_UC));
+
 	spin_unlock_irqrestore(&hr_dev->iboe.lock, flags);
 
 	return 0;
diff --git a/drivers/infiniband/hw/qedr/verbs.c b/drivers/infiniband/hw/qedr/verbs.c
index 53207ff..33d0219 100644
--- a/drivers/infiniband/hw/qedr/verbs.c
+++ b/drivers/infiniband/hw/qedr/verbs.c
@@ -263,6 +263,8 @@ int qedr_query_port(struct ib_device *ibdev, u8 port, struct ib_port_attr *attr)
 	attr->max_msg_sz = rdma_port->max_msg_size;
 	attr->max_vl_num = 4;
 
+	/* mark that UD and UC aren't supported */
+	attr->qp_type_cap &= ~(BIT(IB_QPT_UD) | BIT(IB_QPT_UC));
 	return 0;
 }
 
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index 485b725..0b839e4 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -536,6 +536,7 @@ struct ib_port_attr {
 	u8			active_speed;
 	u8                      phys_state;
 	bool			grh_required;
+	u16			qp_type_cap;
 };
 
 enum ib_device_modify_flags {
-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2016-11-27 14:51 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-27 14:51 [PATCH rdma-next 00/10] Support RAW Ethernet when RoCE is disabled Leon Romanovsky
     [not found] ` <1480258296-27032-1-git-send-email-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2016-11-27 14:51   ` [PATCH rdma-next 01/10] IB/core: Add raw packet protocol Leon Romanovsky
     [not found]     ` <1480258296-27032-2-git-send-email-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2016-11-28 17:00       ` Jason Gunthorpe
     [not found]         ` <20161128170056.GC28381-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-11-28 17:08           ` Steve Wise
2016-11-30  2:07             ` Doug Ledford
     [not found]               ` <cfdf28c6-4715-28d4-7da6-453fb6794c29-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-11-30  2:33                 ` Tom Talpey
     [not found]                   ` <5927e04b-42ec-52c1-88a3-456cc4409334-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org>
2016-11-30 16:18                     ` Doug Ledford
2016-11-30 16:30                     ` Liran Liss
     [not found]                       ` <HE1PR0501MB28124286F8D902C49596EF85B18C0-692Kmc8YnlIVrnpjwTCbp8DSnupUy6xnnBOFsp37pqbUKgpGm//BTAC/G2K4zDHf@public.gmane.org>
2016-11-30 16:39                         ` Jason Gunthorpe
     [not found]                           ` <20161130163949.GC24639-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-11-30 16:59                             ` Or Gerlitz
2016-11-30 17:01                             ` Liran Liss
     [not found]                               ` <HE1PR0501MB28128CDB112558C5980CB638B18C0-692Kmc8YnlIVrnpjwTCbp8DSnupUy6xnnBOFsp37pqbUKgpGm//BTAC/G2K4zDHf@public.gmane.org>
2016-11-30 17:08                                 ` Jason Gunthorpe
     [not found]                                   ` <20161130170830.GA17512-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-11-30 17:25                                     ` Hefty, Sean
     [not found]                                       ` <1828884A29C6694DAF28B7E6B8A82373AB0BA190-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-11-30 17:27                                         ` Steve Wise
2016-11-30 17:30                                           ` Hefty, Sean
     [not found]                                             ` <1828884A29C6694DAF28B7E6B8A82373AB0BA1B7-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-12-01 13:06                                               ` Tom Talpey
     [not found]                                                 ` <d4bab4a9-aa32-282f-b501-ecfc00b0be0f-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org>
2016-12-01 19:07                                                   ` Hefty, Sean
     [not found]                                                     ` <1828884A29C6694DAF28B7E6B8A82373AB0BA68E-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-12-04 20:38                                                       ` Liran Liss
     [not found]                                                         ` <HE1PR0501MB2812393A0A690DEC1E03DE3FB1800-692Kmc8YnlIVrnpjwTCbp8DSnupUy6xnnBOFsp37pqbUKgpGm//BTAC/G2K4zDHf@public.gmane.org>
2016-12-05 17:10                                                           ` Jason Gunthorpe
     [not found]                                                             ` <20161205171013.GA27784-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-12-05 20:14                                                               ` Liran Liss
     [not found]                                                                 ` <HE1PR0501MB2812A66403A8C19AF83742EDB1830-692Kmc8YnlIVrnpjwTCbp8DSnupUy6xnnBOFsp37pqbUKgpGm//BTAC/G2K4zDHf@public.gmane.org>
2016-12-06 21:26                                                                   ` Or Gerlitz
     [not found]                                                                     ` <CAJ3xEMhYs0jtXYDqAXEw17Fk4padG903J3enL+uNPg_fNk-9Uw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-12-06 21:39                                                                       ` Jason Gunthorpe
     [not found]                                                                         ` <20161206213938.GC647-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-12-06 22:13                                                                           ` Hefty, Sean
     [not found]                                                                             ` <1828884A29C6694DAF28B7E6B8A82373AB0BBEC7-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-12-07 22:06                                                                               ` Doug Ledford
     [not found]                                                                                 ` <d7bca935-32cb-51ee-beea-724e1a5b748a-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-12-07 22:40                                                                                   ` Jason Gunthorpe
     [not found]                                                                                     ` <20161207224044.GA23093-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-12-08  9:29                                                                                       ` Liran Liss
     [not found]                                                                                         ` <HE1PR0501MB28127FEFC67D9F71BF14BB6CB1840-692Kmc8YnlIVrnpjwTCbp8DSnupUy6xnnBOFsp37pqbUKgpGm//BTAC/G2K4zDHf@public.gmane.org>
2016-12-08 17:41                                                                                           ` Jason Gunthorpe
2016-11-30 17:32                                         ` Jason Gunthorpe
     [not found]                                           ` <20161130173211.GA9067-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-11-30 18:17                                             ` Hefty, Sean
     [not found]                                               ` <1828884A29C6694DAF28B7E6B8A82373AB0BA20F-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-11-30 18:34                                                 ` Jason Gunthorpe
     [not found]                                                   ` <20161130183436.GA10057-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-11-30 18:46                                                     ` Hefty, Sean
     [not found]                                                       ` <1828884A29C6694DAF28B7E6B8A82373AB0BA24D-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-11-30 18:58                                                         ` Jason Gunthorpe
2016-11-30 16:29                 ` Hefty, Sean
2016-11-30 16:36                 ` Jason Gunthorpe
     [not found]                   ` <20161130163621.GB24639-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-11-30 19:35                     ` Doug Ledford
     [not found]                       ` <0f905c52-b167-4b7d-4fd0-091056997e47-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-11-30 21:12                         ` Hefty, Sean
2016-11-28 20:57           ` Or Gerlitz
     [not found]             ` <CAJ3xEMiv6HCu-9fi12XtafxYWu-+gNPMbnfb-A4-+FrgR6KZNA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-11-28 22:25               ` Jason Gunthorpe
     [not found]                 ` <20161128222559.GB744-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-11-29  6:35                   ` Or Gerlitz
     [not found]                     ` <CAJ3xEMiC3UDujgSL5fwP7ee1=OjhorZ2aeB1k+ptGb9GWaUVkg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-11-29 16:19                       ` Jason Gunthorpe
2016-11-27 14:51   ` [PATCH rdma-next 02/10] IB/mlx5: Support " Leon Romanovsky
2016-11-27 14:51   ` [PATCH rdma-next 03/10] IB/mlx4: " Leon Romanovsky
2016-11-27 14:51   ` [PATCH rdma-next 04/10] IB: Add protocol for USNIC Leon Romanovsky
2016-11-27 14:51   ` [PATCH rdma-next 05/10] IB: Query port through the core instead of directly calling the driver handler Leon Romanovsky
2016-11-27 14:51   ` Leon Romanovsky [this message]
     [not found]     ` <1480258296-27032-7-git-send-email-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2016-12-16 20:11       ` [PATCH rdma-next 06/10] IB/core: Enable to query QP types supported by IB device on a port ira.weiny
     [not found]         ` <20161216201158.GE12582-W4f6Xiosr+yv7QzWx2u06xL4W9x8LtSr@public.gmane.org>
2016-12-18  7:37           ` Leon Romanovsky
2016-12-18 21:07           ` Or Gerlitz
2016-11-27 14:51   ` [PATCH rdma-next 07/10] IB/uverbs: Propagate supported QP types to user-space Leon Romanovsky
2016-11-27 14:51   ` [PATCH rdma-next 08/10] IB/mlx5: Refactor registration to netdev notifier Leon Romanovsky
2016-11-27 14:51   ` [PATCH rdma-next 09/10] IB/mlx5: Rename RoCE related helpers to reflect being Eth ones Leon Romanovsky
2016-11-27 14:51   ` [PATCH rdma-next 10/10] IB/mlx5: Support RAW Ethernet when RoCE is disabled Leon Romanovsky
2016-12-14 19:06   ` [PATCH rdma-next 00/10] " Doug Ledford

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1480258296-27032-7-git-send-email-leon@kernel.org \
    --to=leon-dgejt+ai2ygdnm+yrofe0a@public.gmane.org \
    --cc=benve-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org \
    --cc=dennis.dalessandro-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=devesh.sharma-1wcpHE2jlwO1Z/+hSey0Gg@public.gmane.org \
    --cc=dgoodell-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org \
    --cc=dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=faisal.latif-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=mike.marciniszyn-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=mitesh.ahuja-1wcpHE2jlwO1Z/+hSey0Gg@public.gmane.org \
    --cc=monis-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
    --cc=ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
    --cc=oulijun-hv44wF8Li93QT0dZR+AlfA@public.gmane.org \
    --cc=selvin.xavier-1wcpHE2jlwO1Z/+hSey0Gg@public.gmane.org \
    --cc=swise-ut6Up61K2wZBDgjK7y7TUQ@public.gmane.org \
    --cc=xavier.huwei-hv44wF8Li93QT0dZR+AlfA@public.gmane.org \
    --cc=yishaih-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox