All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sean Hefty <mshefty@ichips.intel.com>
To: Matthew Frost <artusemrys@sbcglobal.net>
Cc: Andrew Morton <akpm@osdl.org>, Sean Hefty <sean.hefty@intel.com>,
	linux-kernel@vger.kernel.org, openib-general@openib.org,
	bunk@stusta.de
Subject: Re: [openib-general] Re: 2.6.16-rc6-mm2: new RDMA CM EXPORT_SYMBOL's
Date: Mon, 20 Mar 2006 10:32:51 -0800	[thread overview]
Message-ID: <441EF553.2080803@ichips.intel.com> (raw)
In-Reply-To: <20060319041153.38692.qmail@web81904.mail.mud.yahoo.com>

Matthew Frost wrote:
> To the point.  I, insightful betimes, but a non-user of the technology,
> can grep TFM's and find out what the names could mean, but we're left
> guessing at what some of these *do*.  Translating names falls into the
> "any idiot can" category of data mining, but if you code for them, we can
> see context.  If you named them more transparently, we might even use
> them right.  Maybe just comment well?

Documentation in the form of comments are provided in the header files.  I can 
clarify the calls if needed.  To help understand the structure of this patch, 
three modules were submitted:

ib_addr - maps IP addresses to an RDMA device.
rdma_cm - Adds connection management over Infiniband using IP addressing.  This 
exports most of the symbols below.
rdma_ucm - Exports the rdma_cm functionality to userspace.  This uses most of 
the exported symbols (starting at rdma_create_id and below).

> +EXPORT_SYMBOL(rdma_wq); Work Queue (do what to it?)

This is used by ib_addr and rdma_cm modules to invoke user callbacks. 
Additional code not yet ready for merging will also make use of this work queue. 
  The intent is to re-use this work queue, rather than each module creating 
their own.

> +EXPORT_SYMBOL(rdma_translate_ip); Translate IP Address
> +EXPORT_SYMBOL(rdma_resolve_ip); Resolve IP Address
> +EXPORT_SYMBOL(rdma_addr_cancel); Address Cancel (memory?)

These exports are from the ib_addr module.  The routines are called by the 
rdma_cm module.  The first two map an IP address to a local Infiniband device 
address.  Rdma_resolve_ip is an asynchronous call, so rdma_addr_cancel is used 
to cancel its operation.  'rdma_cancel_resolve_ip' might have been a clearer name.

> +EXPORT_SYMBOL(rdma_create_id); Create (?) ID

The rdma_cm_id created by this call is required for the calls below. 
Conceptually, it may help to think of an rdma_cm_id as somewhat like a socket.

> +EXPORT_SYMBOL(rdma_create_qp); Create Queue Pair (WQ,CQ)
> +EXPORT_SYMBOL(rdma_destroy_qp); Destroy Queue Pair (WQ,CQ)

'rdma_create_qp' associates a QP with an rdma_cm_id, so that the rdma_cm can 
perform the QP transitions for the user during connection establishment.

> +EXPORT_SYMBOL(rdma_init_qp_attr); Set Initial Queue Pair Attributes (?)

This initializes the QP attributes for a user that wants to manually perform QP 
transitions.  It is provided mainly for userspace support.

> +EXPORT_SYMBOL(rdma_destroy_id); Destroy (?) ID
> +EXPORT_SYMBOL(rdma_listen); Listen (to ... socket, port, pipe, what?)

Listens across RDMA devices for connection requests.  The listen is on an 
rdma_cm_id.

> +EXPORT_SYMBOL(rdma_resolve_route); Resolve Route (datagram path?)

In Infiniband terms, this obtains a path record from the subnet manager.  The 
path record specifies the route through the subnet that packets between two 
connected queue pairs will take.

> +EXPORT_SYMBOL(rdma_resolve_addr); Resolve Address (memory?)

This converts struct sockaddr to RDMA addresses.  It ends up calling 
rdma_translate_ip and rdma_resolve_ip, but performs some additional work to 
handle device hotplug events.

> +EXPORT_SYMBOL(rdma_bind_addr); Bind Address (memory?)

Associates an rdma_cm_id to a specific struct sockaddr.

