IB/core: Support rate limit for packet pacing
authorBodong Wang <bodong@mellanox.com>
Thu, 1 Dec 2016 11:43:14 +0000 (13:43 +0200)
committerDoug Ledford <dledford@redhat.com>
Tue, 13 Dec 2016 18:39:50 +0000 (13:39 -0500)
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>
drivers/infiniband/core/verbs.c
include/rdma/ib_verbs.h

index c976f29f7ad2931c90085e78f49b65ed8d718363..71580cc28c9ecc9550bbcb2adcf72878114c8efb 100644 (file)
@@ -1016,6 +1016,7 @@ static const struct {
                                                 IB_QP_QKEY),
                                 [IB_QPT_GSI] = (IB_QP_CUR_STATE                |
                                                 IB_QP_QKEY),
+                                [IB_QPT_RAW_PACKET] = IB_QP_RATE_LIMIT,
                         }
                }
        },
@@ -1049,6 +1050,7 @@ static const struct {
                                                IB_QP_QKEY),
                                [IB_QPT_GSI] = (IB_QP_CUR_STATE                 |
                                                IB_QP_QKEY),
+                               [IB_QPT_RAW_PACKET] = IB_QP_RATE_LIMIT,
                        }
                },
                [IB_QPS_SQD]   = {
index 73417a22ee4dd1158c8e45c5b9bd9c9b292aa01b..8029d2a51f14548109ad12b28d57f4836764dda3 100644 (file)
@@ -1102,6 +1102,7 @@ enum ib_qp_attr_mask {
        IB_QP_RESERVED2                 = (1<<22),
        IB_QP_RESERVED3                 = (1<<23),
        IB_QP_RESERVED4                 = (1<<24),
+       IB_QP_RATE_LIMIT                = (1<<25),
 };
 
 enum ib_qp_state {
@@ -1151,6 +1152,7 @@ struct ib_qp_attr {
        u8                      rnr_retry;
        u8                      alt_port_num;
        u8                      alt_timeout;
+       u32                     rate_limit;
 };
 
 enum ib_wr_opcode {