RDMA/cma: listening device cm_ids should inherit tos
authorSteve Wise <swise@opengridcomputing.com>
Fri, 1 Feb 2019 20:44:27 +0000 (12:44 -0800)
committerJason Gunthorpe <jgg@mellanox.com>
Fri, 8 Feb 2019 23:15:40 +0000 (16:15 -0700)
If a user binds to INADDR_ANY and sets the service id, then the
device-specific cm_ids should also use this tos.  This allows an app to
do:

rdma_bind_addr(INADDR_ANY)
set_service_type()
rdma_listen()

And connections setup via this listening endpoint will use the correct
tos.

Signed-off-by: Steve Wise <swise@opengridcomputing.com>
Reviewed-by: Parav Pandit <parav@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/core/cma.c

index 83aa2ad..e761ddd 100644 (file)
@@ -2466,6 +2466,8 @@ static void cma_listen_on_dev(struct rdma_id_private *id_priv,
        atomic_inc(&id_priv->refcount);
        dev_id_priv->internal_id = 1;
        dev_id_priv->afonly = id_priv->afonly;
+       dev_id_priv->tos_set = id_priv->tos_set;
+       dev_id_priv->tos = id_priv->tos;
 
        ret = rdma_listen(id, id_priv->backlog);
        if (ret)