/*********************************************************************** * * Function: cmd_bwtest * * Purpose: Performs memory bandwidth tests * * Processing: * See function. * * Parameters: None * * Outputs: None * * Returns: TRUE if the command was good, otherwise FALSE * * Notes: None * **********************************************************************/ static BOOL_32 cmd_bwtest(void) { UNS_32 hexaddr1, hexaddr2, bytes, loops; /* Get arguments */ hexaddr1 = cmd_get_field_val(1); hexaddr2 = cmd_get_field_val(2); bytes = cmd_get_field_val(3); loops = cmd_get_field_val(4); bw_test(hexaddr1, hexaddr2, bytes, loops); return TRUE; }
static void krping_bw_test_client(struct krping_cb *cb) { struct ib_send_wr *bad_wr; struct ib_wc wc; int ret; cb->state = RDMA_READ_ADV; /* Send STAG/TO/Len to client */ if (cb->dma_mr) krping_format_send(cb, cb->start_addr, cb->dma_mr); else krping_format_send(cb, cb->start_addr, cb->start_mr); ret = ib_post_send(cb->qp, &cb->sq_wr, &bad_wr); if (ret) { log(LOG_ERR, "post send error %d\n", ret); return; } /* Spin waiting for send completion */ while ((ret = ib_poll_cq(cb->cq, 1, &wc) == 0)); if (ret < 0) { log(LOG_ERR, "poll error %d\n", ret); return; } if (wc.status) { log(LOG_ERR, "send completion error %d\n", wc.status); return; } /* Spin waiting for server's Start STAG/TO/Len */ while (cb->state < RDMA_WRITE_ADV) { krping_cq_event_handler(cb->cq, cb); } bw_test(cb); }
int main() { bw_test(); sleep(1000); return 0; }