diff --git a/src/perftest_resources.c b/src/perftest_resources.c index 5df0519f..31b5f793 100755 --- a/src/perftest_resources.c +++ b/src/perftest_resources.c @@ -3202,7 +3202,7 @@ void ctx_set_send_reg_wqes(struct pingpong_context *ctx, ctx->wr[i*user_param->post_list + j].sg_list = &ctx->sge_list[i*user_param->post_list + j]; ctx->wr[i*user_param->post_list + j].num_sge = MAX_SEND_SGE; - ctx->wr[i*user_param->post_list + j].wr_id = i; + ctx->wr[i*user_param->post_list + j].wr_id = i * user_param->post_list + j; if (j == (user_param->post_list - 1)) { ctx->wr[i*user_param->post_list + j].next = NULL; @@ -3347,7 +3347,7 @@ int ctx_set_recv_wqes(struct pingpong_context *ctx,struct perftest_parameters *u if ((user_param->tst == BW || user_param->tst == LAT_BY_BW) && user_param->size <= (ctx->cycle_buffer / 2)) { increase_loc_addr(&ctx->recv_sge_list[i * user_param->recv_post_list + j], user_param->size, - j, + j-1, ctx->rx_buffer_addr[i], user_param->connection_type,ctx->cache_line_size,ctx->cycle_buffer); } @@ -3355,7 +3355,7 @@ int ctx_set_recv_wqes(struct pingpong_context *ctx,struct perftest_parameters *u ctx->rwr[i * user_param->recv_post_list + j].sg_list = &ctx->recv_sge_list[i * user_param->recv_post_list + j]; ctx->rwr[i * user_param->recv_post_list + j].num_sge = MAX_RECV_SGE; - ctx->rwr[i * user_param->recv_post_list + j].wr_id = i; + ctx->rwr[i * user_param->recv_post_list + j].wr_id = i * user_param->recv_post_list + j; if (j == (user_param->recv_post_list - 1)) ctx->rwr[i * user_param->recv_post_list + j].next = NULL; @@ -3464,7 +3464,7 @@ static int clean_scq_credit(int send_cnt,struct pingpong_context *ctx,struct per for (i = 0; i < sne; i++) { if (swc[i].status != IBV_WC_SUCCESS) { fprintf(stderr, "Poll send CQ error status=%u qp %d\n", - swc[i].status,(int)swc[i].wr_id); + swc[i].status,(int)swc[i].qp_num); return_value = FAILURE; goto cleaning; } @@ -3582,11 +3582,11 @@ int run_iter_bw(struct pingpong_context *ctx,struct perftest_parameters *user_pa int is_sending_burst = 0; int cpu_mhz = 0; int return_value = 0; - int wc_id; int send_flows_index = 0; uintptr_t primary_send_addr = ctx->sge_list[0].addr; int address_offset = 0; int flows_burst_iter = 0; + int qp_index; #ifdef HAVE_IBV_WR_API if (user_param->connection_type != RawEth) @@ -3749,7 +3749,7 @@ int run_iter_bw(struct pingpong_context *ctx,struct perftest_parameters *user_pa ne = ibv_poll_cq(ctx->send_cq, user_param->cqe_poll, wc); if (ne > 0) { for (i = 0; i < ne; i++) { - wc_id = (int)wc[i].wr_id; + qp_index = (int)wc[i].qp_num; if (wc[i].status != IBV_WC_SUCCESS) { NOTIFY_COMP_ERROR_SEND(wc[i],totscnt,totccnt); @@ -3757,10 +3757,10 @@ int run_iter_bw(struct pingpong_context *ctx,struct perftest_parameters *user_pa goto cleaning; } int fill = user_param->cq_mod; - if (user_param->fill_count && ctx->ccnt[wc_id] + user_param->cq_mod > user_param->iters) { - fill = user_param->iters - ctx->ccnt[wc_id]; + if (user_param->fill_count && ctx->ccnt[qp_index] + user_param->cq_mod > user_param->iters) { + fill = user_param->iters - ctx->ccnt[qp_index]; } - ctx->ccnt[wc_id] += fill; + ctx->ccnt[qp_index] += fill; totccnt += fill; if (user_param->noPeak == OFF) { @@ -3772,7 +3772,7 @@ int run_iter_bw(struct pingpong_context *ctx,struct perftest_parameters *user_pa if (user_param->test_type==DURATION && user_param->state == SAMPLE_STATE) { if (user_param->report_per_port) { - user_param->iters_per_port[user_param->port_by_qp[wc_id]] += user_param->cq_mod; + user_param->iters_per_port[user_param->port_by_qp[qp_index]] += user_param->cq_mod; } user_param->iters += user_param->cq_mod; } @@ -3834,7 +3834,7 @@ int run_iter_bw_server(struct pingpong_context *ctx, struct perftest_parameters int tot_scredit = 0; int firstRx = 1; int return_value = 0; - int wc_id; + int qp_index; int recv_flows_index = 0; uintptr_t primary_recv_addr = ctx->recv_sge_list[0].addr; int recv_flows_burst = 0; @@ -3897,42 +3897,42 @@ int run_iter_bw_server(struct pingpong_context *ctx, struct perftest_parameters } for (i = 0; i < ne; i++) { - wc_id = (int)wc[i].wr_id; + qp_index = (int)wc[i].qp_num; if (wc[i].status != IBV_WC_SUCCESS) { - NOTIFY_COMP_ERROR_RECV(wc[i],rcnt_for_qp[wc_id]); + NOTIFY_COMP_ERROR_RECV(wc[i],rcnt_for_qp[qp_index]); return_value = FAILURE; goto cleaning; } - rcnt_for_qp[wc_id]++; + rcnt_for_qp[qp_index]++; rcnt++; - unused_recv_for_qp[wc_id]++; + unused_recv_for_qp[qp_index]++; check_alive_data.current_totrcnt = rcnt; if (user_param->test_type==DURATION && user_param->state == SAMPLE_STATE) { if (user_param->report_per_port) { - user_param->iters_per_port[user_param->port_by_qp[wc_id]]++; + user_param->iters_per_port[user_param->port_by_qp[qp_index]]++; } user_param->iters++; } //coverity[uninit_use] - if ((user_param->test_type==DURATION || posted_per_qp[wc_id] + user_param->recv_post_list <= user_param->iters) && - unused_recv_for_qp[wc_id] >= user_param->recv_post_list && !user_param->use_unsolicited_write) { + if ((user_param->test_type==DURATION || posted_per_qp[qp_index] + user_param->recv_post_list <= user_param->iters) && + unused_recv_for_qp[qp_index] >= user_param->recv_post_list && !user_param->use_unsolicited_write) { if (user_param->use_srq) { - if (ibv_post_srq_recv(ctx->srq, &ctx->rwr[wc_id * user_param->recv_post_list], &bad_wr_recv)) { - fprintf(stderr, "Couldn't post recv SRQ. QP = %d: counter=%lu\n", wc_id,rcnt); + if (ibv_post_srq_recv(ctx->srq, &ctx->rwr[qp_index * user_param->recv_post_list], &bad_wr_recv)) { + fprintf(stderr, "Couldn't post recv SRQ. QP = %d: counter=%lu\n", qp_index,rcnt); return_value = FAILURE; goto cleaning; } } else { - if (ibv_post_recv(ctx->qp[wc_id], &ctx->rwr[wc_id * user_param->recv_post_list], &bad_wr_recv)) { - fprintf(stderr, "Couldn't post recv Qp=%d rcnt=%lu\n",wc_id,rcnt_for_qp[wc_id]); + if (ibv_post_recv(ctx->qp[qp_index], &ctx->rwr[qp_index * user_param->recv_post_list], &bad_wr_recv)) { + fprintf(stderr, "Couldn't post recv Qp=%d rcnt=%lu\n",qp_index,rcnt_for_qp[qp_index]); return_value = 15; goto cleaning; } } - unused_recv_for_qp[wc_id] -= user_param->recv_post_list; + unused_recv_for_qp[qp_index] -= user_param->recv_post_list; if (user_param->flows != DEF_FLOWS) { if (++recv_flows_burst == user_param->flows_burst) { @@ -3945,35 +3945,35 @@ int run_iter_bw_server(struct pingpong_context *ctx, struct perftest_parameters } if (SIZE(user_param->connection_type,user_param->size,!(int)user_param->machine) <= (ctx->cycle_buffer / 2) && user_param->recv_post_list == 1) { - increase_loc_addr(ctx->rwr[wc_id].sg_list, + increase_loc_addr(ctx->rwr[qp_index].sg_list, user_param->size, - posted_per_qp[wc_id], - ctx->rx_buffer_addr[wc_id] + address_flows_offset, + posted_per_qp[qp_index], + ctx->rx_buffer_addr[qp_index] + address_flows_offset, user_param->connection_type,ctx->cache_line_size,ctx->cycle_buffer); } - posted_per_qp[wc_id] += user_param->recv_post_list; + posted_per_qp[qp_index] += user_param->recv_post_list; } if (ctx->send_rcredit) { - int credit_cnt = rcnt_for_qp[wc_id]%user_param->rx_depth; + int credit_cnt = rcnt_for_qp[qp_index]%user_param->rx_depth; if (credit_cnt%ctx->credit_cnt == 0) { struct ibv_send_wr *bad_wr = NULL; int sne = 0, j = 0; - ctx->ctrl_buf[wc_id] = rcnt_for_qp[wc_id]; + ctx->ctrl_buf[qp_index] = rcnt_for_qp[qp_index]; - while (scredit_for_qp[wc_id] == user_param->tx_depth) { + while (scredit_for_qp[qp_index] == user_param->tx_depth) { sne = ibv_poll_cq(ctx->send_cq,user_param->tx_depth,swc); if (sne > 0) { for (j = 0; j < sne; j++) { if (swc[j].status != IBV_WC_SUCCESS) { fprintf(stderr, "Poll send CQ error status=%u qp %d credit=%lu scredit=%ld\n", - swc[j].status,(int)swc[j].wr_id, - rcnt_for_qp[swc[j].wr_id],scredit_for_qp[swc[j].wr_id]); + swc[j].status,(int)swc[j].qp_num, + rcnt_for_qp[swc[j].qp_num],scredit_for_qp[swc[j].qp_num]); return_value = FAILURE; goto cleaning; } - scredit_for_qp[swc[j].wr_id]--; + scredit_for_qp[swc[j].qp_num]--; tot_scredit--; } } else if (sne < 0) { @@ -3982,13 +3982,13 @@ int run_iter_bw_server(struct pingpong_context *ctx, struct perftest_parameters goto cleaning; } } - if (ibv_post_send(ctx->qp[wc_id],&ctx->ctrl_wr[wc_id],&bad_wr)) { + if (ibv_post_send(ctx->qp[qp_index],&ctx->ctrl_wr[wc[i].wr_id],&bad_wr)) { fprintf(stderr,"Couldn't post send qp %d credit = %lu\n", - wc_id,rcnt_for_qp[wc_id]); + qp_index,rcnt_for_qp[qp_index]); return_value = FAILURE; goto cleaning; } - scredit_for_qp[wc_id]++; + scredit_for_qp[qp_index]++; tot_scredit++; } } @@ -4048,11 +4048,11 @@ int run_iter_bw_infinitely(struct pingpong_context *ctx,struct perftest_paramete int i = 0; int index, ne; int err = 0; - int wc_id; uint64_t *scnt_for_qp = NULL; struct ibv_wc *wc = NULL; int num_of_qps = user_param->num_of_qps; int return_value = 0; + int qp_index; #ifdef HAVE_IBV_WR_API if (user_param->connection_type != RawEth) @@ -4127,14 +4127,14 @@ int run_iter_bw_infinitely(struct pingpong_context *ctx,struct perftest_paramete for (i = 0; i < ne; i++) { if (wc[i].status != IBV_WC_SUCCESS) { - NOTIFY_COMP_ERROR_SEND(wc[i],ctx->scnt[(int)wc[i].wr_id],ctx->scnt[(int)wc[i].wr_id]); + NOTIFY_COMP_ERROR_SEND(wc[i],ctx->scnt[(int)wc[i].qp_num],ctx->scnt[(int)wc[i].qp_num]); return_value = FAILURE; goto cleaning; } - wc_id = (int)wc[i].wr_id; + qp_index = (int)wc[i].qp_num; user_param->iters += user_param->cq_mod; totccnt += user_param->cq_mod; - ctx->ccnt[wc_id] += user_param->cq_mod; + ctx->ccnt[qp_index] += user_param->cq_mod; } } else if (ne < 0) { @@ -4220,34 +4220,34 @@ int run_iter_bw_infinitely_server(struct pingpong_context *ctx, struct perftest_ goto cleaning; } user_param->iters++; - unused_recv_for_qp[wc[i].wr_id]++; - if (unused_recv_for_qp[wc[i].wr_id] >= user_param->recv_post_list && !user_param->use_unsolicited_write) { + unused_recv_for_qp[wc[i].qp_num]++; + if (unused_recv_for_qp[wc[i].qp_num] >= user_param->recv_post_list && !user_param->use_unsolicited_write) { if (user_param->use_srq) { - if (ibv_post_srq_recv(ctx->srq, &ctx->rwr[wc[i].wr_id * user_param->recv_post_list],&bad_wr_recv)) { - fprintf(stderr, "Couldn't post recv SRQ. QP = %d:\n",(int)wc[i].wr_id); + if (ibv_post_srq_recv(ctx->srq, &ctx->rwr[wc[i].qp_num * user_param->recv_post_list],&bad_wr_recv)) { + fprintf(stderr, "Couldn't post recv SRQ. QP = %d:\n",(int)wc[i].qp_num); return_value = FAILURE; goto cleaning; } } else { - if (ibv_post_recv(ctx->qp[wc[i].wr_id],&ctx->rwr[wc[i].wr_id * user_param->recv_post_list],&bad_wr_recv)) { - fprintf(stderr, "Couldn't post recv Qp=%d\n",(int)wc[i].wr_id); + if (ibv_post_recv(ctx->qp[wc[i].qp_num],&ctx->rwr[wc[i].qp_num * user_param->recv_post_list],&bad_wr_recv)) { + fprintf(stderr, "Couldn't post recv Qp=%d\n",(int)wc[i].qp_num); return_value = 15; goto cleaning; } } - unused_recv_for_qp[wc[i].wr_id] -= user_param->recv_post_list; + unused_recv_for_qp[wc[i].qp_num] -= user_param->recv_post_list; } if (!user_param->use_srq && ctx->send_rcredit) { - rcnt_for_qp[wc[i].wr_id]++; - scredit_for_qp[wc[i].wr_id]++; + rcnt_for_qp[wc[i].qp_num]++; + scredit_for_qp[wc[i].qp_num]++; - if (scredit_for_qp[wc[i].wr_id] == ctx->credit_cnt) { + if (scredit_for_qp[wc[i].qp_num] == ctx->credit_cnt) { struct ibv_send_wr *bad_wr = NULL; - ctx->ctrl_buf[wc[i].wr_id] = rcnt_for_qp[wc[i].wr_id]; + ctx->ctrl_buf[wc[i].qp_num] = rcnt_for_qp[wc[i].qp_num]; - while (ccnt_for_qp[wc[i].wr_id] == user_param->tx_depth) { + while (ccnt_for_qp[wc[i].qp_num] == user_param->tx_depth) { int sne, j = 0; sne = ibv_poll_cq(ctx->send_cq,user_param->tx_depth,swc); @@ -4255,12 +4255,12 @@ int run_iter_bw_infinitely_server(struct pingpong_context *ctx, struct perftest_ for (j = 0; j < sne; j++) { if (swc[j].status != IBV_WC_SUCCESS) { fprintf(stderr, "Poll send CQ error status=%u qp %d credit=%lu scredit=%lu\n", - swc[j].status,(int)swc[j].wr_id, - rcnt_for_qp[swc[j].wr_id],ccnt_for_qp[swc[j].wr_id]); + swc[j].status,(int)swc[j].qp_num, + rcnt_for_qp[swc[j].qp_num],ccnt_for_qp[swc[j].qp_num]); return_value = FAILURE; goto cleaning; } - ccnt_for_qp[swc[j].wr_id]--; + ccnt_for_qp[swc[j].qp_num]--; } } else if (sne < 0) { @@ -4269,14 +4269,14 @@ int run_iter_bw_infinitely_server(struct pingpong_context *ctx, struct perftest_ goto cleaning; } } - if (ibv_post_send(ctx->qp[wc[i].wr_id],&ctx->ctrl_wr[wc[i].wr_id],&bad_wr)) { + if (ibv_post_send(ctx->qp[wc[i].qp_num],&ctx->ctrl_wr[wc[i].wr_id],&bad_wr)) { fprintf(stderr,"Couldn't post send qp %d credit=%lu\n", - (int)wc[i].wr_id,rcnt_for_qp[wc[i].wr_id]); + (int)wc[i].qp_num,rcnt_for_qp[wc[i].qp_num]); return_value = FAILURE; goto cleaning; } - ccnt_for_qp[wc[i].wr_id]++; - scredit_for_qp[wc[i].wr_id] = 0; + ccnt_for_qp[wc[i].qp_num]++; + scredit_for_qp[wc[i].qp_num] = 0; } } } @@ -4462,75 +4462,75 @@ int run_iter_bi(struct pingpong_context *ctx, goto cleaning; } - rcnt_for_qp[wc[i].wr_id]++; - unused_recv_for_qp[wc[i].wr_id]++; + rcnt_for_qp[wc[i].qp_num]++; + unused_recv_for_qp[wc[i].qp_num]++; totrcnt++; check_alive_data.current_totrcnt = totrcnt; if (user_param->test_type==DURATION && user_param->state == SAMPLE_STATE) { if (user_param->report_per_port) { - user_param->iters_per_port[user_param->port_by_qp[(int)wc[i].wr_id]]++; + user_param->iters_per_port[user_param->port_by_qp[(int)wc[i].qp_num]]++; } user_param->iters++; } - if ((user_param->test_type==DURATION || posted_per_qp[wc[i].wr_id] + user_param->recv_post_list <= user_param->iters) && - unused_recv_for_qp[wc[i].wr_id] >= user_param->recv_post_list && !user_param->use_unsolicited_write) { + if ((user_param->test_type==DURATION || posted_per_qp[wc[i].qp_num] + user_param->recv_post_list <= user_param->iters) && + unused_recv_for_qp[wc[i].qp_num] >= user_param->recv_post_list && !user_param->use_unsolicited_write) { if (user_param->use_srq) { - if (ibv_post_srq_recv(ctx->srq, &ctx->rwr[wc[i].wr_id * user_param->recv_post_list],&bad_wr_recv)) { - fprintf(stderr, "Couldn't post recv SRQ. QP = %d: counter=%d\n",(int)wc[i].wr_id,(int)totrcnt); + if (ibv_post_srq_recv(ctx->srq, &ctx->rwr[wc[i].qp_num * user_param->recv_post_list],&bad_wr_recv)) { + fprintf(stderr, "Couldn't post recv SRQ. QP = %d: counter=%d\n",(int)wc[i].qp_num,(int)totrcnt); return_value = FAILURE; goto cleaning; } } else { - if (ibv_post_recv(ctx->qp[wc[i].wr_id],&ctx->rwr[wc[i].wr_id * user_param->recv_post_list],&bad_wr_recv)) { - fprintf(stderr, "Couldn't post recv Qp=%d rcnt=%lu\n",(int)wc[i].wr_id,rcnt_for_qp[wc[i].wr_id]); + if (ibv_post_recv(ctx->qp[wc[i].qp_num],&ctx->rwr[wc[i].qp_num * user_param->recv_post_list],&bad_wr_recv)) { + fprintf(stderr, "Couldn't post recv Qp=%d rcnt=%lu\n",(int)wc[i].qp_num,rcnt_for_qp[wc[i].qp_num]); return_value = 15; goto cleaning; } } - unused_recv_for_qp[wc[i].wr_id] -= user_param->recv_post_list; + unused_recv_for_qp[wc[i].qp_num] -= user_param->recv_post_list; //coverity[uninit_use] if (SIZE(user_param->connection_type,user_param->size,!(int)user_param->machine) <= (ctx->cycle_buffer / 2) && user_param->recv_post_list == 1) { - increase_loc_addr(ctx->rwr[wc[i].wr_id].sg_list, + increase_loc_addr(ctx->rwr[wc[i].qp_num].sg_list, user_param->size, - posted_per_qp[wc[i].wr_id], - ctx->rx_buffer_addr[wc[i].wr_id],user_param->connection_type, + posted_per_qp[wc[i].qp_num], + ctx->rx_buffer_addr[wc[i].qp_num],user_param->connection_type, ctx->cache_line_size,ctx->cycle_buffer); } - posted_per_qp[wc[i].wr_id] += user_param->recv_post_list; + posted_per_qp[wc[i].qp_num] += user_param->recv_post_list; } if (ctx->send_rcredit) { - int credit_cnt = rcnt_for_qp[wc[i].wr_id]%user_param->rx_depth; + int credit_cnt = rcnt_for_qp[wc[i].qp_num]%user_param->rx_depth; if (credit_cnt%ctx->credit_cnt == 0) { int sne = 0; struct ibv_wc credit_wc; struct ibv_send_wr *bad_wr = NULL; - ctx->ctrl_buf[wc[i].wr_id] = rcnt_for_qp[wc[i].wr_id]; + ctx->ctrl_buf[wc[i].qp_num] = rcnt_for_qp[wc[i].qp_num]; - while ((ctx->scnt[wc[i].wr_id] + scredit_for_qp[wc[i].wr_id]) >= (user_param->tx_depth + ctx->ccnt[wc[i].wr_id])) { + while ((ctx->scnt[wc[i].qp_num] + scredit_for_qp[wc[i].qp_num]) >= (user_param->tx_depth + ctx->ccnt[wc[i].qp_num])) { sne = ibv_poll_cq(ctx->send_cq, 1, &credit_wc); if (sne > 0) { if (credit_wc.status != IBV_WC_SUCCESS) { fprintf(stderr, "Poll send CQ error status=%u qp %d credit=%lu scredit=%d\n", - credit_wc.status,(int)credit_wc.wr_id, - rcnt_for_qp[credit_wc.wr_id],scredit_for_qp[credit_wc.wr_id]); + credit_wc.status,(int)credit_wc.qp_num, + rcnt_for_qp[credit_wc.qp_num],scredit_for_qp[credit_wc.qp_num]); return_value = FAILURE; goto cleaning; } //coverity[uninit_use] if (credit_wc.opcode == IBV_WC_RDMA_WRITE) { - scredit_for_qp[credit_wc.wr_id]--; + scredit_for_qp[credit_wc.qp_num]--; tot_scredit--; } else { totccnt += user_param->cq_mod; - ctx->ccnt[(int)credit_wc.wr_id] += user_param->cq_mod; + ctx->ccnt[(int)credit_wc.qp_num] += user_param->cq_mod; if (user_param->noPeak == OFF) { if ((user_param->test_type == ITERATIONS && (totccnt > tot_iters))) @@ -4547,12 +4547,12 @@ int run_iter_bi(struct pingpong_context *ctx, goto cleaning; } } - if (ibv_post_send(ctx->qp[wc[i].wr_id],&ctx->ctrl_wr[wc[i].wr_id],&bad_wr)) { - fprintf(stderr,"Couldn't post send: qp%lu credit=%lu\n",wc[i].wr_id,rcnt_for_qp[wc[i].wr_id]); + if (ibv_post_send(ctx->qp[wc[i].qp_num],&ctx->ctrl_wr[wc[i].wr_id],&bad_wr)) { + fprintf(stderr,"Couldn't post send: qp%u credit=%lu\n",wc[i].qp_num,rcnt_for_qp[wc[i].qp_num]); return_value = FAILURE; goto cleaning; } - scredit_for_qp[wc[i].wr_id]++; + scredit_for_qp[wc[i].qp_num]++; tot_scredit++; } } @@ -4587,11 +4587,11 @@ int run_iter_bi(struct pingpong_context *ctx, return_value = FAILURE; goto cleaning; } - scredit_for_qp[wc_tx[i].wr_id]--; + scredit_for_qp[wc_tx[i].qp_num]--; tot_scredit--; } else { totccnt += user_param->cq_mod; - ctx->ccnt[(int)wc_tx[i].wr_id] += user_param->cq_mod; + ctx->ccnt[(int)wc_tx[i].qp_num] += user_param->cq_mod; if (user_param->noPeak == OFF) { @@ -4603,7 +4603,7 @@ int run_iter_bi(struct pingpong_context *ctx, if (user_param->test_type==DURATION && user_param->state == SAMPLE_STATE) { if (user_param->report_per_port) { - user_param->iters_per_port[user_param->port_by_qp[(int)wc[i].wr_id]] += user_param->cq_mod; + user_param->iters_per_port[user_param->port_by_qp[(int)wc[i].qp_num]] += user_param->cq_mod; } user_param->iters += user_param->cq_mod; } @@ -4822,12 +4822,12 @@ int run_iter_lat_write_imm(struct pingpong_context *ctx,struct perftest_paramete if ((user_param->test_type == DURATION || (rcnt + size_per_qp <= user_param->iters)) && !user_param->use_unsolicited_write) { if (user_param->use_srq) { - if (ibv_post_srq_recv(ctx->srq, &ctx->rwr[wc.wr_id], &bad_wr_recv)) { - fprintf(stderr, "Couldn't post recv SRQ. QP = %d: counter=%lu\n",(int)wc.wr_id, rcnt); + if (ibv_post_srq_recv(ctx->srq, &ctx->rwr[wc.qp_num], &bad_wr_recv)) { + fprintf(stderr, "Couldn't post recv SRQ. QP = %d: counter=%lu\n",(int)wc.qp_num, rcnt); return 1; } } else { - if (ibv_post_recv(ctx->qp[wc.wr_id], &ctx->rwr[wc.wr_id], &bad_wr_recv)) { + if (ibv_post_recv(ctx->qp[wc.qp_num], &ctx->rwr[wc.qp_num], &bad_wr_recv)) { fprintf(stderr, "Couldn't post recv: rcnt=%lu\n", rcnt); return 15; } @@ -5051,13 +5051,13 @@ int run_iter_lat_send(struct pingpong_context *ctx,struct perftest_parameters *u */ if (user_param->test_type == DURATION || (rcnt + size_per_qp <= user_param->iters)) { if (user_param->use_srq) { - if (ibv_post_srq_recv(ctx->srq, &ctx->rwr[wc.wr_id], &bad_wr_recv)) { - fprintf(stderr, "Couldn't post recv SRQ. QP = %d: counter=%lu\n",(int)wc.wr_id, rcnt); + if (ibv_post_srq_recv(ctx->srq, &ctx->rwr[wc.qp_num], &bad_wr_recv)) { + fprintf(stderr, "Couldn't post recv SRQ. QP = %d: counter=%lu\n",(int)wc.qp_num, rcnt); return 1; } } else { - if (ibv_post_recv(ctx->qp[wc.wr_id], &ctx->rwr[wc.wr_id], &bad_wr_recv)) { + if (ibv_post_recv(ctx->qp[wc.qp_num], &ctx->rwr[wc.qp_num], &bad_wr_recv)) { fprintf(stderr, "Couldn't post recv: rcnt=%lu\n", rcnt); return 15; } @@ -5166,7 +5166,7 @@ int run_iter_lat_burst_server(struct pingpong_context *ctx, struct perftest_para struct ibv_wc *wc = NULL; struct ibv_send_wr *bad_wr; struct ibv_recv_wr *bad_wr_recv = NULL; - int wc_id; + int qp_index; #ifdef HAVE_IBV_WR_API if (user_param->connection_type != RawEth) @@ -5181,7 +5181,7 @@ int run_iter_lat_burst_server(struct pingpong_context *ctx, struct perftest_para ne = ibv_poll_cq(ctx->recv_cq, user_param->burst_size, wc); if (ne > 0) { for (i = 0; i < ne; i++) { - wc_id = (int)wc[i].wr_id; + qp_index = (int)wc[i].qp_num; if (wc[i].status != IBV_WC_SUCCESS) { NOTIFY_COMP_ERROR_RECV(wc[i], rcnt); free(wc); @@ -5198,8 +5198,8 @@ int run_iter_lat_burst_server(struct pingpong_context *ctx, struct perftest_para scnt++; } - if (ibv_post_recv(ctx->qp[wc_id], &ctx->rwr[wc_id], &bad_wr_recv)) { - fprintf(stderr, "Couldn't post recv Qp=%d rcnt=%lu\n", wc_id, rcnt); + if (ibv_post_recv(ctx->qp[qp_index], &ctx->rwr[qp_index], &bad_wr_recv)) { + fprintf(stderr, "Couldn't post recv Qp=%d rcnt=%lu\n", qp_index, rcnt); free(wc); return FAILURE; } @@ -5242,7 +5242,6 @@ int run_iter_lat_burst(struct pingpong_context *ctx, struct perftest_parameters int ne, ns; int err = 0; int i = 0; - int wc_id; struct ibv_wc *wc; struct ibv_send_wr *bad_wr; int cpu_mhz; @@ -5256,6 +5255,7 @@ int run_iter_lat_burst(struct pingpong_context *ctx, struct perftest_parameters int burst_iter = 0; int is_sending_burst = 0; struct ibv_recv_wr *bad_wr_recv = NULL; + int qp_index; #ifdef HAVE_IBV_WR_API if (user_param->connection_type != RawEth) @@ -5337,7 +5337,7 @@ int run_iter_lat_burst(struct pingpong_context *ctx, struct perftest_parameters ne = ibv_poll_cq(ctx->recv_cq, CTX_POLL_BATCH, wc); if (ne > 0) { for (i = 0; i < ne; i++) { - wc_id = (int)wc[i].wr_id; + qp_index = (int)wc[i].qp_num; user_param->tcompleted[totrcnt] = get_cycles(); totrcnt++; if (wc[i].status != IBV_WC_SUCCESS) { @@ -5345,8 +5345,8 @@ int run_iter_lat_burst(struct pingpong_context *ctx, struct perftest_parameters return_value = FAILURE; goto cleaning; } - if (ibv_post_recv(ctx->qp[wc_id], &ctx->rwr[wc_id], &bad_wr_recv)) { - fprintf(stderr, "Couldn't post recv Qp=%d rcnt=%lu\n", wc_id, totrcnt); + if (ibv_post_recv(ctx->qp[qp_index], &ctx->rwr[qp_index], &bad_wr_recv)) { + fprintf(stderr, "Couldn't post recv Qp=%d rcnt=%lu\n", qp_index, totrcnt); return_value = FAILURE; goto cleaning; } @@ -5359,7 +5359,6 @@ int run_iter_lat_burst(struct pingpong_context *ctx, struct perftest_parameters ns = ibv_poll_cq(ctx->send_cq, user_param->burst_size, wc); if (ns > 0) { for (i = 0; i < ns; i++) { - wc_id = (int)wc[i].wr_id; if (wc[i].status != IBV_WC_SUCCESS) { NOTIFY_COMP_ERROR_SEND(wc[i], totscnt, totccnt); return_value = FAILURE ; diff --git a/src/perftest_resources.h b/src/perftest_resources.h index f03e4f3b..193ef064 100755 --- a/src/perftest_resources.h +++ b/src/perftest_resources.h @@ -105,12 +105,12 @@ #define NOTIFY_COMP_ERROR_SEND(wc,scnt,ccnt) \ { fprintf(stderr," Completion with error at client\n"); \ - fprintf(stderr," Failed status %d: wr_id %d syndrom 0x%x\n",wc.status,(int) wc.wr_id,wc.vendor_err); \ + fprintf(stderr," Failed status %d: qp_num %d wr_id %d syndrom 0x%x\n",wc.status,(int) wc.qp_num,(int) wc.wr_id,wc.vendor_err); \ fprintf(stderr, "scnt=%lu, ccnt=%lu\n",scnt, ccnt); } #define NOTIFY_COMP_ERROR_RECV(wc,rcnt) \ { fprintf(stderr," Completion with error at server\n"); \ - fprintf(stderr," Failed status %d: wr_id %d syndrom 0x%x\n",wc.status,(int) wc.wr_id,wc.vendor_err); \ + fprintf(stderr," Failed status %d: qp_num %d wr_id %d syndrom 0x%x\n",wc.status,(int) wc.qp_num,(int) wc.wr_id,wc.vendor_err); \ fprintf(stderr," rcnt=%lu\n",rcnt); } /* Macro to determine packet size in case of UD. The UD addition is for the GRH . */ diff --git a/src/raw_ethernet_resources.c b/src/raw_ethernet_resources.c index 7708fae0..c472f2ba 100755 --- a/src/raw_ethernet_resources.c +++ b/src/raw_ethernet_resources.c @@ -979,7 +979,7 @@ int run_iter_fw(struct pingpong_context *ctx,struct perftest_parameters *user_pa int firstRx = 1; int rwqe_sent = user_param->rx_depth; int return_value = 0; - int wc_id; + int qp_index; ALLOCATE(wc, struct ibv_wc, CTX_POLL_BATCH); ALLOCATE(wc_tx, struct ibv_wc, CTX_POLL_BATCH); ALLOCATE(rcnt_for_qp,uint64_t,user_param->num_of_qps); @@ -1068,13 +1068,13 @@ int run_iter_fw(struct pingpong_context *ctx,struct perftest_parameters *user_pa } for (i = 0; i < ne; i++) { - wc_id = (int)wc[i].wr_id; + qp_index = (int)wc[i].qp_num; if (wc[i].status != IBV_WC_SUCCESS) { NOTIFY_COMP_ERROR_RECV(wc[i], totrcnt); } - rcnt_for_qp[wc_id]++; + rcnt_for_qp[qp_index]++; totrcnt++; } } else if (ne < 0) { @@ -1087,13 +1087,13 @@ int run_iter_fw(struct pingpong_context *ctx,struct perftest_parameters *user_pa ne = ibv_poll_cq(ctx->send_cq, CTX_POLL_BATCH, wc_tx); if (ne > 0) { for (i = 0; i < ne; i++) { - wc_id = (int)wc[i].wr_id; + qp_index = (int)wc[i].qp_num; if (wc_tx[i].status != IBV_WC_SUCCESS) NOTIFY_COMP_ERROR_SEND(wc_tx[i], totscnt, totccnt); totccnt += user_param->cq_mod; - ctx->ccnt[wc_id] += user_param->cq_mod; + ctx->ccnt[qp_index] += user_param->cq_mod; if (user_param->noPeak == OFF) {