Exemplo n.º 1
0
/***********************************************************************
 *
 * 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;
}
Exemplo n.º 2
0
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);
}
Exemplo n.º 3
0
int main()
{
	bw_test();
	sleep(1000);
	return 0;
}