diff options
author | Bodong Wang <bodong@mellanox.com> | 2016-12-01 06:43:14 -0500 |
---|---|---|
committer | Doug Ledford <dledford@redhat.com> | 2016-12-13 13:39:50 -0500 |
commit | 528e5a1bd3f0e9b760cb3a1062fce7513712a15d (patch) | |
tree | 0578a99a085a57b799bd4797ad25eeef336f1f5b | |
parent | d949167d68b304c0a00331cf33ef49a29b65d85f (diff) |
IB/core: Support rate limit for packet pacing
Add new member rate_limit to ib_qp_attr which holds the packet pacing rate
in kbps, 0 means unlimited.
IB_QP_RATE_LIMIT is added to ib_attr_mask and could be used by RAW
QPs when changing QP state from RTR to RTS, RTS to RTS.
Signed-off-by: Bodong Wang <bodong@mellanox.com>
Reviewed-by: Matan Barak <matanb@mellanox.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Doug Ledford <dledford@redhat.com>
-rw-r--r-- | drivers/infiniband/core/verbs.c | 2 | ||||
-rw-r--r-- | include/rdma/ib_verbs.h | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c index c976f29f7ad2..71580cc28c9e 100644 --- a/drivers/infiniband/core/verbs.c +++ b/drivers/infiniband/core/verbs.c | |||
@@ -1016,6 +1016,7 @@ static const struct { | |||
1016 | IB_QP_QKEY), | 1016 | IB_QP_QKEY), |
1017 | [IB_QPT_GSI] = (IB_QP_CUR_STATE | | 1017 | [IB_QPT_GSI] = (IB_QP_CUR_STATE | |
1018 | IB_QP_QKEY), | 1018 | IB_QP_QKEY), |
1019 | [IB_QPT_RAW_PACKET] = IB_QP_RATE_LIMIT, | ||
1019 | } | 1020 | } |
1020 | } | 1021 | } |
1021 | }, | 1022 | }, |
@@ -1049,6 +1050,7 @@ static const struct { | |||
1049 | IB_QP_QKEY), | 1050 | IB_QP_QKEY), |
1050 | [IB_QPT_GSI] = (IB_QP_CUR_STATE | | 1051 | [IB_QPT_GSI] = (IB_QP_CUR_STATE | |
1051 | IB_QP_QKEY), | 1052 | IB_QP_QKEY), |
1053 | [IB_QPT_RAW_PACKET] = IB_QP_RATE_LIMIT, | ||
1052 | } | 1054 | } |
1053 | }, | 1055 | }, |
1054 | [IB_QPS_SQD] = { | 1056 | [IB_QPS_SQD] = { |
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h index 73417a22ee4d..8029d2a51f14 100644 --- a/include/rdma/ib_verbs.h +++ b/include/rdma/ib_verbs.h | |||
@@ -1102,6 +1102,7 @@ enum ib_qp_attr_mask { | |||
1102 | IB_QP_RESERVED2 = (1<<22), | 1102 | IB_QP_RESERVED2 = (1<<22), |
1103 | IB_QP_RESERVED3 = (1<<23), | 1103 | IB_QP_RESERVED3 = (1<<23), |
1104 | IB_QP_RESERVED4 = (1<<24), | 1104 | IB_QP_RESERVED4 = (1<<24), |
1105 | IB_QP_RATE_LIMIT = (1<<25), | ||
1105 | }; | 1106 | }; |
1106 | 1107 | ||
1107 | enum ib_qp_state { | 1108 | enum ib_qp_state { |
@@ -1151,6 +1152,7 @@ struct ib_qp_attr { | |||
1151 | u8 rnr_retry; | 1152 | u8 rnr_retry; |
1152 | u8 alt_port_num; | 1153 | u8 alt_port_num; |
1153 | u8 alt_timeout; | 1154 | u8 alt_timeout; |
1155 | u32 rate_limit; | ||
1154 | }; | 1156 | }; |
1155 | 1157 | ||
1156 | enum ib_wr_opcode { | 1158 | enum ib_wr_opcode { |