public inbox for linux-kernel@vger.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: 97+ 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:07 ` [PATCH 1/5] " Sean Hefty
2006-02-01 20:10 ` [PATCH 2/5] " Sean Hefty
2006-02-01 20:15 ` [PATCH 3/5] " Sean Hefty
2006-03-03 21:14   ` [PATCH 3/5] export of ip_dev_find as part of Infiniband " Sean Hefty
2006-02-01 20:18 ` [PATCH 4/5] Infiniband: " Sean Hefty
2006-02-01 20:19 ` [PATCH 5/5] " Sean Hefty
2006-03-03 21:13 ` [PATCH 0/5] " Sean Hefty
2006-03-03 22:53   ` [openib-general] " 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 19:04     ` [PATCH 2/6] IB: match connection requests based on private data Sean Hefty
2006-03-06 22:05       ` [openib-general] " Sean Hefty
2006-03-06 23:29       ` [PATCH 2/6 v2] " Sean Hefty
2006-03-06 19:07     ` [PATCH 3/6] net/IB: export ip_dev_find Sean Hefty
2006-03-06 21:31       ` Roland Dreier
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  6:10           ` Sean Hefty
2006-03-21 20:57         ` Roland Dreier
2006-03-21 21:08           ` [openib-general] " Sean Hefty
2006-03-21 22:39             ` Roland Dreier
2006-03-06 19:18     ` [PATCH 5/6] IB: IP address based RDMA connection manager 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:42         ` [openib-general] " Sean Hefty
2006-03-06 21:58           ` Roland Dreier
2006-03-06 22:28             ` David S. Miller
2006-03-06 22:32               ` Roland Dreier
2006-03-06 22:39                 ` David S. Miller
2006-03-06 22:41                   ` Roland Dreier
2006-03-06 22:50                     ` David S. Miller
2006-03-06 23:40                       ` Roland Dreier
2006-03-07  0:05                         ` Bryan O'Sullivan
2006-03-07  0:10                           ` Roland Dreier
2006-03-07  0:26                         ` David S. Miller
2006-03-06 21:35       ` Roland Dreier
2006-03-06 21:43         ` [openib-general] " Sean Hefty
2006-03-06 23:41       ` [PATCH 6/6 v2] " Sean Hefty
2006-03-22  1:40         ` Roland Dreier
2006-03-22  8:30           ` Michael S. Tsirkin
2006-03-22 15:18             ` Roland Dreier
  -- 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 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox