All of lore.kernel.org
 help / color / mirror / Atom feed
From: Doug Ledford <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org
Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [RFC PATCH 1/5] IB/core: Add Core Capability flags to ib_device
Date: Mon, 04 May 2015 10:41:32 -0400	[thread overview]
Message-ID: <1430750492.2407.9.camel@redhat.com> (raw)
In-Reply-To: <1430720099-32512-2-git-send-email-ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>

[-- Attachment #1: Type: text/plain, Size: 4864 bytes --]

On Mon, 2015-05-04 at 02:14 -0400, ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org wrote:
> From: Ira Weiny <ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
> 
> Add Core capability flags to each port attribute and read those into ib_device
> upon registration for each port.
> 
> Signed-off-by: Ira Weiny <ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
> ---
>  drivers/infiniband/core/device.c |   41 ++++++++++++++++++++++++++++++++++++++
>  include/rdma/ib_verbs.h          |   22 ++++++++++++++++++++
>  2 files changed, 63 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c
> index b360350..6a37255 100644
> --- a/drivers/infiniband/core/device.c
> +++ b/drivers/infiniband/core/device.c
> @@ -262,6 +262,37 @@ out:
>  	return ret;
>  }
>  
> +static int read_core_cap_flags(struct ib_device *device)
> +{
> +	struct ib_port_attr tprops;
> +	int num_ports, ret = -ENOMEM;
> +	u8 port_index;
> +
> +	num_ports = device->phys_port_cnt;
> +
> +	device->core_cap_flags = kzalloc(sizeof(*device->core_cap_flags)
> +						* (num_ports+1),
> +					 GFP_KERNEL);
> +	if (!device->core_cap_flags)
> +		return -ENOMEM;
> +
> +	for (port_index = 0; port_index <= num_ports; ++port_index) {
> +		if ((port_index == 0 && device->node_type != RDMA_NODE_IB_SWITCH))
> +			continue;
> +
> +		ret = ib_query_port(device, port_index, &tprops);
> +		if (ret)
> +			goto err;
> +
> +		device->core_cap_flags[port_index] = tprops.core_cap_flags;
> +	}
> +
> +	return 0;
> +err:
> +	kfree(device->core_cap_flags);
> +	return ret;
> +}
> +
>  /**
>   * ib_register_device - Register an IB device with IB core
>   * @device:Device to register
> @@ -302,12 +333,21 @@ int ib_register_device(struct ib_device *device,
>  		goto out;
>  	}
>  
> +	ret = read_core_cap_flags(device);
> +	if (ret) {
> +		dev_err(&device->dev, "Couldn't create Core Capability flags\n");
> +		kfree(device->gid_tbl_len);
> +		kfree(device->pkey_tbl_len);
> +		goto out;
> +	}
> +
>  	ret = ib_device_register_sysfs(device, port_callback);
>  	if (ret) {
>  		printk(KERN_WARNING "Couldn't register device %s with driver model\n",
>  		       device->name);
>  		kfree(device->gid_tbl_len);
>  		kfree(device->pkey_tbl_len);
> +		kfree(device->core_cap_flags);
>  		goto out;
>  	}
>  
> @@ -351,6 +391,7 @@ void ib_unregister_device(struct ib_device *device)
>  
>  	kfree(device->gid_tbl_len);
>  	kfree(device->pkey_tbl_len);
> +	kfree(device->core_cap_flags);
>  
>  	mutex_unlock(&device_mutex);
>  
> diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
> index c724114..4de2758 100644
> --- a/include/rdma/ib_verbs.h
> +++ b/include/rdma/ib_verbs.h
> @@ -353,11 +353,32 @@ union rdma_protocol_stats {
>  	struct iw_protocol_stats	iw;
>  };
>  
> +/* Define bits for the various functionality this port needs to be supported by
> + * the core.
> + */
> +/* Management                           0x00000000FFFFFFFF */
> +#define RDMA_CORE_CAP_IB_MAD		0x0000000000000001ULL
> +#define RDMA_CORE_CAP_IB_SMI		0x0000000000000002ULL
> +#define RDMA_CORE_CAP_IB_CM		0x0000000000000004ULL
> +#define RDMA_CORE_CAP_IW_CM		0x0000000000000008ULL
> +#define RDMA_CORE_CAP_IB_SA		0x0000000000000010ULL
> +
> +/* Address format                       0x0000FFFF00000000 */
> +#define RDMA_CORE_CAP_AF_IB		0x0000000100000000ULL
> +#define RDMA_CORE_CAP_ETH_AH		0x0000000200000000ULL
> +
> +/* Protocol                             0xFFFF000000000000 */
> +#define RDMA_CORE_CAP_PROT_IB		0x0001000000000000ULL
> +#define RDMA_CORE_CAP_PROT_IBOE		0x0002000000000000ULL
> +#define RDMA_CORE_CAP_PROT_IWARP	0x0004000000000000ULL
> +#define RDMA_CORE_CAP_PROT_USNIC_UDP	0x0008000000000000ULL