> +EXPORT_SYMBOL(rdma_connect); Connect
> +EXPORT_SYMBOL(rdma_accept); Accept
> +EXPORT_SYMBOL(rdma_reject); Reject
> +EXPORT_SYMBOL(rdma_disconnect); Disconnect
> 
> Address vs. IP - I know we're talking about a net/dma kluge here, but the
> twin usage is bugging me.  I'm intuiting the _addr as memory addresses,
> rather than IP addresses, which seem to be _ip, but my poor gray goo
> suffers pointer overload.

Maybe the naming is off here.  I used _ip when referring specifically to an IP 
address, and _addr when using a struct sockaddr.  In some cases, such as 
rdma_bind_addr, the 'address' may be nothing more than a port number.

> +EXPORT_SYMBOL(ib_get_rmpp_segment); Reliable MultiPacket Protocol

This is from a separate patch.  It is exported by the ib_mad module, and used by 
the ib_umad module.  There is at least one out of tree module (not yet ready for 
merging) that will make use of it.

> +EXPORT_SYMBOL(ib_copy_qp_attr_to_user); Push Queue Pair Attribute
> +EXPORT_SYMBOL(ib_copy_path_rec_to_user); Push Path Record
> +EXPORT_SYMBOL(ib_copy_path_rec_from_user); Retrieve Path Record

These are used by ib_uverbs, ib_ucm, and rdma_ucm modules.

> +EXPORT_SYMBOL(ib_modify_qp_is_ok); Yes, Modify Queue Pair, or "QP is
> OK", or "QP was Modified OK"?

This is from a separate patch.  It should be exported by ib_verbs, and used by 
ib_mthca.  The call verifies that the settings to modify a QP from one state to 
the next are valid.  I believe that the check used to be part of the ib_mthca 
driver itself, but additional kernel drivers, such as the ipath driver recently 
submitted for inclusion, now make use of this routine.

> +EXPORT_SYMBOL(ip_dev_find); Find IP device (sub(/ip/, "ib")? find the
> network interface device?)

This is the network call in fib_frontend.c.  It is being re-exported (the export 
was removed a couple of versions ago) for use by ib_addr.

