| 1686 | } |
| 1687 | |
| 1688 | static void krping_bw_test_client(struct krping_cb *cb) |
| 1689 | { |
| 1690 | struct ib_send_wr *bad_wr; |
| 1691 | struct ib_wc wc; |
| 1692 | int ret; |
| 1693 | |
| 1694 | cb->state = RDMA_READ_ADV; |
| 1695 | |
| 1696 | /* Send STAG/TO/Len to client */ |
| 1697 | krping_format_send(cb, cb->start_dma_addr); |
| 1698 | if (cb->state == ERROR) { |
| 1699 | printk(KERN_ERR PFX "krping_format_send failed\n"); |
| 1700 | return; |
| 1701 | } |
| 1702 | ret = ib_post_send(cb->qp, &cb->sq_wr, &bad_wr); |
| 1703 | if (ret) { |
| 1704 | printk(KERN_ERR PFX "post send error %d\n", ret); |
| 1705 | return; |
| 1706 | } |
| 1707 | |
| 1708 | /* Spin waiting for send completion */ |
| 1709 | while ((ret = ib_poll_cq(cb->cq, 1, &wc) == 0)); |
| 1710 | if (ret < 0) { |
| 1711 | printk(KERN_ERR PFX "poll error %d\n", ret); |
| 1712 | return; |
| 1713 | } |
| 1714 | if (wc.status) { |
| 1715 | printk(KERN_ERR PFX "send completion error %d\n", wc.status); |
| 1716 | return; |
| 1717 | } |
| 1718 | |
| 1719 | /* Spin waiting for server's Start STAG/TO/Len */ |
| 1720 | while (cb->state < RDMA_WRITE_ADV) { |
| 1721 | krping_cq_event_handler(cb->cq, cb); |
| 1722 | } |
| 1723 | |
| 1724 | bw_test(cb); |
| 1725 | } |
| 1726 | |
| 1727 | /* |
| 1728 | * Manual qp flush test |
no test coverage detected