On Thu, Feb 28, 2019 at 09:31:07AM +0200, Gal Pressman wrote: > On 28-Feb-19 00:08, Saleem, Shiraz wrote: > >> Subject: [PATCH rdma-next v2 01/11] RDMA: Add EFA related definitions > >> > >> Add EFA node, transport and protocol types to core code. > >> In addition, EFA driver ID is added to the IOCTL interface uapi. > >> > >> Signed-off-by: Gal Pressman <galpress@xxxxxxxxxx> > >> drivers/infiniband/core/sysfs.c | 1 + > >> drivers/infiniband/core/verbs.c | 2 ++ > >> include/rdma/ib_verbs.h | 8 ++++++-- > >> include/uapi/rdma/rdma_user_ioctl_cmds.h | 1 + > >> 4 files changed, 10 insertions(+), 2 deletions(-) > >> > >> diff --git a/drivers/infiniband/core/sysfs.c b/drivers/infiniband/core/sysfs.c index > >> 9b6a065bdfa5..f7fac4c81559 100644 > >> +++ b/drivers/infiniband/core/sysfs.c > >> @@ -1194,6 +1194,7 @@ static ssize_t node_type_show(struct device *device, > >> case RDMA_NODE_RNIC: return sprintf(buf, "%d: RNIC\n", dev- > >>> node_type); > >> case RDMA_NODE_USNIC: return sprintf(buf, "%d: usNIC\n", dev- > >>> node_type); > >> case RDMA_NODE_USNIC_UDP: return sprintf(buf, "%d: usNIC UDP\n", > >> dev->node_type); > >> + case RDMA_NODE_EFA: return sprintf(buf, "%d: EFA\n", dev- > >>> node_type); > >> case RDMA_NODE_IB_SWITCH: return sprintf(buf, "%d: switch\n", dev- > >>> node_type); > >> case RDMA_NODE_IB_ROUTER: return sprintf(buf, "%d: router\n", dev- > >>> node_type); > >> default: return sprintf(buf, "%d: <unknown>\n", dev->node_type); > >> diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c index > >> 5a5e83f5f0fc..fc6f748a1933 100644 > >> +++ b/drivers/infiniband/core/verbs.c > >> @@ -218,6 +218,8 @@ rdma_node_get_transport(enum rdma_node_type > >> node_type) > >> return RDMA_TRANSPORT_USNIC_UDP; > >> if (node_type == RDMA_NODE_RNIC) > >> return RDMA_TRANSPORT_IWARP; > >> + if (node_type == RDMA_NODE_EFA) > >> + return RDMA_TRANSPORT_EFA; > >> > >> return RDMA_TRANSPORT_IB; > >> } > >> diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h index > >> 225cb76d469f..55534aba22bf 100644 > >> +++ b/include/rdma/ib_verbs.h > >> @@ -108,6 +108,7 @@ enum rdma_node_type { > >> RDMA_NODE_RNIC, > >> RDMA_NODE_USNIC, > >> RDMA_NODE_USNIC_UDP, > >> + RDMA_NODE_EFA, > >> }; > >> > >> enum { > >> @@ -119,14 +120,16 @@ enum rdma_transport_type { > >> RDMA_TRANSPORT_IB, > >> RDMA_TRANSPORT_IWARP, > >> RDMA_TRANSPORT_USNIC, > >> - RDMA_TRANSPORT_USNIC_UDP > >> + RDMA_TRANSPORT_USNIC_UDP, > >> + RDMA_TRANSPORT_EFA, > >> }; > >> > >> enum rdma_protocol_type { > >> RDMA_PROTOCOL_IB, > >> RDMA_PROTOCOL_IBOE, > >> RDMA_PROTOCOL_IWARP, > >> - RDMA_PROTOCOL_USNIC_UDP > >> + RDMA_PROTOCOL_USNIC_UDP, > >> + RDMA_PROTOCOL_EFA, > >> }; > >> > > > > Link layer is Ethernet? And layer 3, network type? > > Our link layer is Ethernet, but the wire protocol is not the same as RoCE so it > was decided to use unspecified link layer. > The wire protocol is tightly coupled to the wire protocol for EC2’s VPC software > defined network (EFA is not designed to be used independently of EC2’s VPC data > plane). It is possible this should just *_UNSPECIFIED/OTHER or something general so it can be shared. Neither USNIC nor EFA need these values for any purpose, AFAIK. They come out of sysfs and a few APIs they don't use anyhow. Jason