ib_conn
struct iser_device *device = iser_conn->ib_conn.device;
struct iser_device *device = iser_conn->ib_conn.device;
struct ib_conn *ib_conn;
ib_conn = &iser_conn->ib_conn;
ib_dev = ib_conn->device->ib_device;
if (ib_conn->pi_support) {
if (!iser_conn || !iser_conn->ib_conn.cma_id)
&iser_conn->ib_conn.cma_id->route.addr.dst_addr,
struct ib_conn;
struct ib_conn ib_conn;
int iser_post_send(struct ib_conn *ib_conn, struct iser_tx_desc *tx_desc);
int iser_alloc_fastreg_pool(struct ib_conn *ib_conn,
void iser_free_fastreg_pool(struct ib_conn *ib_conn);
to_iser_conn(struct ib_conn *ib_conn)
return container_of(ib_conn, struct iser_conn, ib_conn);
struct iser_device *device = iser_conn->ib_conn.device;
struct iser_device *device = iser_conn->ib_conn.device;
struct iser_device *device = iser_conn->ib_conn.device;
struct ib_conn *ib_conn = &iser_conn->ib_conn;
struct iser_device *device = ib_conn->device;
if (iser_alloc_fastreg_pool(ib_conn, session->scsi_cmds_max,
iser_free_fastreg_pool(ib_conn);
struct ib_conn *ib_conn = &iser_conn->ib_conn;
struct iser_device *device = ib_conn->device;
iser_free_fastreg_pool(ib_conn);
err = iser_post_send(&iser_conn->ib_conn, tx_desc);
err = iser_post_send(&iser_conn->ib_conn, tx_desc);
device = iser_conn->ib_conn.device;
err = iser_post_send(&iser_conn->ib_conn, mdesc);
struct ib_conn *ib_conn = wc->qp->qp_context;
struct iser_conn *iser_conn = to_iser_conn(ib_conn);
ib_dma_sync_single_for_cpu(ib_conn->device->ib_device,
ib_dma_sync_single_for_device(ib_conn->device->ib_device,
struct ib_conn *ib_conn = wc->qp->qp_context;
struct iser_conn *iser_conn = to_iser_conn(ib_conn);
ib_dma_sync_single_for_cpu(ib_conn->device->ib_device,
ib_dma_sync_single_for_device(ib_conn->device->ib_device,
struct ib_conn *ib_conn = wc->qp->qp_context;
struct iser_device *device = ib_conn->device;
dev = iser_task->iser_conn->ib_conn.device->ib_device;
iser_reg_desc_put_fr(&iser_task->iser_conn->ib_conn, reg->desc);
struct ib_cqe *cqe = &iser_task->iser_conn->ib_conn.reg_cqe;
struct ib_cqe *cqe = &iser_task->iser_conn->ib_conn.reg_cqe;
struct ib_conn *ib_conn = &task->iser_conn->ib_conn;
struct iser_device *device = ib_conn->device;
desc = iser_reg_desc_get_fr(ib_conn);
iser_reg_desc_put_fr(ib_conn, desc);
static struct iser_fr_desc *iser_reg_desc_get_fr(struct ib_conn *ib_conn)
struct iser_fr_pool *fr_pool = &ib_conn->fr_pool;
static void iser_reg_desc_put_fr(struct ib_conn *ib_conn,
struct iser_fr_pool *fr_pool = &ib_conn->fr_pool;
dev = iser_task->iser_conn->ib_conn.device->ib_device;
int iser_alloc_fastreg_pool(struct ib_conn *ib_conn,
struct iser_device *device = ib_conn->device;
struct iser_fr_pool *fr_pool = &ib_conn->fr_pool;
ib_conn->pi_support, size);
iser_free_fastreg_pool(ib_conn);
void iser_free_fastreg_pool(struct ib_conn *ib_conn)
struct iser_fr_pool *fr_pool = &ib_conn->fr_pool;
iser_info("freeing conn %p fr pool\n", ib_conn);
static int iser_create_ib_conn_res(struct ib_conn *ib_conn)
struct iser_conn *iser_conn = to_iser_conn(ib_conn);
BUG_ON(ib_conn->device == NULL);
device = ib_conn->device;
if (ib_conn->pi_support)
ib_conn->cq = ib_cq_pool_get(ib_dev, cq_size, -1, IB_POLL_SOFTIRQ);
if (IS_ERR(ib_conn->cq)) {
ret = PTR_ERR(ib_conn->cq);
ib_conn->cq_size = cq_size;
init_attr.qp_context = (void *)ib_conn;
init_attr.send_cq = ib_conn->cq;
init_attr.recv_cq = ib_conn->cq;
if (ib_conn->pi_support)
ret = rdma_create_qp(ib_conn->cma_id, device->pd, &init_attr);
ib_conn->qp = ib_conn->cma_id->qp;
iser_info("setting conn %p cma_id %p qp %p max_send_wr %d\n", ib_conn,
ib_conn->cma_id, ib_conn->cma_id->qp, max_send_wr);
ib_cq_pool_put(ib_conn->cq, ib_conn->cq_size);
struct ib_conn *ib_conn = &iser_conn->ib_conn;
struct iser_device *device = ib_conn->device;
iser_conn, ib_conn->cma_id, ib_conn->qp);
if (ib_conn->qp) {
rdma_destroy_qp(ib_conn->cma_id);
ib_cq_pool_put(ib_conn->cq, ib_conn->cq_size);
ib_conn->qp = NULL;
ib_conn->device = NULL;
struct ib_conn *ib_conn = &iser_conn->ib_conn;
if (ib_conn->cma_id) {
rdma_destroy_id(ib_conn->cma_id);
ib_conn->cma_id = NULL;
struct ib_conn *ib_conn = &iser_conn->ib_conn;
if (ib_conn->cma_id) {
err = rdma_disconnect(ib_conn->cma_id);
ib_drain_qp(ib_conn->qp);
struct iser_device *device = iser_conn->ib_conn.device;
if (iser_conn->ib_conn.pi_support)
struct ib_conn *ib_conn;
ib_conn = &iser_conn->ib_conn;
ib_conn->device = device;
dev_name(&ib_conn->device->ib_device->dev));
ib_conn->pi_support = false;
ib_conn->pi_support = true;
struct ib_conn *ib_conn = &iser_conn->ib_conn;
struct ib_device *ib_dev = ib_conn->device->ib_device;
ret = iser_create_ib_conn_res(ib_conn);
iser_conn->ib_conn.cma_id = NULL;
struct ib_conn *ib_conn = &iser_conn->ib_conn;
ib_conn->reg_cqe.done = iser_reg_comp;
struct ib_conn *ib_conn = &iser_conn->ib_conn;
ib_conn->device = NULL;
ib_conn->cma_id = rdma_create_id(&init_net, iser_cma_handler,
if (IS_ERR(ib_conn->cma_id)) {
err = PTR_ERR(ib_conn->cma_id);
err = rdma_resolve_addr(ib_conn->cma_id, src_addr, dst_addr, 1000);
ib_conn->cma_id = NULL;
struct ib_conn *ib_conn = &iser_conn->ib_conn;
desc->sge.lkey = ib_conn->device->pd->local_dma_lkey;
ret = ib_post_recv(ib_conn->qp, &wr, NULL);
struct ib_conn *ib_conn = &iser_conn->ib_conn;
ret = ib_post_recv(ib_conn->qp, &wr, NULL);
int iser_post_send(struct ib_conn *ib_conn, struct iser_tx_desc *tx_desc)
ib_dma_sync_single_for_device(ib_conn->device->ib_device,
ret = ib_post_send(ib_conn->qp, first_wr, NULL);