From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hal Rosenstock Subject: [PATCH ibacm 2/8] acm.c: In acm_port_up, handle noncontiguous pkeys Date: Tue, 06 Aug 2013 07:45:17 -0400 Message-ID: <5200E1CD.6070705@dev.mellanox.co.il> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Return-path: Sender: linux-rdma-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: "Hefty, Sean" Cc: "linux-rdma (linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org)" List-Id: linux-rdma@vger.kernel.org There can be "holes" in pkey table although this is not usually the case but since IBA spec allows for this, it should be handled. Signed-off-by: Hal Rosenstock --- src/acm.c | 14 +++++++------- 1 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/acm.c b/src/acm.c index 81aeeb4..a15f094 100644 --- a/src/acm.c +++ b/src/acm.c @@ -3192,11 +3192,6 @@ static void acm_port_up(struct acm_port *port) break; } - for (port->pkey_cnt = 0;; port->pkey_cnt++) { - ret = ibv_query_pkey(port->dev->verbs, port->port_num, port->pkey_cnt, &pkey); - if (ret || !pkey) - break; - } port->lid = attr.lid; port->lid_mask = 0xffff - ((1 << attr.lmc) - 1); @@ -3214,8 +3209,13 @@ static void acm_port_up(struct acm_port *port) return; atomic_set(&port->sa_dest.refcnt, 1); - for (i = 0; i < port->pkey_cnt; i++) - acm_ep_up(port, (uint16_t) i); + for (i = 0; i < attr.pkey_tbl_len; i++) { + ret = ibv_query_pkey(port->dev->verbs, port->port_num, i, &pkey); + if (ret || !pkey) + continue; + port->pkey_cnt++; + acm_ep_up(port, (uint16_t) i); + } acm_port_join(port); port->state = IBV_PORT_ACTIVE; -- 1.7.8.2 -- 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