Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Bodong Wang and committed by
Doug Ledford
528e5a1b d949167d

+4
+2
drivers/infiniband/core/verbs.c
··· 1016 1016 IB_QP_QKEY), 1017 1017 [IB_QPT_GSI] = (IB_QP_CUR_STATE | 1018 1018 IB_QP_QKEY), 1019 + [IB_QPT_RAW_PACKET] = IB_QP_RATE_LIMIT, 1019 1020 } 1020 1021 } 1021 1022 }, ··· 1050 1049 IB_QP_QKEY), 1051 1050 [IB_QPT_GSI] = (IB_QP_CUR_STATE | 1052 1051 IB_QP_QKEY), 1052 + [IB_QPT_RAW_PACKET] = IB_QP_RATE_LIMIT, 1053 1053 } 1054 1054 }, 1055 1055 [IB_QPS_SQD] = {
+2
include/rdma/ib_verbs.h
··· 1102 1102 IB_QP_RESERVED2 = (1<<22), 1103 1103 IB_QP_RESERVED3 = (1<<23), 1104 1104 IB_QP_RESERVED4 = (1<<24), 1105 + IB_QP_RATE_LIMIT = (1<<25), 1105 1106 }; 1106 1107 1107 1108 enum ib_qp_state { ··· 1152 1151 u8 rnr_retry; 1153 1152 u8 alt_port_num; 1154 1153 u8 alt_timeout; 1154 + u32 rate_limit; 1155 1155 }; 1156 1156 1157 1157 enum ib_wr_opcode {