sys/dev/iser/icl_iser.c
130
struct iser_conn *iser_conn = icl_to_iser_conn(ic);
sys/dev/iser/icl_iser.c
136
memcpy(iser_conn->login_req_buf, addr, len);
sys/dev/iser/icl_iser.c
169
struct iser_conn *iser_conn = icl_to_iser_conn(ic);
sys/dev/iser/icl_iser.c
177
iser_pdu->iser_conn = iser_conn;
sys/dev/iser/icl_iser.c
245
struct iser_conn *iser_conn = icl_to_iser_conn(ic);
sys/dev/iser/icl_iser.c
249
if (iser_conn->state != ISER_CONN_UP)
sys/dev/iser/icl_iser.c
252
ret = iser_initialize_headers(iser_pdu, iser_conn);
sys/dev/iser/icl_iser.c
259
ret = iser_send_control(iser_conn, iser_pdu);
sys/dev/iser/icl_iser.c
263
ret = iser_send_command(iser_conn, iser_pdu);
sys/dev/iser/icl_iser.c
272
struct iser_conn *iser_conn;
sys/dev/iser/icl_iser.c
277
iser_conn = (struct iser_conn *)kobj_create(&icl_iser_class, M_ICL_ISER, M_WAITOK | M_ZERO);
sys/dev/iser/icl_iser.c
278
if (!iser_conn) {
sys/dev/iser/icl_iser.c
284
cv_init(&iser_conn->up_cv, "iser_cv");
sys/dev/iser/icl_iser.c
285
sx_init(&iser_conn->state_mutex, "iser_conn_state_mutex");
sys/dev/iser/icl_iser.c
286
mtx_init(&iser_conn->ib_conn.beacon.flush_lock, "iser_flush_lock", NULL, MTX_DEF);
sys/dev/iser/icl_iser.c
287
cv_init(&iser_conn->ib_conn.beacon.flush_cv, "flush_cv");
sys/dev/iser/icl_iser.c
288
mtx_init(&iser_conn->ib_conn.lock, "iser_lock", NULL, MTX_DEF);
sys/dev/iser/icl_iser.c
290
ic = &iser_conn->icl_conn;
sys/dev/iser/icl_iser.c
303
struct iser_conn *iser_conn = icl_to_iser_conn(ic);
sys/dev/iser/icl_iser.c
306
mtx_destroy(&iser_conn->ib_conn.lock);
sys/dev/iser/icl_iser.c
307
cv_destroy(&iser_conn->ib_conn.beacon.flush_cv);
sys/dev/iser/icl_iser.c
308
mtx_destroy(&iser_conn->ib_conn.beacon.flush_lock);
sys/dev/iser/icl_iser.c
309
sx_destroy(&iser_conn->state_mutex);
sys/dev/iser/icl_iser.c
310
cv_destroy(&iser_conn->up_cv);
sys/dev/iser/icl_iser.c
311
kobj_delete((struct kobj *)iser_conn, M_ICL_ISER);
sys/dev/iser/icl_iser.c
318
struct iser_conn *iser_conn = icl_to_iser_conn(ic);
sys/dev/iser/icl_iser.c
321
sx_xlock(&iser_conn->state_mutex);
sys/dev/iser/icl_iser.c
322
if (iser_conn->state != ISER_CONN_UP) {
sys/dev/iser/icl_iser.c
325
iser_conn, iser_conn->state);
sys/dev/iser/icl_iser.c
329
error = iser_alloc_rx_descriptors(iser_conn, ic->ic_maxtags);
sys/dev/iser/icl_iser.c
333
error = iser_post_recvm(iser_conn, iser_conn->min_posted_rx);
sys/dev/iser/icl_iser.c
337
iser_conn->handoff_done = true;
sys/dev/iser/icl_iser.c
339
sx_xunlock(&iser_conn->state_mutex);
sys/dev/iser/icl_iser.c
343
iser_free_rx_descriptors(iser_conn);
sys/dev/iser/icl_iser.c
345
sx_xunlock(&iser_conn->state_mutex);
sys/dev/iser/icl_iser.c
356
struct iser_conn *iser_conn = icl_to_iser_conn(ic);
sys/dev/iser/icl_iser.c
357
struct ib_conn *ib_conn = &iser_conn->ib_conn;
sys/dev/iser/icl_iser.c
358
struct iser_conn *curr, *tmp;
sys/dev/iser/icl_iser.c
367
if (iser_conn == curr) {
sys/dev/iser/icl_iser.c
368
ISER_WARN("found iser_conn %p", iser_conn);
sys/dev/iser/icl_iser.c
369
list_del(&iser_conn->conn_list);
sys/dev/iser/icl_iser.c
378
sx_xlock(&iser_conn->state_mutex);
sys/dev/iser/icl_iser.c
379
iser_free_ib_conn_res(iser_conn, true);
sys/dev/iser/icl_iser.c
380
sx_xunlock(&iser_conn->state_mutex);
sys/dev/iser/icl_iser.c
392
struct iser_conn *iser_conn = icl_to_iser_conn(ic);
sys/dev/iser/icl_iser.c
394
ISER_INFO("closing conn %p", iser_conn);
sys/dev/iser/icl_iser.c
396
sx_xlock(&iser_conn->state_mutex);
sys/dev/iser/icl_iser.c
402
if (!iser_conn_terminate(iser_conn) && iser_conn->state == ISER_CONN_PENDING)
sys/dev/iser/icl_iser.c
403
cv_signal(&iser_conn->up_cv);
sys/dev/iser/icl_iser.c
404
sx_xunlock(&iser_conn->state_mutex);
sys/dev/iser/icl_iser.c
412
struct iser_conn *iser_conn = icl_to_iser_conn(ic);
sys/dev/iser/icl_iser.c
413
struct ib_conn *ib_conn = &iser_conn->ib_conn;
sys/dev/iser/icl_iser.c
418
sx_xlock(&iser_conn->state_mutex);
sys/dev/iser/icl_iser.c
421
iser_conn->handoff_done = false;
sys/dev/iser/icl_iser.c
423
iser_conn->state = ISER_CONN_PENDING;
sys/dev/iser/icl_iser.c
425
ib_conn->cma_id = rdma_create_id(&init_net, iser_cma_handler, (void *)iser_conn,
sys/dev/iser/icl_iser.c
441
ISER_DBG("before cv_wait: %p", iser_conn);
sys/dev/iser/icl_iser.c
442
cv_wait(&iser_conn->up_cv, &iser_conn->state_mutex);
sys/dev/iser/icl_iser.c
443
ISER_DBG("after cv_wait: %p", iser_conn);
sys/dev/iser/icl_iser.c
445
if (iser_conn->state != ISER_CONN_UP) {
sys/dev/iser/icl_iser.c
450
err = iser_alloc_login_buf(iser_conn);
sys/dev/iser/icl_iser.c
453
sx_xunlock(&iser_conn->state_mutex);
sys/dev/iser/icl_iser.c
456
list_add(&iser_conn->conn_list, &ig.connlist);
sys/dev/iser/icl_iser.c
464
sx_xunlock(&iser_conn->state_mutex);
sys/dev/iser/icl_iser.c
486
struct iser_device *device = iser_pdu->iser_conn->ib_conn.device;
sys/dev/iser/icl_iser.c
75
DEFINE_CLASS(icl_iser, icl_iser_methods, sizeof(struct iser_conn));
sys/dev/iser/icl_iser.c
89
iser_initialize_headers(struct icl_iser_pdu *pdu, struct iser_conn *iser_conn)
sys/dev/iser/icl_iser.c
92
struct iser_device *device = iser_conn->ib_conn.device;
sys/dev/iser/icl_iser.h
153
container_of(ic, struct iser_conn, icl_conn)
sys/dev/iser/icl_iser.h
255
struct iser_conn;
sys/dev/iser/icl_iser.h
306
struct iser_conn *iser_conn;
sys/dev/iser/icl_iser.h
472
iser_create_send_desc(struct iser_conn *, struct iser_tx_desc *);
sys/dev/iser/icl_iser.h
475
iser_post_recvl(struct iser_conn *);
sys/dev/iser/icl_iser.h
478
iser_post_recvm(struct iser_conn *, int);
sys/dev/iser/icl_iser.h
481
iser_alloc_login_buf(struct iser_conn *iser_conn);
sys/dev/iser/icl_iser.h
484
iser_free_login_buf(struct iser_conn *iser_conn);
sys/dev/iser/icl_iser.h
503
iser_alloc_rx_descriptors(struct iser_conn *, int);
sys/dev/iser/icl_iser.h
506
iser_free_rx_descriptors(struct iser_conn *);
sys/dev/iser/icl_iser.h
509
iser_initialize_headers(struct icl_iser_pdu *, struct iser_conn *);
sys/dev/iser/icl_iser.h
512
iser_send_control(struct iser_conn *, struct icl_iser_pdu *);
sys/dev/iser/icl_iser.h
515
iser_send_command(struct iser_conn *, struct icl_iser_pdu *);
sys/dev/iser/icl_iser.h
535
iser_conn_terminate(struct iser_conn *);
sys/dev/iser/icl_iser.h
538
iser_free_ib_conn_res(struct iser_conn *, bool);
sys/dev/iser/iser_initiator.c
102
iser_create_send_desc(struct iser_conn *iser_conn,
sys/dev/iser/iser_initiator.c
105
struct iser_device *device = iser_conn->ib_conn.device;
sys/dev/iser/iser_initiator.c
122
iser_free_login_buf(struct iser_conn *iser_conn)
sys/dev/iser/iser_initiator.c
124
struct iser_device *device = iser_conn->ib_conn.device;
sys/dev/iser/iser_initiator.c
126
if (!iser_conn->login_buf)
sys/dev/iser/iser_initiator.c
129
if (iser_conn->login_req_dma)
sys/dev/iser/iser_initiator.c
131
iser_conn->login_req_dma,
sys/dev/iser/iser_initiator.c
134
if (iser_conn->login_resp_dma)
sys/dev/iser/iser_initiator.c
136
iser_conn->login_resp_dma,
sys/dev/iser/iser_initiator.c
139
free(iser_conn->login_buf, M_ISER_INITIATOR);
sys/dev/iser/iser_initiator.c
142
iser_conn->login_req_dma = 0;
sys/dev/iser/iser_initiator.c
143
iser_conn->login_resp_dma = 0;
sys/dev/iser/iser_initiator.c
144
iser_conn->login_buf = NULL;
sys/dev/iser/iser_initiator.c
148
iser_alloc_login_buf(struct iser_conn *iser_conn)
sys/dev/iser/iser_initiator.c
150
struct iser_device *device = iser_conn->ib_conn.device;
sys/dev/iser/iser_initiator.c
155
iser_conn->login_buf = malloc(ISCSI_DEF_MAX_RECV_SEG_LEN + ISER_RX_LOGIN_SIZE,
sys/dev/iser/iser_initiator.c
158
if (!iser_conn->login_buf)
sys/dev/iser/iser_initiator.c
161
iser_conn->login_req_buf = iser_conn->login_buf;
sys/dev/iser/iser_initiator.c
162
iser_conn->login_resp_buf = iser_conn->login_buf +
sys/dev/iser/iser_initiator.c
165
iser_conn->login_req_dma = ib_dma_map_single(device->ib_device,
sys/dev/iser/iser_initiator.c
166
iser_conn->login_req_buf,
sys/dev/iser/iser_initiator.c
170
iser_conn->login_resp_dma = ib_dma_map_single(device->ib_device,
sys/dev/iser/iser_initiator.c
171
iser_conn->login_resp_buf,
sys/dev/iser/iser_initiator.c
176
iser_conn->login_req_dma);
sys/dev/iser/iser_initiator.c
178
iser_conn->login_resp_dma);
sys/dev/iser/iser_initiator.c
182
iser_conn->login_req_dma = 0;
sys/dev/iser/iser_initiator.c
184
iser_conn->login_resp_dma = 0;
sys/dev/iser/iser_initiator.c
191
iser_free_login_buf(iser_conn);
sys/dev/iser/iser_initiator.c
198
int iser_alloc_rx_descriptors(struct iser_conn *iser_conn, int cmds_max)
sys/dev/iser/iser_initiator.c
204
struct ib_conn *ib_conn = &iser_conn->ib_conn;
sys/dev/iser/iser_initiator.c
207
iser_conn->qp_max_recv_dtos = cmds_max;
sys/dev/iser/iser_initiator.c
208
iser_conn->min_posted_rx = iser_conn->qp_max_recv_dtos >> 2;
sys/dev/iser/iser_initiator.c
214
iser_conn->num_rx_descs = cmds_max;
sys/dev/iser/iser_initiator.c
215
iser_conn->rx_descs = malloc(iser_conn->num_rx_descs *
sys/dev/iser/iser_initiator.c
218
if (!iser_conn->rx_descs)
sys/dev/iser/iser_initiator.c
221
rx_desc = iser_conn->rx_descs;
sys/dev/iser/iser_initiator.c
223
for (i = 0; i < iser_conn->qp_max_recv_dtos; i++, rx_desc++) {
sys/dev/iser/iser_initiator.c
237
iser_conn->rx_desc_head = 0;
sys/dev/iser/iser_initiator.c
242
rx_desc = iser_conn->rx_descs;
sys/dev/iser/iser_initiator.c
246
free(iser_conn->rx_descs, M_ISER_INITIATOR);
sys/dev/iser/iser_initiator.c
247
iser_conn->rx_descs = NULL;
sys/dev/iser/iser_initiator.c
257
iser_free_rx_descriptors(struct iser_conn *iser_conn)
sys/dev/iser/iser_initiator.c
261
struct ib_conn *ib_conn = &iser_conn->ib_conn;
sys/dev/iser/iser_initiator.c
266
rx_desc = iser_conn->rx_descs;
sys/dev/iser/iser_initiator.c
267
for (i = 0; i < iser_conn->qp_max_recv_dtos; i++, rx_desc++)
sys/dev/iser/iser_initiator.c
271
free(iser_conn->rx_descs, M_ISER_INITIATOR);
sys/dev/iser/iser_initiator.c
274
iser_conn->rx_descs = NULL;
sys/dev/iser/iser_initiator.c
358
iser_send_command(struct iser_conn *iser_conn,
sys/dev/iser/iser_initiator.c
366
u8 sig_count = ++iser_conn->ib_conn.sig_count;
sys/dev/iser/iser_initiator.c
370
iser_create_send_desc(iser_conn, tx_desc);
sys/dev/iser/iser_initiator.c
397
err = iser_post_send(&iser_conn->ib_conn, tx_desc,
sys/dev/iser/iser_initiator.c
403
ISER_ERR("iser_conn %p itt %u len %u err %d", iser_conn,
sys/dev/iser/iser_initiator.c
411
iser_send_control(struct iser_conn *iser_conn,
sys/dev/iser/iser_initiator.c
423
iser_create_send_desc(iser_conn, mdesc);
sys/dev/iser/iser_initiator.c
425
device = iser_conn->ib_conn.device;
sys/dev/iser/iser_initiator.c
430
iser_conn->login_req_dma, datalen,
sys/dev/iser/iser_initiator.c
434
iser_conn->login_req_dma, datalen,
sys/dev/iser/iser_initiator.c
437
tx_dsg->addr = iser_conn->login_req_dma;
sys/dev/iser/iser_initiator.c
444
if (!iser_conn->handoff_done) {
sys/dev/iser/iser_initiator.c
445
err = iser_post_recvl(iser_conn);
sys/dev/iser/iser_initiator.c
450
err = iser_post_send(&iser_conn->ib_conn, mdesc, true);
sys/dev/iser/iser_initiator.c
455
ISER_ERR("conn %p failed err %d", iser_conn, err);
sys/dev/iser/iser_initiator.c
469
struct iser_conn *iser_conn = container_of(ib_conn, struct iser_conn,
sys/dev/iser/iser_initiator.c
471
struct icl_conn *ic = &iser_conn->icl_conn;
sys/dev/iser/iser_initiator.c
479
if ((char *)rx_desc == iser_conn->login_resp_buf) {
sys/dev/iser/iser_initiator.c
480
rx_dma = iser_conn->login_resp_dma;
sys/dev/iser/iser_initiator.c
512
if (rx_dma == iser_conn->login_resp_dma)
sys/dev/iser/iser_initiator.c
516
if (outstanding + iser_conn->min_posted_rx <= iser_conn->qp_max_recv_dtos) {
sys/dev/iser/iser_initiator.c
517
count = min(iser_conn->qp_max_recv_dtos - outstanding,
sys/dev/iser/iser_initiator.c
518
iser_conn->min_posted_rx);
sys/dev/iser/iser_initiator.c
519
err = iser_post_recvm(iser_conn, count);
sys/dev/iser/iser_initiator.c
533
struct iser_conn *iser_conn = iser_pdu->iser_conn;
sys/dev/iser/iser_initiator.c
536
iser_pdu_free(&iser_conn->icl_conn, &iser_pdu->icl_pdu);
sys/dev/iser/iser_memory.c
104
dev = iser_pdu->iser_conn->ib_conn.device->ib_device;
sys/dev/iser/iser_memory.c
156
struct ib_conn *ib_conn = &iser_pdu->iser_conn->ib_conn;
sys/dev/iser/iser_memory.c
220
struct ib_conn *ib_conn = &iser_pdu->iser_conn->ib_conn;
sys/dev/iser/iser_memory.c
262
iser_reg_desc_put(&iser_pdu->iser_conn->ib_conn,
sys/dev/iser/iser_memory.c
276
dev = iser_pdu->iser_conn->ib_conn.device->ib_device;
sys/dev/iser/iser_verbs.c
100
ISER_DBG("conn %p got recv comp error", iser_conn);
sys/dev/iser/iser_verbs.c
104
iser_conn->icl_conn.ic_error(&iser_conn->icl_conn);
sys/dev/iser/iser_verbs.c
135
struct iser_conn *iser_conn = container_of(ib_conn, struct iser_conn,
sys/dev/iser/iser_verbs.c
139
iser_conn, (unsigned long long)wc->wr_id,
sys/dev/iser/iser_verbs.c
143
iser_conn, (unsigned long long)wc->wr_id);
sys/dev/iser/iser_verbs.c
149
ISER_DBG("conn %p got ISER_BEACON_WRID", iser_conn);
sys/dev/iser/iser_verbs.c
419
struct iser_conn *iser_conn;
sys/dev/iser/iser_verbs.c
426
iser_conn = container_of(ib_conn, struct iser_conn, ib_conn);
sys/dev/iser/iser_verbs.c
455
iser_conn->max_cmds =
sys/dev/iser/iser_verbs.c
459
iser_conn->max_cmds =
sys/dev/iser/iser_verbs.c
539
static int iser_conn_state_comp_exch(struct iser_conn *iser_conn,
sys/dev/iser/iser_verbs.c
545
ret = (iser_conn->state == comp);
sys/dev/iser/iser_verbs.c
547
iser_conn->state = exch;
sys/dev/iser/iser_verbs.c
564
iser_free_ib_conn_res(struct iser_conn *iser_conn,
sys/dev/iser/iser_verbs.c
567
struct ib_conn *ib_conn = &iser_conn->ib_conn;
sys/dev/iser/iser_verbs.c
571
iser_conn, ib_conn->cma_id, ib_conn->qp);
sys/dev/iser/iser_verbs.c
582
if (iser_conn->login_buf)
sys/dev/iser/iser_verbs.c
583
iser_free_login_buf(iser_conn);
sys/dev/iser/iser_verbs.c
585
if (iser_conn->rx_descs)
sys/dev/iser/iser_verbs.c
586
iser_free_rx_descriptors(iser_conn);
sys/dev/iser/iser_verbs.c
600
iser_conn_terminate(struct iser_conn *iser_conn)
sys/dev/iser/iser_verbs.c
602
struct ib_conn *ib_conn = &iser_conn->ib_conn;
sys/dev/iser/iser_verbs.c
608
if (!iser_conn_state_comp_exch(iser_conn, ISER_CONN_UP,
sys/dev/iser/iser_verbs.c
612
ISER_INFO("iser_conn %p state %d\n", iser_conn, iser_conn->state);
sys/dev/iser/iser_verbs.c
638
iser_conn, err);
sys/dev/iser/iser_verbs.c
64
is_iser_tx_desc(struct iser_conn *iser_conn, void *wr_id)
sys/dev/iser/iser_verbs.c
652
ISER_DBG("before send cv_wait: %p", iser_conn);
sys/dev/iser/iser_verbs.c
654
ISER_DBG("after send cv_wait: %p", iser_conn);
sys/dev/iser/iser_verbs.c
66
void *start = iser_conn->rx_descs;
sys/dev/iser/iser_verbs.c
666
ISER_DBG("before recv cv_wait: %p", iser_conn);
sys/dev/iser/iser_verbs.c
669
ISER_DBG("after recv cv_wait: %p", iser_conn);
sys/dev/iser/iser_verbs.c
67
u64 len = iser_conn->num_rx_descs * sizeof(*iser_conn->rx_descs);
sys/dev/iser/iser_verbs.c
682
struct iser_conn *iser_conn;
sys/dev/iser/iser_verbs.c
684
iser_conn = cma_id->context;
sys/dev/iser/iser_verbs.c
686
ISER_ERR("conn %p", iser_conn);
sys/dev/iser/iser_verbs.c
688
iser_conn->state = ISER_CONN_TERMINATING;
sys/dev/iser/iser_verbs.c
690
cv_signal(&iser_conn->up_cv);
sys/dev/iser/iser_verbs.c
700
struct iser_conn *iser_conn;
sys/dev/iser/iser_verbs.c
704
iser_conn = cma_id->context;
sys/dev/iser/iser_verbs.c
706
ib_conn = &iser_conn->ib_conn;
sys/dev/iser/iser_verbs.c
710
iser_conn);
sys/dev/iser/iser_verbs.c
719
ISER_ERR("conn %p resolve route failed: %d", iser_conn, ret);
sys/dev/iser/iser_verbs.c
734
struct iser_conn *iser_conn = cma_id->context;
sys/dev/iser/iser_verbs.c
735
struct ib_conn *ib_conn = &iser_conn->ib_conn;
sys/dev/iser/iser_verbs.c
74
return ((uintptr_t)wr_id != (uintptr_t)iser_conn->login_resp_buf);
sys/dev/iser/iser_verbs.c
760
ISER_ERR("conn %p failure connecting: %d", iser_conn, ret);
sys/dev/iser/iser_verbs.c
775
struct iser_conn *iser_conn;
sys/dev/iser/iser_verbs.c
779
iser_conn = cma_id->context;
sys/dev/iser/iser_verbs.c
786
iser_conn->state = ISER_CONN_UP;
sys/dev/iser/iser_verbs.c
788
cv_signal(&iser_conn->up_cv);
sys/dev/iser/iser_verbs.c
797
struct iser_conn *iser_conn = cma_id->context;
sys/dev/iser/iser_verbs.c
799
if (iser_conn_terminate(iser_conn))
sys/dev/iser/iser_verbs.c
800
iser_conn->icl_conn.ic_error(&iser_conn->icl_conn);
sys/dev/iser/iser_verbs.c
807
struct iser_conn *iser_conn;
sys/dev/iser/iser_verbs.c
810
iser_conn = cma_id->context;
sys/dev/iser/iser_verbs.c
814
sx_xlock(&iser_conn->state_mutex);
sys/dev/iser/iser_verbs.c
841
sx_xunlock(&iser_conn->state_mutex);
sys/dev/iser/iser_verbs.c
847
iser_post_recvl(struct iser_conn *iser_conn)
sys/dev/iser/iser_verbs.c
851
struct ib_conn *ib_conn = &iser_conn->ib_conn;
sys/dev/iser/iser_verbs.c
855
sge.addr = iser_conn->login_resp_dma;
sys/dev/iser/iser_verbs.c
859
rx_wr.wr_id = (uintptr_t)iser_conn->login_resp_buf;
sys/dev/iser/iser_verbs.c
875
iser_post_recvm(struct iser_conn *iser_conn, int count)
sys/dev/iser/iser_verbs.c
880
struct ib_conn *ib_conn = &iser_conn->ib_conn;
sys/dev/iser/iser_verbs.c
881
unsigned int my_rx_head = iser_conn->rx_desc_head;
sys/dev/iser/iser_verbs.c
885
rx_desc = &iser_conn->rx_descs[my_rx_head];
sys/dev/iser/iser_verbs.c
890
my_rx_head = (my_rx_head + 1) % iser_conn->qp_max_recv_dtos;
sys/dev/iser/iser_verbs.c
902
iser_conn->rx_desc_head = my_rx_head;
sys/dev/iser/iser_verbs.c
94
struct iser_conn *iser_conn = container_of(ib_conn, struct iser_conn,
sys/dev/iser/iser_verbs.c
97
if (is_iser_tx_desc(iser_conn, wr_id)) {
sys/dev/iser/iser_verbs.c
98
ISER_DBG("conn %p got send comp error", iser_conn);