diff mbox

libibumad/umad.c: In resolve_ca_port, skip ethernet link layer ports

Message ID 51266F1F.608@dev.mellanox.co.il (mailing list archive)
State Accepted
Delegated to: Hal Rosenstock
Headers show

Commit Message

Hal Rosenstock Feb. 21, 2013, 7:01 p.m. UTC
Signed-off-by: Ilya Nelkenbaum <ilyan@mellanox.com>
---
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Ira Weiny Feb. 21, 2013, 7:44 p.m. UTC | #1
What about QP1?  It was my understanding that CM was still required for RoCE.

Ira

On Thu, 21 Feb 2013 14:01:51 -0500
Hal Rosenstock <hal@dev.mellanox.co.il> wrote:

> 
> Signed-off-by: Ilya Nelkenbaum <ilyan@mellanox.com>
> ---
> diff --git a/src/umad.c b/src/umad.c
> index 8f817d2..8ab5e80 100644
> --- a/src/umad.c
> +++ b/src/umad.c
> @@ -256,6 +256,11 @@ static int resolve_ca_port(char *ca_name, int *port)
>  			ret = -1;
>  			goto Exit;
>  		}
> +		if (strcmp(ca.ports[*port]->link_layer, "InfiniBand") &&
> +		    strcmp(ca.ports[*port]->link_layer, "IB")) {
> +			ret = -1;
> +			goto Exit;
> +		}
>  		if (ca.ports[*port]->state == 4) {
>  			ret = 1;
>  			goto Exit;
> @@ -270,6 +275,9 @@ static int resolve_ca_port(char *ca_name, int *port)
>  		DEBUG("checking port %d", i);
>  		if (!ca.ports[i])
>  			continue;
> +		if (strcmp(ca.ports[i]->link_layer, "InfiniBand") &&
> +		    strcmp(ca.ports[i]->link_layer, "IB"))
> +			continue;
>  		if (up < 0 && ca.ports[i]->phys_state == 5)
>  			up = *port = i;
>  		if (ca.ports[i]->state == 4) {
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Hal Rosenstock Feb. 21, 2013, 7:59 p.m. UTC | #2
On 2/21/2013 2:44 PM, Ira Weiny wrote:
> What about QP1?  It was my understanding that CM was still required for RoCE.

Yes, RoCE requires CM support but AFAIK CM doesn't use/require these
interfaces to get send or receive it's MADs.

RoCE is a weird animal in terms of IB management as SM/QP0 is not
used/deprecated and QP1 is only required for CM with most other QP1
things beyond the spec with the exception of SA which is also not
used/deprecated.

-- Hal

> 
> Ira
>
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Hefty, Sean Feb. 21, 2013, 8:08 p.m. UTC | #3
> On 2/21/2013 2:44 PM, Ira Weiny wrote:
> > What about QP1?  It was my understanding that CM was still required for RoCE.
> 
> Yes, RoCE requires CM support but AFAIK CM doesn't use/require these
> interfaces to get send or receive it's MADs.
> 
> RoCE is a weird animal in terms of IB management as SM/QP0 is not
> used/deprecated and QP1 is only required for CM with most other QP1
> things beyond the spec with the exception of SA which is also not
> used/deprecated.

Does the kernel expose QP1 for RoCE to user space?
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Hal Rosenstock Feb. 21, 2013, 8:38 p.m. UTC | #4
On 2/21/2013 3:08 PM, Hefty, Sean wrote:
>> On 2/21/2013 2:44 PM, Ira Weiny wrote:
>>> What about QP1?  It was my understanding that CM was still required for RoCE.
>>
>> Yes, RoCE requires CM support but AFAIK CM doesn't use/require these
>> interfaces to get send or receive it's MADs.
>>
>> RoCE is a weird animal in terms of IB management as SM/QP0 is not
>> used/deprecated and QP1 is only required for CM with most other QP1
>> things beyond the spec with the exception of SA which is also not
>> used/deprecated.
> 
> Does the kernel expose QP1 for RoCE to user space?

kernel MAD does not create QP0 for ethernet link layer ports but it does
create QP1. There's no link layer specific code in kernel user MAD so I
presume that QP1 is exposed to user space.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/src/umad.c b/src/umad.c
index 8f817d2..8ab5e80 100644
--- a/src/umad.c
+++ b/src/umad.c
@@ -256,6 +256,11 @@  static int resolve_ca_port(char *ca_name, int *port)
 			ret = -1;
 			goto Exit;
 		}
+		if (strcmp(ca.ports[*port]->link_layer, "InfiniBand") &&
+		    strcmp(ca.ports[*port]->link_layer, "IB")) {
+			ret = -1;
+			goto Exit;
+		}
 		if (ca.ports[*port]->state == 4) {
 			ret = 1;
 			goto Exit;
@@ -270,6 +275,9 @@  static int resolve_ca_port(char *ca_name, int *port)
 		DEBUG("checking port %d", i);
 		if (!ca.ports[i])
 			continue;
+		if (strcmp(ca.ports[i]->link_layer, "InfiniBand") &&
+		    strcmp(ca.ports[i]->link_layer, "IB"))
+			continue;
 		if (up < 0 && ca.ports[i]->phys_state == 5)
 			up = *port = i;
 		if (ca.ports[i]->state == 4) {