In accordance with what we've been talking about, drop IBOE for ROCE.

Drop the UDP off of USNIC, then define a bit for CAP_PROT_UDP_ENCAP.
USNIC will be just USNIC, USNIC_UDP will be USNIC | UDP_ENCAP, ROCE v1
will be ROCE, and ROCEv2 will be ROCE | UDP_ENCAP.

> +
>  struct ib_port_attr {
>  	enum ib_port_state	state;
>  	enum ib_mtu		max_mtu;
>  	enum ib_mtu		active_mtu;
>  	int			gid_tbl_len;
> +	u64                     core_cap_flags;

I think u32 should be enough here, and will help keep our footprint
smaller.

>  	u32			port_cap_flags;
>  	u32			max_msg_sz;
>  	u32			bad_pkey_cntr;
> @@ -1684,6 +1705,7 @@ struct ib_device {
>  	u32			     local_dma_lkey;
>  	u8                           node_type;
>  	u8                           phys_port_cnt;
> +	u64                         *core_cap_flags; /* Per port core capability flags */

Ditto.

>  };
>  
>  struct ib_client {


-- 
Doug Ledford <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
              GPG KeyID: 0E572FDD



[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

  parent reply	other threads:[~2015-05-04 14:41 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-04  6:14 [RFC PATCH 0/5] Add Core Capability Bits to use in Management helpers ira.weiny-ral2JQCrhuEAvxtiuMwx3w
     [not found] ` <1430720099-32512-1-git-send-email-ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-05-04  6:14   ` [RFC PATCH 1/5] IB/core: Add Core Capability flags to ib_device ira.weiny-ral2JQCrhuEAvxtiuMwx3w
     [not found]     ` <1430720099-32512-2-git-send-email-ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-05-04 14:41       ` Doug Ledford [this message]
     [not found]         ` <1430750492.2407.9.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-05-04 16:40           ` Hefty, Sean
     [not found]             ` <1828884A29C6694DAF28B7E6B8A82373A8FCA17C-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-05-04 17:38               ` Doug Ledford
     [not found]                 ` <1430761111.2407.85.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-05-04 18:26                   ` Hefty, Sean
     [not found]                     ` <1828884A29C6694DAF28B7E6B8A82373A8FCA2F1-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-05-04 19:40                       ` Doug Ledford
     [not found]                         ` <1430768425.2407.143.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-05-04 21:07                           ` Jason Gunthorpe
     [not found]                             ` <20150504210741.GA20839-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-05-05 19:59                               ` Liran Liss
2015-05-04 20:21                       ` Dave Goodell (dgoodell)
2015-05-05 19:51                       ` Liran Liss
     [not found]                         ` <HE1PR05MB1418DF0669B6E6CABE1D9F1EB1D10-eBadYZ65MZ87O8BmmlM1zNqRiQSDpxhJvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2015-05-05 20:22                           ` Dave Goodell (dgoodell)
     [not found]                             ` <20BA79B2-9DA5-49B3-8455-BD4021CB882C-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org>
2015-05-05 20:29                               ` Hefty, Sean
     [not found]                                 ` <1828884A29C6694DAF28B7E6B8A82373A8FCAEFD-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-05-06 14:25                                   ` Liran Liss
2015-05-09  3:32                               ` Doug Ledford
     [not found]                                 ` <1431142328.2407.488.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-05-11 22:19                                   ` Dave Goodell (dgoodell)
     [not found]                                     ` <CCC397F5-31B6-4A35-94E0-7EAAE6C4803F-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org>
2015-05-11 22:39                                       ` Jason Gunthorpe
     [not found]                                         ` <20150511223930.GA15628-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-05-12 17:41                                           ` Dave Goodell (dgoodell)
     [not found]                                             ` <DC760F33-F704-4763-AEA3-6DE9016D0687-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org>
2015-05-12 18:08                                               ` Jason Gunthorpe
2015-05-11  6:42                               ` ira.weiny
     [not found]                                 ` <20150511064232.GA3042-W4f6Xiosr+yv7QzWx2u06xL4W9x8LtSr@public.gmane.org>
2015-05-11 22:26                                   ` Dave Goodell (dgoodell)
     [not found]                                     ` <D72B89F6-B333-4DC2-9BA7-CB45EBC31843-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org>
2015-05-12  2:13                                       ` Weiny, Ira
     [not found]                                         ` <2807E5FD2F6FDA4886F6618EAC48510E1107C20E-8k97q/ur5Z2krb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-05-12 17:56                                           ` Dave Goodell (dgoodell)
2015-05-05 19:27               ` Liran Liss
     [not found]                 ` <HE1PR05MB1418E58A6EB92D92B78C76A0B1D10-eBadYZ65MZ87O8BmmlM1zNqRiQSDpxhJvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2015-05-08 18:56                   ` Doug Ledford
     [not found]                     ` <1431111412.2407.463.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-05-08 20:06                       ` Hefty, Sean
     [not found]                         ` <1828884A29C6694DAF28B7E6B8A82373A8FCD719-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-05-08 20:30                           ` Doug Ledford
     [not found]                             ` <1431117051.2407.468.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-05-08 20:56                               ` Hefty, Sean
     [not found]                                 ` <1828884A29C6694DAF28B7E6B8A82373A8FCD78C-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-05-08 21:48                                   ` Jason Gunthorpe
     [not found]                                     ` <20150508214855.GA3917-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-05-13 20:41                                       ` Liran Liss
2015-05-04 16:42       ` Hefty, Sean
     [not found]         ` <1828884A29C6694DAF28B7E6B8A82373A8FCA192-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-05-04 16:48           ` Doug Ledford
     [not found]             ` <1430758097.2407.59.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-05-04 16:53               ` Hefty, Sean
     [not found]                 ` <1828884A29C6694DAF28B7E6B8A82373A8FCA1D9-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-05-04 16:56                   ` Doug Ledford
     [not found]                     ` <1430758566.2407.62.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-05-04 17:25                       ` Hefty, Sean
     [not found]                         ` <1828884A29C6694DAF28B7E6B8A82373A8FCA217-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-05-04 17:31                           ` Weiny, Ira
     [not found]                             ` <2807E5FD2F6FDA4886F6618EAC48510E11069818-8k97q/ur5Z2krb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-05-04 17:34                               ` Hefty, Sean
2015-05-04 18:36       ` Jason Gunthorpe
     [not found]         ` <20150504183657.GA20586-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-05-04 22:32           ` ira.weiny
     [not found]             ` <20150504223234.GB10115-W4f6Xiosr+yv7QzWx2u06xL4W9x8LtSr@public.gmane.org>
2015-05-04 23:16               ` ira.weiny
     [not found]                 ` <20150504231622.GE10115-W4f6Xiosr+yv7QzWx2u06xL4W9x8LtSr@public.gmane.org>
2015-05-04 23:52                   ` Jason Gunthorpe
2015-05-04  6:14   ` [RFC PATCH 2/5] IB/core: Replace query_protocol callback with Core Capability flags check ira.weiny-ral2JQCrhuEAvxtiuMwx3w
2015-05-04  6:14   ` [RFC PATCH 3/5] IB/core: Convert cap_ib_mad to core_cap_flags bit mask ira.weiny-ral2JQCrhuEAvxtiuMwx3w
     [not found]     ` <1430720099-32512-4-git-send-email-ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-05-04 16:49       ` Hefty, Sean
2015-05-04 18:46       ` Jason Gunthorpe
     [not found]         ` <20150504184610.GB20586-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-05-04 22:43           ` ira.weiny
     [not found]             ` <20150504224342.GD10115-W4f6Xiosr+yv7QzWx2u06xL4W9x8LtSr@public.gmane.org>
2015-05-05  8:00               ` Michael Wang
2015-05-05  8:26           ` Michael Wang
2015-05-04  6:14   ` [RFC PATCH 4/5] IB/core: Add rdma_dev_max_mad_size call ira.weiny-ral2JQCrhuEAvxtiuMwx3w
2015-05-04  6:14   ` [RFC PATCH 5/5] IB/core: Add cap_opa_mad helper using RDMA_CORE_CAP_OPA_MAD flag ira.weiny-ral2JQCrhuEAvxtiuMwx3w

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=1430750492.2407.9.camel@redhat.com \
    --to=dledford-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
    --cc=ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.