>>Please explain the thinking behind the choice of a non-GPL export. 
>>(Yes, we discussed this when inifiniband was first merged, but it
>>doesn't hurt to reiterate).

The agreement made within the OpenIB community, from where this code originates, 
is that all source code be licensed under a dual license of BSD/GPL.  I am not a 
lawyer, so I don't know the implications of changing the exports to be GPL only, 
given the OpenIB license.  But my understanding is that makes using those 
functions less attractive.

- Sean

  reply	other threads:[~2006-03-20 18:34 UTC|newest]

Thread overview: 138+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-02-01 20:03 [PATCH 0/5] Infiniband: connection abstraction Sean Hefty
2006-02-01 20:03 ` Sean Hefty
2006-02-01 20:07 ` [PATCH 1/5] " Sean Hefty
2006-02-01 20:07   ` Sean Hefty
2006-02-01 20:10 ` [PATCH 2/5] " Sean Hefty
2006-02-01 20:10   ` Sean Hefty
2006-02-01 20:15 ` [PATCH 3/5] " Sean Hefty
2006-02-01 20:15   ` Sean Hefty
2006-03-03 21:14   ` [PATCH 3/5] export of ip_dev_find as part of Infiniband " Sean Hefty
2006-03-03 21:14     ` Sean Hefty
2006-02-01 20:18 ` [PATCH 4/5] Infiniband: " Sean Hefty
2006-02-01 20:18   ` Sean Hefty
2006-02-01 20:19 ` [PATCH 5/5] " Sean Hefty
2006-02-01 20:19   ` Sean Hefty
2006-03-03 21:13 ` [PATCH 0/5] " Sean Hefty
2006-03-03 21:13 ` Sean Hefty
2006-03-03 22:53   ` [openib-general] " Roland Dreier
2006-03-03 22:53     ` Roland Dreier
2006-03-06 18:59     ` [PATCH 1/6] IB: common handling for marshalling parameters to/from userspace Sean Hefty
2006-03-19  1:19       ` 2.6.16-rc6-mm2: new RDMA CM EXPORT_SYMBOL's Andrew Morton
2006-03-19  4:11         ` Matthew Frost
2006-03-20 18:32           ` Sean Hefty [this message]
2006-03-20 18:47             ` [openib-general] " Arjan van de Ven
2006-03-20 18:47         ` Roland Dreier
2006-03-20 19:18           ` [openib-general] " Sean Hefty
2006-03-06 18:59     ` [PATCH 1/6] IB: common handling for marshalling parameters to/from userspace Sean Hefty
2006-03-06 19:04     ` [PATCH 2/6] IB: match connection requests based on private data Sean Hefty
2006-03-06 19:04     ` Sean Hefty
2006-03-06 22:05       ` [openib-general] " Sean Hefty
2006-03-06 22:05         ` Sean Hefty
2006-03-06 23:29       ` [PATCH 2/6 v2] " Sean Hefty
2006-03-06 23:29       ` Sean Hefty
2006-03-06 19:07     ` [PATCH 3/6] net/IB: export ip_dev_find Sean Hefty
2006-03-06 19:07       ` Sean Hefty
2006-03-06 21:31       ` Roland Dreier
2006-03-06 21:31         ` Roland Dreier
2006-03-06 21:42         ` David S. Miller
2006-03-06 21:42           ` David S. Miller
2006-03-06 19:10     ` [PATCH 4/6] IB: address translation to map IP to IB addresses (GIDs) Sean Hefty
2006-03-06 23:31       ` [PATCH 4/6 v2] IB: address translation to map IP toIB " Sean Hefty
2006-03-11  1:14         ` Roland Dreier
2006-03-11  1:14           ` Roland Dreier
2006-03-11  6:10           ` Sean Hefty
2006-03-11  6:10           ` Sean Hefty
2006-03-21 20:57         ` Roland Dreier
2006-03-21 21:08           ` [openib-general] " Sean Hefty
2006-03-21 21:08             ` Sean Hefty
2006-03-21 22:39             ` [openib-general] " Roland Dreier
2006-03-21 22:39               ` Roland Dreier
2006-03-06 23:31       ` Sean Hefty
2006-03-06 19:10     ` [PATCH 4/6] IB: address translation to map IP to IB " Sean Hefty
2006-03-06 19:18     ` [PATCH 5/6] IB: IP address based RDMA connection manager Sean Hefty
2006-03-06 19:18     ` Sean Hefty
2006-03-06 19:21     ` [PATCH 6/6] IB: userspace support for " Sean Hefty
2006-03-06 21:33       ` Roland Dreier
2006-03-06 21:33         ` Roland Dreier
2006-03-06 21:42         ` [openib-general] " Sean Hefty
2006-03-06 21:42           ` Sean Hefty
2006-03-06 21:58           ` [openib-general] " Roland Dreier
2006-03-06 21:58             ` Roland Dreier
2006-03-06 22:28             ` [openib-general] " David S. Miller
2006-03-06 22:28               ` David S. Miller
2006-03-06 22:32               ` [openib-general] " Roland Dreier
2006-03-06 22:32                 ` Roland Dreier
2006-03-06 22:39                 ` [openib-general] " David S. Miller
2006-03-06 22:39                   ` David S. Miller
2006-03-06 22:41                   ` [openib-general] " Roland Dreier
2006-03-06 22:41                     ` Roland Dreier
2006-03-06 22:50                     ` [openib-general] " David S. Miller
2006-03-06 22:50                       ` David S. Miller
2006-03-06 23:40                       ` [openib-general] " Roland Dreier
2006-03-06 23:40                         ` Roland Dreier
2006-03-07  0:05                         ` [openib-general] " Bryan O'Sullivan
2006-03-07  0:10                           ` Roland Dreier
2006-03-07  0:26                         ` David S. Miller
2006-03-07  0:26                           ` David S. Miller
2006-03-06 21:35       ` Roland Dreier
2006-03-06 21:35         ` Roland Dreier
2006-03-06 21:43         ` [openib-general] " Sean Hefty
2006-03-06 21:43           ` Sean Hefty
2006-03-06 23:41       ` [PATCH 6/6 v2] " Sean Hefty
2006-03-22  1:40         ` Roland Dreier
2006-03-22  1:40           ` Roland Dreier
2006-03-22  8:30           ` Michael S. Tsirkin
2006-03-22  8:30             ` Michael S. Tsirkin
2006-03-22 15:18             ` Roland Dreier
2006-03-22 15:18               ` Roland Dreier
2006-03-06 23:41       ` Sean Hefty
2006-03-06 19:21     ` [PATCH 6/6] " Sean Hefty
  -- strict thread matches above, loose matches on Subject: below --
2006-03-18 12:40 2.6.16-rc6-mm2 Andrew Morton
2006-03-18 15:10 ` sata_mv success on 2.6.16-rc6-mm2 (was: Re: 2.6.16-rc6-mm2) Sander
2006-03-18 19:57   ` Andrew Morton
2006-03-18 17:25 ` 2.6.16-rc6-mm2: new RDMA CM EXPORT_SYMBOL's Adrian Bunk
2006-03-19  1:44   ` Tom Tucker
2006-03-19  1:57     ` Lee Revell
2006-03-18 18:45 ` [-mm patch] drivers/edac/e752x_edac.c: make sysbus_message static Adrian Bunk
2006-03-18 18:45 ` [-mm patch] drivers/scsi/aic7xxx/aic79xx_core.c: make ahd_match_scb() static Adrian Bunk
2006-03-18 18:45 ` [-mm patch] nfs4proc.c: make _nfs4_proc_setclientid_confirm() static Adrian Bunk
2006-03-18 18:45 ` [-mm patch] net/core/scm.c: make scm_detach_fds() static Adrian Bunk
2006-03-18 20:21 ` 2.6.16-rc6-mm2 Rafael J. Wysocki
2006-03-18 20:54   ` 2.6.16-rc6-mm2 Andrew Morton
2006-03-18 21:24     ` 2.6.16-rc6-mm2 Rafael J. Wysocki
2006-03-18 21:25     ` Emulex IP over FC support shogunx
2006-03-19 23:03     ` 2.6.16-rc6-mm2 - BUG when flushing a ramdisk Neil Brown
2006-03-19  1:09 ` 2.6.16-rc6-mm2 uninitialized online_policy_cpus.bits[0] Con Kolivas
2006-03-19  1:29   ` Con Kolivas
2006-03-19  1:35   ` Andrew Morton
2006-03-19  2:37     ` Con Kolivas
2006-03-19  6:13     ` Venkatesh Pallipadi
2006-03-20  3:26 ` New Areca driver in 2.6.16-rc6-mm2 Dax Kelson
2006-03-21 23:49   ` Chris Caputo
2006-03-22  3:37     ` Matti Aarnio
2006-03-22  3:56       ` Randy.Dunlap
2006-03-22  3:56         ` Al Viro
2006-03-22  4:41       ` erich
2006-03-20 13:02 ` RAID5 grow success (was: Re: 2.6.16-rc6-mm2) Sander
2006-03-20 13:33 ` Some sata_mv error messages " Sander
2006-03-21  1:02   ` Some sata_mv error messages Jeff Garzik
2006-03-21  2:25     ` Dave Jones
2006-03-21  2:35       ` Jeff Garzik
2006-03-21 16:06         ` Peter Jones
2006-03-21  4:48     ` Mark Lord
2006-03-21  7:28       ` Sander
2006-03-21 19:33       ` Denis Leroy
2006-03-21 19:37         ` Jeff Garzik
2006-03-21 19:42         ` Mark Lord
2006-03-21  7:26     ` Sander
2006-03-21 20:27 ` 2.6.16-rc6-mm2: reiser4 BUG when unmounting fs Laurent Riffard
2006-03-21 20:38   ` Laurent Riffard
2006-03-22  7:43     ` Vladimir V. Saveliev
2006-03-22 18:38       ` Laurent Riffard
2006-03-23 17:32       ` Alexander Gran
2006-03-21 22:54 ` 2.6.16-rc6-mm2: Why is CONFIG_MIGRATION available for everyone? Adrian Bunk
2006-03-21 22:57   ` Christoph Lameter
2006-03-21 23:40   ` Christoph Lameter
2006-03-22  8:41 ` 2.6.16-rc6-mm2 J.A. Magallon
2006-03-22  8:48   ` 2.6.16-rc6-mm2 Andrew Morton
2006-03-22 10:40 ` [2.6 patch] kernel/time.c: remove unused pps_* variables Adrian Bunk

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=441EF553.2080803@ichips.intel.com \
    --to=mshefty@ichips.intel.com \
    --cc=akpm@osdl.org \
    --cc=artusemrys@sbcglobal.net \
    --cc=bunk@stusta.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=openib-general@openib.org \
    --cc=sean.hefty@intel.com \
    /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.