From: Roland Dreier <rdreier-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org>
To: Eli Cohen <eli-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
Cc: "Hefty,
Sean" <sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
RDMA list <linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: [PATCHv10 02/12] ib_core: IBoE CMA device binding
Date: Thu, 02 Sep 2010 10:46:10 -0700 [thread overview]
Message-ID: <adaeidcnin1.fsf@cisco.com> (raw)
In-Reply-To: <20100829143914.GA14370@mtldesk30> (Eli Cohen's message of "Sun, 29 Aug 2010 17:39:14 +0300")
> The point is it cma_acquire_dev() may get called when
> dev_addr->transport has not yet been set so we can't rely on its value
> to retrieve the correct GID; for example when it gets called by
> rdma_bind_addr() it will only set the transport a few lines down the
> function when calling cma_attach_to_dev(). That's why I may have to
> look for the GID in the IBoE case.
I see. We just have the address but the RDMA CM API doesn't give us the
type exactly (we just know the ARPHRD type).
> I agree that traversing the list twice does not look so good so how
> about this:
> static int cma_acquire_dev(struct rdma_id_private *id_priv)
> {
> struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr;
> struct cma_device *cma_dev;
> union ib_gid gid, iboe_gid;
> int ret = -ENODEV;
>
> iboe_addr_get_sgid(dev_addr, &iboe_gid);
> memcpy(&gid, dev_addr->src_dev_addr +
> rdma_addr_gid_offset(dev_addr), sizeof gid);
I wish there were a cleaner way to write all this...
> list_for_each_entry(cma_dev, &dev_list, list) {
> ret = ib_find_cached_gid(cma_dev->device, &gid,
> &id_priv->id.port_num, NULL);
> if (!ret)
> break;
> if (dev_addr->dev_type != ARPHRD_INFINIBAND) {
> ret = ib_find_cached_gid(cma_dev->device, &iboe_gid,
> &id_priv->id.port_num, NULL);
> if (!ret)
> break;
> }
looks better but since we know everything about the device we're
comparing to, can't we do something like:
if (addr and dev ARPHRD agree)
if (dev is IBoE)
ret = ib_find_gid(iboe_gid);
else
ret = ib_find_gid(gid);
if (!ret)
break;
(by the way, it seems we can use ib_find_gid() here since we are in a
sleepable context -- no need to rely on the cached_gid stuff, which I
would like to phase out someday)
> }
>
> if (!ret)
> cma_attach_to_dev(id_priv, cma_dev);
>
> return ret;
> }
--
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
next prev parent reply other threads:[~2010-09-02 17:46 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-26 14:17 [PATCHv10 02/12] ib_core: IBoE CMA device binding Eli Cohen
2010-08-26 20:11 ` Hefty, Sean
[not found] ` <CF9C39F99A89134C9CF9C4CCB68B8DDF25AB26491D-osO9UTpF0USkrb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
2010-08-27 5:42 ` Eli Cohen
2010-08-27 6:14 ` Roland Dreier
[not found] ` <adavd6w37lp.fsf-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org>
2010-08-29 14:39 ` Eli Cohen
2010-09-01 20:05 ` Hefty, Sean
2010-09-02 17:46 ` Roland Dreier [this message]
[not found] ` <adaeidcnin1.fsf-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org>
2010-09-02 19:27 ` Eli Cohen
2010-09-02 20:10 ` Roland Dreier
[not found] ` <aday6bjnbyu.fsf-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org>
2010-09-07 15:18 ` Eli Cohen
2010-09-02 20:30 ` Hefty, Sean
[not found] ` <CF9C39F99A89134C9CF9C4CCB68B8DDF25AB44BA6F-osO9UTpF0USkrb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
2010-09-02 21:57 ` Roland Dreier
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=adaeidcnin1.fsf@cisco.com \
--to=rdreier-fyb4gu1cfyuavxtiumwx3w@public.gmane.org \
--cc=eli-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=sean.hefty-ral2JQCrhuEAvxtiuMwx3w@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