From: Matan Barak <matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
To: Jason Gunthorpe
<jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>,
Or Gerlitz <ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Cc: roland-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
yishaih-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org,
dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
Subject: Re: [PATCH libibverbs V3 3/3] Add ibv_query_port_ex support
Date: Mon, 12 May 2014 15:22:10 +0300 [thread overview]
Message-ID: <5370BCF2.7050107@mellanox.com> (raw)
In-Reply-To: <20140508190951.GB25849-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
On 8/5/2014 10:09 PM, Jason Gunthorpe wrote:
> On Thu, May 08, 2014 at 09:51:23AM +0300, Or Gerlitz wrote:
>
>> +struct ibv_port_attr_ex {
>> + union {
>> + struct {
>> + enum ibv_port_state state;
>> + enum ibv_mtu max_mtu;
>> + enum ibv_mtu active_mtu;
>> + int gid_tbl_len;
>> + uint32_t port_cap_flags;
>> + uint32_t max_msg_sz;
>> + uint32_t bad_pkey_cntr;
>> + uint32_t qkey_viol_cntr;
>> + uint16_t pkey_tbl_len;
>> + uint16_t lid;
>> + uint16_t sm_lid;
>> + uint8_t lmc;
>> + uint8_t max_vl_num;
>> + uint8_t sm_sl;
>> + uint8_t subnet_timeout;
>> + uint8_t init_type_reply;
>> + uint8_t active_width;
>> + uint8_t active_speed;
>> + uint8_t phys_state;
>> + uint8_t link_layer;
>> + uint8_t reserved;
>> + };
>> + struct ibv_port_attr port_attr;
>> + };
>> + uint32_t comp_mask;
>> + uint32_t mask1;
>> +};
>
> I really don't like this deviation from the standard _ex
> pattern.
>
> Anonymous struct/union is a C11 feature and GNU extension. I don't
> think is appropriate for a user library to rely on. We cannot assume
> the user is has a compiler in C11 mode.
>
> The cannonical layout should be:
>
> struct ibv_port_attr_ex {
> uint64_t comp_mask;
> struct ibv_port_attr port_attr;
> // New stuff goes here
> }
>
It's not mandatory, but I think it could prevent future breakages and
inconsistencies. Anyway, anonymous unions are supported in icc 9.2+,
clang 3.1+ and of course gcc. However, I'll remove this in the next
version of this series.
> It is fine to use comp_mask to indicate all the fields, no need for
> the weird mask1, lets not over complicate things for users.
I don't think that's the right thing to do. According to my
understanding, the prefix of the extension verb is fully compatible with
the old structure. Afterwards, comp_mask has a bit for every new field.
mask1 is a new field that indicates which of the "old" values the user
is interested in. If we want to be strict with the extension verbs
definition, lets keep it all the way.
>
>> struct verbs_context {
>> /* "grows up" - new fields go here */
>> + int (*drv_query_port_ex)(struct ibv_context *context, uint8_t port_num,
>> + struct ibv_port_attr_ex *port_attr);
>> + int (*lib_query_port_ex)(struct ibv_context *context, uint8_t port_num,
>> + struct ibv_port_attr_ex *port_attr);
>> struct ibv_ah * (*drv_ibv_create_ah_ex)(struct ibv_pd *pd,
>> struct ibv_ah_attr_ex *attr);
>> int (*drv_ibv_destroy_flow) (struct ibv_flow *flow);
>
> I'm not sure what Roland decided to merge, but I am surprised to see
> drv_ elements here. That was nix'd in the round of review of the first
> patch set. eg create_qp_ex/etc don't have them.
>
> The flow is such that the verbs code has a chance to capture and
> override the function pointer after the driver sets it, there is no
> purpose to the drv_ values.
>
> I wouldn't like to see more added, and I think you should make a patch
> to ensure they are not necessary before it propogates too far.
>
I'll remove the drv_query_port_ex function and rename lib_query_port_ex
to query_port_ex and drv_ibv_create_ah_ex to create_ah_ex.
>> diff --git a/src/verbs.c b/src/verbs.c
>> index e7343a9..f8245b0 100644
>> +++ b/src/verbs.c
>> @@ -550,7 +550,7 @@ struct ibv_ah *__ibv_create_ah(struct ibv_pd *pd, struct ibv_ah_attr *attr)
>> int err;
>> struct ibv_ah *ah = NULL;
>> #ifndef NRESOLVE_NEIGH
>> - struct ibv_port_attr port_attr;
>> + struct ibv_port_attr_ex port_attr;
>> int dst_family;
>> int src_family;
>> int oif;
>> @@ -570,7 +570,10 @@ struct ibv_ah *__ibv_create_ah(struct ibv_pd *pd, struct ibv_ah_attr *attr)
>> goto return_ah;
>> }
>>
>> - err = ibv_query_port(pd->context, attr->port_num, &port_attr);
>> + port_attr.comp_mask = IBV_QUERY_PORT_EX_ATTR_MASK1;
>> + port_attr.mask1 = IBV_QUERY_PORT_EX_LINK_LAYER |
>> + IBV_QUERY_PORT_EX_CAP_FLAGS;
>> + err = ibv_query_port_ex(pd->context, attr->port_num, &port_attr);
>>
>> if (err) {
>> fprintf(stderr, PFX "ibv_create_ah failed to query port.\n");
>
> I wonder if this belongs in a seperate patch, I had to read it twice
> to realize this change was to take advantage of the reduced query
> performance optimization.
Thanks, I'll move that to a different patch.
>
> Jason
>
Thanks for the comments,
Matan
--
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:[~2014-05-12 12:22 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-08 6:51 [PATCH libibverbs V3 0/3] Add support for UD QPs under RoCE IP addressing Or Gerlitz
[not found] ` <1399531883-30599-1-git-send-email-ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2014-05-08 6:51 ` [PATCH libibverbs V3 1/3] Add ibv_port_cap_flags Or Gerlitz
2014-05-08 6:51 ` [PATCH libibverbs V3 2/3] Use neighbour lookup for RoCE UD QPs Eth L2 resolution Or Gerlitz
[not found] ` <1399531883-30599-3-git-send-email-ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2014-05-08 19:29 ` Jason Gunthorpe
2014-05-08 6:51 ` [PATCH libibverbs V3 3/3] Add ibv_query_port_ex support Or Gerlitz
[not found] ` <1399531883-30599-4-git-send-email-ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2014-05-08 19:09 ` Jason Gunthorpe
[not found] ` <20140508190951.GB25849-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2014-05-08 19:40 ` Christoph Lameter
[not found] ` <alpine.DEB.2.10.1405081439370.26267-gkYfJU5Cukgdnm+yROfE0A@public.gmane.org>
2014-05-08 19:47 ` Jason Gunthorpe
2014-05-09 14:01 ` Roland Dreier
[not found] ` <CAL1RGDUiBtOaYKZVR3ghOZzG6J0p5EV5o4FTTW0E43mHz-BaVQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-05-09 18:10 ` Jason Gunthorpe
[not found] ` <20140509181043.GC18257-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2014-05-09 18:20 ` Roland Dreier
[not found] ` <CAL1RGDVmeTKz1TXGLP+h4t9ffuaVeBCkWKPC2AuFyygcNweRWg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-05-09 18:39 ` Hefty, Sean
2014-05-09 18:40 ` Jason Gunthorpe
2014-05-11 12:35 ` Or Gerlitz
[not found] ` <536F6EAC.8020109-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2014-05-12 6:35 ` Jason Gunthorpe
2014-05-12 12:22 ` Matan Barak [this message]
[not found] ` <5370BCF2.7050107-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2014-05-12 16:43 ` Jason Gunthorpe
[not found] ` <20140512164323.GA20666-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2014-05-12 21:57 ` Roland Dreier
[not found] ` <CAL1RGDXYwPHrS7dSWg0ojyiPG7TF1Y0800q801kWvMxoyn3c8g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-05-13 13:18 ` Doug Ledford
[not found] ` <23840589.5954.1399987081862.JavaMail."DougLedford"@Phenom>
2014-05-13 20:02 ` Jason Gunthorpe
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=5370BCF2.7050107@mellanox.com \
--to=matanb-vpraknaxozvwk0htik3j/w@public.gmane.org \
--cc=dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=roland-DgEjT+Ai2ygdnm+yROfE0A@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