summaryrefslogtreecommitdiff
path: root/0011-Perftest-Fix-rx_depth-check-for-XRC.patch
diff options
context:
space:
mode:
Diffstat (limited to '0011-Perftest-Fix-rx_depth-check-for-XRC.patch')
-rw-r--r--0011-Perftest-Fix-rx_depth-check-for-XRC.patch71
1 files changed, 71 insertions, 0 deletions
diff --git a/0011-Perftest-Fix-rx_depth-check-for-XRC.patch b/0011-Perftest-Fix-rx_depth-check-for-XRC.patch
new file mode 100644
index 0000000..172be7d
--- /dev/null
+++ b/0011-Perftest-Fix-rx_depth-check-for-XRC.patch
@@ -0,0 +1,71 @@
+From c642cd2753b1b9343a5642ffeaaa78ef135f0f6e Mon Sep 17 00:00:00 2001
+From: Junxian Huang <huangjunxian6@hisilicon.com>
+Date: Fri, 24 May 2024 17:32:27 +0800
+Subject: [PATCH] Perftest: Fix rx_depth check for XRC
+
+When users manually specifies --use_srq in perftest command, the rx_depth
+will be checked. If rx_depth is less than the number of qps, the process
+will throw an error and exit.
+
+For XRC SEND where SRQ is definitely used, users normally don't need to
+manually specifies --use_srq, since the use_srq flag will be set to on
+when parsing the XRC parameters. However, the XRC parameters parsing is
+after the SRQ rx_depth check. If rx_depth is less than the number of qps
+in this case, it will miss the check, size_per_qp in ctx_set_recv_wqes()
+will become 0 and ibv_post_srq_recv() won't be called.
+
+Move the XRC parameters parsing ahead of SRQ rx_depth check and set
+--use_srq to on in advance so that the rx_depth error can be thrown.
+
+Fixes: 4c774a951b3c ("Added XRC for ib_send_bw test")
+Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
+---
+ src/perftest_parameters.c | 25 +++++++++++++------------
+ 1 file changed, 13 insertions(+), 12 deletions(-)
+
+diff --git a/src/perftest_parameters.c b/src/perftest_parameters.c
+index 5d27132..52b21dc 100755
+--- a/src/perftest_parameters.c
++++ b/src/perftest_parameters.c
+@@ -1098,7 +1098,19 @@ static void force_dependecies(struct perftest_parameters *user_param)
+ exit (1);
+ }
+
+- if (user_param->use_srq && user_param->num_of_qps > user_param->rx_depth) {
++ /* XRC Part */
++ if (user_param->connection_type == XRC) {
++ if (user_param->work_rdma_cm == ON) {
++ printf(RESULT_LINE);
++ fprintf(stderr," XRC does not support RDMA_CM\n");
++ exit(1);
++ }
++ user_param->use_xrc = ON;
++ user_param->use_srq = ON;
++ }
++
++ if (user_param->use_srq && user_param->verb == SEND &&
++ user_param->num_of_qps > user_param->rx_depth) {
+ printf(RESULT_LINE);
+ printf(" Using SRQ depth should be greater than number of QPs.\n");
+ exit (1);
+@@ -1396,17 +1408,6 @@ static void force_dependecies(struct perftest_parameters *user_param)
+ if (user_param->connection_type == DC && !user_param->use_srq)
+ user_param->use_srq = ON;
+
+- /* XRC Part */
+- if (user_param->connection_type == XRC) {
+- if (user_param->work_rdma_cm == ON) {
+- printf(RESULT_LINE);
+- fprintf(stderr," XRC does not support RDMA_CM\n");
+- exit(1);
+- }
+- user_param->use_xrc = ON;
+- user_param->use_srq = ON;
+- }
+-
+ if (!user_param->use_old_post_send)
+ {
+ #ifndef HAVE_IBV_WR_API
+--
+2.25.1
+