Add packet pacing support for IB verbs
Subsystems (2)
cover Add packet pacing support for IB verbs
Packet pacing is a feature to control packet injection rate in arbitrary rates. One typical use case is for streaming vendors to control the bandwidth of different customers based on service coverage.
Packet pacing is a rate limiting and shaping for a QP (SQ for RAW QP), set and change the rate is done by modifying QP. This series of patch made the following high level changes:
1. Report rate limit capabilities through user data. Reported capabilities include: The maximum and minimum rate limit in kbps supported by packet pacing; Bitmap showing which QP types are supported by packet pacing operation.
2. Extend modify QP interface for growing attributes. Add rate limit support to the extended interface.
3. Enable mlx5-based hardware to be able to update the rate limit for RAW QP packet.
Rate limit could also be achieved by using path record data(static_rate), however, compare to packet pacing, the drawbacks are:
- The rate field is only u8, and uses IB standard rate enumerations. Users have very limited options. Packet pacing supports arbitrary rates with a resolution of 1kbps.
- Path record data doesn't apply to Raw Ethernet QPs, because these are not 1:1 connected as RC, nor use address handles as UD.
The rate_limit configuration came from the application like required BW for the streaming and not from the fabric (SM). Both of these features are limiting the rate but coming from a different entities and required separate fields. The actual limit should be the minimum of both of them (if both features apply).
This patch series depend on the following patches:
Add port counter support for raw packet QP
[1] http://www.spinics.net/lists/linux-rdma/msg39607.html
Available in the "topic/packet_pacing" topic branch of this git repo:git://git.kernel.org/pub/scm/linux/kernel/git/leon/linux-rdma.git
Or for browsing:
https://git.kernel.org/cgit/linux/kernel/git/leon/linux-rdma.git/log/?h=topic/packet_pacing
Thanks.
Changes from V0:
1. New bit masks IB_USER_LEGACY_LAST_QP_ATTR_MASK and IB_USER_LAST_QP_ATTR_MASK are added to detect non-supported masks for legacy/ex commands.
2. The ib_uverbs_ex_modify_qp should call uhw rather than ucore at the end.
Bodong Wang (4):
IB/mlx5: Report mlx5 packet pacing capabilities when querying device IB/core: Support rate limit for packet pacing
IB/uverbs: Extend modify_qp and support packet pacing IB/mlx5: Update the rate limit according to user setting for RAW QP
drivers/infiniband/core/uverbs.h | 1 + drivers/infiniband/core/uverbs_cmd.c | 192 ++++++++++++++++++++++------------ drivers/infiniband/core/uverbs_main.c | 1 + drivers/infiniband/core/verbs.c | 2 + drivers/infiniband/hw/mlx5/main.c | 16 ++- drivers/infiniband/hw/mlx5/mlx5_ib.h | 1 + drivers/infiniband/hw/mlx5/qp.c | 74 +++++++++++-- include/rdma/ib_verbs.h | 2 + include/uapi/rdma/ib_user_verbs.h | 21 ++++ include/uapi/rdma/mlx5-abi.h | 13 +++ 10 files changed, 245 insertions(+), 78 deletions(-)
--
2.7.4
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): 1480592596-20126-1-git-send-email-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org
PATCH 1/4 IB/mlx5: Report mlx5 packet pacing capabilities when querying device
From: Bodong Wang <bodong-VPRAkNaXOzVWk0Htik3J/[email protected]>
Enable mlx5 based hardware to report packet pacing capabilities from kernel to user space. Packet pacing allows to limit the rate to any number between the maximum and minimum, based on user settings.
The capabilities are exposed to user space through query_device by uhw. The following capabilities are reported:
1. The maximum and minimum rate limit in kbps supported by packet pacing.
2. Bitmap showing which QP types are supported by packet pacing operation.
--- drivers/infiniband/hw/mlx5/main.c | 13 +++++++++++++ include/uapi/rdma/mlx5-abi.h | 13 +++++++++++++ 2 files changed, 26 insertions(+)
drivers/infiniband/hw/mlx5/main.c +13 -0
@@ -669,6 +669,19 @@ static int mlx5_ib_query_device(struct ib_device *ibdev,1 <<MLX5_CAP_GEN (dev->mdev, log_max_rq); } +if (field_avail (typeof (resp), packet_pacing_caps, uhw->outlen)) { +if (MLX5_CAP_QOS (mdev, packet_pacing) && +MLX5_CAP_GEN (mdev, qos)) { + resp.packet_pacing_caps.qp_rate_limit_max = +MLX5_CAP_QOS (mdev, packet_pacing_max_rate); + resp.packet_pacing_caps.qp_rate_limit_min = +MLX5_CAP_QOS (mdev, packet_pacing_min_rate); + resp.packet_pacing_caps.supported_qpts |= +1 <<IB_QPT_RAW_PACKET ; + } + resp.response_length +=sizeof (resp.packet_pacing_caps); + } +if (uhw->outlen) { err =ib_copy_to_udata (uhw, &resp, resp.response_length);
include/uapi/rdma/mlx5-abi.h +13 -0
@@ -124,11 +124,24 @@ struct mlx5_ib_rss_caps {__u8 reserved[7 ]; }; +struct mlx5_packet_pacing_caps { +__u32 qp_rate_limit_min; +__u32 qp_rate_limit_max;/* In kpbs */ + +/* Corresponding bit will be set if qp type from +* 'enum ib_qp_type' is supported, e.g. +* supported_qpts |= 1 << IB_QPT_RAW_PACKET +*/ +__u32 supported_qpts; +__u32 reserved; +}; +struct mlx5_ib_query_device_resp {__u32 comp_mask;__u32 response_length;struct mlx5_ib_tso_caps tso_caps;struct mlx5_ib_rss_caps rss_caps; +struct mlx5_packet_pacing_caps packet_pacing_caps; };struct mlx5_ib_create_cq {
Signature · 6 lines
2.7.4 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 2/4 IB/core: Support rate limit for packet pacing
In reply to a message not in the archiveFrom: Bodong Wang <bodong-VPRAkNaXOzVWk0Htik3J/[email protected]>
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.
--- drivers/infiniband/core/verbs.c | 2 ++ include/rdma/ib_verbs.h | 2 ++ 2 files changed, 4 insertions(+)
drivers/infiniband/core/verbs.c +2 -0
@@ -1014,6 +1014,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, } } },
@@ -1047,6 +1048,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] = {
include/rdma/ib_verbs.h +2 -0
@@ -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 {
Signature · 6 lines
2.7.4 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): 1480592596-20126-3-git-send-email-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org
RE: [PATCH rdma-next V1 2/4] IB/core: Support rate limit for packet pacing
include/rdma/ib_verbs.h struct ib_qp_attr { · line 1156
Quoted 7 lines
enum
ib_qp_state{include/rdma/ib_verbs.h +1
-0@@ -1151,6 +1152,7 @@ struct ib_qp_attr {u8 rnr_retry;u8 alt_port_num;u8 alt_timeout; +u32 rate_limit; };
And I still disagree with this approach, as there is already an existing field in the API that limits rate. --
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): 1828884A29C6694DAF28B7E6B8A82373AB0BA789-P5GAC/[email protected]
Re: [PATCH rdma-next V1 2/4] IB/core: Support rate limit for packet pacing
Quoted 9 lines · Sean
include/rdma/ib_verbs.h struct ib_qp_attr { · line 1156
Quoted 7 lines
enum
ib_qp_state{include/rdma/ib_verbs.h +1
-0@@ -1151,6 +1152,7 @@ struct ib_qp_attr {u8 rnr_retry;u8 alt_port_num;u8 alt_timeout; +u32 rate_limit; };And I still disagree with this approach, as there is already an existing field in the API that limits rate.
Hi Sean,
We would like to elaborate more on the subject, and we need your help here. Our cover letter [1] has description why the existing field is not enough. Can you write a little bit more why you didn't like the proposed approach to an existing and real problem?
Thanks
A message that is not in the archive (sent off-list or not yet received): 20161202143957.GF4497-2ukJVAZIZ/[email protected]
RE: [PATCH rdma-next V1 2/4] IB/core: Support rate limit for packet pacing
Quoted 14 lines
From: [email protected] [mailto:linux-rdma- [email protected]] On Behalf Of Leon Romanovsky
Quoted 9 lines · Sean
include/rdma/ib_verbs.h struct ib_qp_attr { · line 1156
Quoted 7 lines
enum
ib_qp_state{include/rdma/ib_verbs.h +1
-0@@ -1151,6 +1152,7 @@ struct ib_qp_attr {u8 rnr_retry;u8 alt_port_num;u8 alt_timeout; +u32 rate_limit; };And I still disagree with this approach, as there is already an existing field in the
Quoted 9 lines
API that limits rate.
Hi Sean,
We would like to elaborate more on the subject, and we need your help here. Our cover letter [1] has description why the existing field is not enough. Can you write a little bit more why you didn't like the proposed approach to an existing and real problem?
Clearly, we need a new field that is greater than 8 bits that uses different encoding (actual rate rather than a predefined enumeration of values).
However, this is not only a new field - this rate is also conceptually different than AH static rate:
1) It is not related to the fabric path.
2) It is determined by the application rather than the fabric.
3) It needs to apply to QPs that don't use AH (raw Ethernet QPs)
Of course, we might require raw Ethernet QPs to use an AH just for the sake of rate-limiting.
But 1) + 2) indicate that this should be a concept orthogonal to network paths. In fact, it could apply to RC and UD QPs as well.
In addition, if we implement full connection establishment in the kernel (i.e., the static_rate field is filled in the kernel), we would still like to allow applications to further restrict their rate using a different component mask. --Liran
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): HE1PR0501MB28122735F9F3DFD700B43BFBB1800-692Kmc8YnlIVrnpjwTCbp8DSnupUy6xnnBOFsp37pqbUKgpGm//BTAC/[email protected]
Re: [PATCH rdma-next V1 2/4] IB/core: Support rate limit for packet pacing
Quoted 31 lines · Liran Liss
Quoted 14 lines
From: [email protected] [mailto:linux-rdma- [email protected]] On Behalf Of Leon Romanovsky
Quoted 9 lines · Sean
Review struct ib_qp_attr { · line 1156
Quoted 7 lines
enum
ib_qp_state{(quoted diff) +1
-0@@ -1151,6 +1152,7 @@ struct ib_qp_attr { u8 rnr_retry; u8 alt_port_num; u8 alt_timeout; + u32 rate_limit; };And I still disagree with this approach, as there is already an existing field in the
Quoted 9 lines
API that limits rate.
Hi Sean,
We would like to elaborate more on the subject, and we need your help here. Our cover letter [1] has description why the existing field is not enough. Can you write a little bit more why you didn't like the proposed approach to an existing and real problem?
Clearly, we need a new field that is greater than 8 bits that uses different encoding (actual rate rather than a predefined enumeration of values).
However, this is not only a new field - this rate is also conceptually different than AH static rate:
1) It is not related to the fabric path.
2) It is determined by the application rather than the fabric.
3) It needs to apply to QPs that don't use AH (raw Ethernet QPs)
Quoted 5 lines
Of course, we might require raw Ethernet QPs to use an AH just for the sake of rate-limiting.
But 1) + 2) indicate that this should be a concept orthogonal to network paths. In fact, it could apply to RC and UD QPs as well.
In addition, if we implement full connection establishment in the kernel (i.e., thestatic_ratefield is filled in the kernel), we would still like to allow applications to further restrict their rate using a different component mask. --Liran
I applied this series. I agree with Liran that the need for something other than an enum to denote rates is needed. We will have to work out exactly how to present this to user space (keep both, replace static_rate and bumb the verbs API number, other options?)
Signature · 2 lines
Doug Ledford <[email protected]> GPG Key ID: 0E572FDD
A message that is not in the archive (sent off-list or not yet received): 67d4e948-0ada-bd75-8855-79eed2ae9a7b-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
Re: [PATCH rdma-next V1 2/4] IB/core: Support rate limit for packet pacing
Quoted 38 lines · Doug Ledford
Quoted 31 lines · Liran Liss
Quoted 14 lines
From: [email protected] [mailto:linux-rdma- [email protected]] On Behalf Of Leon Romanovsky
Quoted 9 lines · Sean
Review struct ib_qp_attr { · line 1156
Quoted 7 lines
enum
ib_qp_state{(quoted diff) +1
-0@@ -1151,6 +1152,7 @@ struct ib_qp_attr { u8 rnr_retry; u8 alt_port_num; u8 alt_timeout; + u32 rate_limit; };And I still disagree with this approach, as there is already an existing field in the
Quoted 9 lines
API that limits rate.
Hi Sean,
We would like to elaborate more on the subject, and we need your help here. Our cover letter [1] has description why the existing field is not enough. Can you write a little bit more why you didn't like the proposed approach to an existing and real problem?
Clearly, we need a new field that is greater than 8 bits that uses different encoding (actual rate rather than a predefined enumeration of values).
However, this is not only a new field - this rate is also conceptually different than AH static rate:
1) It is not related to the fabric path.
2) It is determined by the application rather than the fabric.
3) It needs to apply to QPs that don't use AH (raw Ethernet QPs)Quoted 5 lines
Of course, we might require raw Ethernet QPs to use an AH just for the sake of rate-limiting.
But 1) + 2) indicate that this should be a concept orthogonal to network paths. In fact, it could apply to RC and UD QPs as well.
In addition, if we implement full connection establishment in the kernel (i.e., thestatic_ratefield is filled in the kernel), we would still like to allow applications to further restrict their rate using a different component mask. --Liran
Quoted 4 lines
I applied this series. I agree with Liran that the need for something other than an enum to denote rates is needed. We will have to work out exactly how to present this to user space (keep both, replace
static_rateand bumb the verbs API number, other options?)
I think in the new ioctl interface values like this should be more generic. MTU is another example.
FWIW I agree with Sean that static rate should have been changed to accommodate this expanded meaning.
With this new structure definition which rate is in effect? Are devices supposed to take the min of the 2?
Ira
Quoted 5 lines
Signature · 3 lines
-- Doug Ledford <[email protected]> GPG Key ID: 0E572FDD
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): 20161216024834.GA27188-W4f6Xiosr+yv7QzWx2u06xL4W9x8LtSr@public.gmane.org
Re: [PATCH rdma-next V1 2/4] IB/core: Support rate limit for packet pacing
Quoted 39 lines · ira.weiny
Quoted 38 lines · Doug Ledford
Quoted 36 lines · Liran Liss
Quoted 14 lines
From: [email protected] [mailto:linux-rdma- [email protected]] On Behalf Of Leon Romanovsky
Quoted 9 lines · Sean
Review struct ib_qp_attr { · line 1156
Quoted 7 lines
enum
ib_qp_state{(quoted diff) +1
-0@@ -1151,6 +1152,7 @@ struct ib_qp_attr { u8 rnr_retry; u8 alt_port_num; u8 alt_timeout; + u32 rate_limit; };And I still disagree with this approach, as there is already an existing field in the
Quoted 9 lines
API that limits rate.
Hi Sean,
We would like to elaborate more on the subject, and we need your help here. Our cover letter [1] has description why the existing field is not enough. Can you write a little bit more why you didn't like the proposed approach to an existing and real problem?
Clearly, we need a new field that is greater than 8 bits that uses different encoding (actual rate rather than a predefined enumeration of values).
However, this is not only a new field - this rate is also conceptually different than AH static rate:
1) It is not related to the fabric path.
2) It is determined by the application rather than the fabric.
3) It needs to apply to QPs that don't use AH (raw Ethernet QPs)Of course, we might require raw Ethernet QPs to use an AH just for the sake of rate-limiting.
But 1) + 2) indicate that this should be a concept orthogonal to network paths. In fact, it could apply to RC and UD QPs as well.
In addition, if we implement full connection establishment in the kernel (i.e., thestatic_ratefield is filled in the kernel), we would still like to allow applications to further restrict their rate using a different component mask. --Liran
Quoted 7 lines
Quoted 4 lines
I applied this series. I agree with Liran that the need for something other than an enum to denote rates is needed. We will have to work out exactly how to present this to user space (keep both, replace
static_rateand bumb the verbs API number, other options?)I think in the new ioctl interface values like this should be more generic. MTU is another example.
Agreed.
Quoted 2 lines
FWIW I agree with Sean that static rate should have been changed to accommodate this expanded meaning.
Changing static rate only matters at the user application level. At the driver to kernel level, it's easy to say this is driver specific and the user space driver can communicate with the kernel driver any way it chooses. It's a non issue at this level. It's later that we have to figure things out, which was the point of my comments and why I took this.
Quoted 2 lines
With this new structure definition which rate is in effect? Are devices supposed to take the min of the 2?
How did you write your kernel driver and how did you write your user space library? Because until the rdma-core to application API gets some modification, your user space driver will only ever get static_rate with its existing meaning from the user app and what your driver does with it internally is moot. What's more, it doesn't matter if mlx5 and hfi1 do the same thing, only that what they do is consistent with themselves. It's when we add that user bit that we have to make things right and set them in concrete.
Signature · 2 lines
Doug Ledford <[email protected]> GPG Key ID: 0E572FDD
PATCH 3/4 IB/uverbs: Extend modify_qp and support packet pacing
In reply to a message not in the archiveFrom: Bodong Wang <bodong-VPRAkNaXOzVWk0Htik3J/[email protected]>
An new uverbs command ib_uverbs_ex_modify_qp is added to support more QP attributes. User driver should choose to call the legacy/extended API based on input mask.
IB_USER_LAST_QP_ATTR_MASK is added to indicated the maximum bit position which supports legacy ib_uverbs_modify_qp. IB_USER_LEGACY_LAST_QP_ATTR_MASK indicates the maximum bit position which supports ib_uverbs_ex_modify_qp, the value of this mask should be updated if new mask is added later.
Along with this change, rate_limit is supported by the extended command, user driver could use it to control packet packing.
--- drivers/infiniband/core/uverbs.h | 1 + drivers/infiniband/core/uverbs_cmd.c | 192 ++++++++++++++++++++++------------ drivers/infiniband/core/uverbs_main.c | 1 + include/uapi/rdma/ib_user_verbs.h | 21 ++++ 4 files changed, 146 insertions(+), 69 deletions(-)
drivers/infiniband/core/uverbs.h +1 -0
@@ -289,5 +289,6 @@ IB_UVERBS_DECLARE_EX_CMD(modify_wq);IB_UVERBS_DECLARE_EX_CMD (destroy_wq);IB_UVERBS_DECLARE_EX_CMD (create_rwq_ind_table);IB_UVERBS_DECLARE_EX_CMD (destroy_rwq_ind_table); +IB_UVERBS_DECLARE_EX_CMD (modify_qp);#endif /* UVERBS_H */
drivers/infiniband/core/uverbs_cmd.c +123 -69
223 lines not on this page · raw message
drivers/infiniband/core/uverbs_main.c +1 -0
@@ -137,6 +137,7 @@ static int (*uverbs_ex_cmd_table[])(struct ib_uverbs_file *file, [IB_USER_VERBS_EX_CMD_DESTROY_WQ] = ib_uverbs_ex_destroy_wq, [IB_USER_VERBS_EX_CMD_CREATE_RWQ_IND_TBL] = ib_uverbs_ex_create_rwq_ind_table, [IB_USER_VERBS_EX_CMD_DESTROY_RWQ_IND_TBL] = ib_uverbs_ex_destroy_rwq_ind_table, + [IB_USER_VERBS_EX_CMD_MODIFY_QP] = ib_uverbs_ex_modify_qp, };static void ib_uverbs_add_one (struct ib_device *device);
include/uapi/rdma/ib_user_verbs.h +21 -0
@@ -37,6 +37,7 @@#define IB_USER_VERBS_H #include <linux/types.h> +#include <rdma/ib_verbs.h> /* * Increment this value if any changes that break userspace ABI
@@ -93,6 +94,7 @@ enum {IB_USER_VERBS_EX_CMD_QUERY_DEVICE =IB_USER_VERBS_CMD_QUERY_DEVICE ,IB_USER_VERBS_EX_CMD_CREATE_CQ =IB_USER_VERBS_CMD_CREATE_CQ ,IB_USER_VERBS_EX_CMD_CREATE_QP =IB_USER_VERBS_CMD_CREATE_QP , +IB_USER_VERBS_EX_CMD_MODIFY_QP =IB_USER_VERBS_CMD_MODIFY_QP ,IB_USER_VERBS_EX_CMD_CREATE_FLOW =IB_USER_VERBS_CMD_THRESHOLD ,IB_USER_VERBS_EX_CMD_DESTROY_FLOW , IB_USER_VERBS_EX_CMD_CREATE_WQ,
@@ -545,6 +547,14 @@ enum { IB_UVERBS_CREATE_QP_SUP_COMP_MASK = IB_UVERBS_CREATE_QP_MASK_IND_TABLE, }; +enum { +IB_USER_LEGACY_LAST_QP_ATTR_MASK =IB_QP_DEST_QPN +}; + +enum { +IB_USER_LAST_QP_ATTR_MASK =IB_QP_RATE_LIMIT +}; +struct ib_uverbs_ex_create_qp {__u64 user_handle;__u32 pd_handle;
@@ -684,9 +694,20 @@ struct ib_uverbs_modify_qp {__u64 driver_data[0 ]; }; +struct ib_uverbs_ex_modify_qp { +struct ib_uverbs_modify_qp base; +__u32 rate_limit; +__u32 reserved; +}; +struct ib_uverbs_modify_qp_resp { }; +struct ib_uverbs_ex_modify_qp_resp { +__u32 comp_mask; +__u32 response_length; +}; +struct ib_uverbs_destroy_qp {__u64 response;__u32 qp_handle;
Signature · 6 lines
2.7.4 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 4/4 IB/mlx5: Update the rate limit according to user setting for RAW QP
In reply to a message not in the archiveFrom: Bodong Wang <bodong-VPRAkNaXOzVWk0Htik3J/[email protected]>
- Add MODIFY_QP_EX CMD to extend modify_qp.
- Rate limit will be updated in the following state transactions: RTR2RTS, RTS2RTS. The limit will be removed when SQ is in RST and ERR state.
--- drivers/infiniband/hw/mlx5/main.c | 3 +- drivers/infiniband/hw/mlx5/mlx5_ib.h | 1 + drivers/infiniband/hw/mlx5/qp.c | 74 ++++++++++++++++++++++++++++++++---- 3 files changed, 69 insertions(+), 9 deletions(-)
drivers/infiniband/hw/mlx5/main.c +2 -1
@@ -3030,7 +3030,8 @@ static void *mlx5_ib_add(struct mlx5_core_dev *mdev) dev->ib_dev.uverbs_ex_cmd_mask = (1ull <<IB_USER_VERBS_EX_CMD_QUERY_DEVICE ) | (1ull <<IB_USER_VERBS_EX_CMD_CREATE_CQ ) | - (1ull <<IB_USER_VERBS_EX_CMD_CREATE_QP ); + (1ull <<IB_USER_VERBS_EX_CMD_CREATE_QP ) | + (1ull <<IB_USER_VERBS_EX_CMD_MODIFY_QP ); dev->ib_dev.query_device = mlx5_ib_query_device; dev->ib_dev.query_port = mlx5_ib_query_port;
drivers/infiniband/hw/mlx5/mlx5_ib.h +1 -0
@@ -387,6 +387,7 @@ struct mlx5_ib_qp {struct list_head qps_list;struct list_head cq_recv_list;struct list_head cq_send_list; +u32 rate_limit; };struct mlx5_ib_cq_buf {
drivers/infiniband/hw/mlx5/qp.c +66 -8
138 lines not on this page · raw message
Signature · 6 lines
2.7.4 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html