nvme-rdma: Add TOS for rdma transport
authorIsrael Rukshin <israelr@mellanox.com>
Sun, 18 Aug 2019 09:08:52 +0000 (12:08 +0300)
committerSagi Grimberg <sagi@grimberg.me>
Thu, 29 Aug 2019 19:55:02 +0000 (12:55 -0700)
commite63440d6a3134f7ae74bfb00bfc01db3efb8d3aa
treef00a7cee6a80c92108a46a3b43cc555f35def22c
parent52b4451a9e5ae1e9ae739db16e8af61c77805389
nvme-rdma: Add TOS for rdma transport

For RDMA transports, TOS is an extension of IB QoS to provide clients
the ability to segregate traffic flows for different type of data.
RDMA CM abstract it for ULPs using rdma_set_service_type().
Internally, each traffic flow is represented by a connection with all of
its independent resources like that of a normal connection, and is
differentiated by service type. In other words, there can be multiple qp
connections between an IP pair and each supports a unique service type.

One of the TOS usage is bandwidth management which allows setting bandwidth
limits for QoS classes, e.g. 80% bandwidth to controllers at QoS class A
and 20% to controllers at QoS class B.

Note: In addition to the TOS configuration, QOS must be configured on the
relevant HCA on the target (send RDMA commands) and initiator to effect
the traffic.

usage examples:
nvme connect --tos=0 --transport=rdma --traddr=10.0.1.1 --nqn=test-nvme

Signed-off-by: Israel Rukshin <israelr@mellanox.com>
Reviewed-by: Max Gurtovoy <maxg@mellanox.com>
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
drivers/nvme/host/rdma.c