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
421
struct iser_conn *iser_conn;
sys/dev/iser/iser_verbs.c
428
iser_conn = container_of(ib_conn, struct iser_conn, ib_conn);
sys/dev/iser/iser_verbs.c
457
iser_conn->max_cmds =
sys/dev/iser/iser_verbs.c
461
iser_conn->max_cmds =
sys/dev/iser/iser_verbs.c
541
static int iser_conn_state_comp_exch(struct iser_conn *iser_conn,
sys/dev/iser/iser_verbs.c
547
ret = (iser_conn->state == comp);
sys/dev/iser/iser_verbs.c
549
iser_conn->state = exch;
sys/dev/iser/iser_verbs.c
566
iser_free_ib_conn_res(struct iser_conn *iser_conn,
sys/dev/iser/iser_verbs.c
569
struct ib_conn *ib_conn = &iser_conn->ib_conn;
sys/dev/iser/iser_verbs.c
573
iser_conn, ib_conn->cma_id, ib_conn->qp);
sys/dev/iser/iser_verbs.c
584
if (iser_conn->login_buf)
sys/dev/iser/iser_verbs.c
585
iser_free_login_buf(iser_conn);
sys/dev/iser/iser_verbs.c
587
if (iser_conn->rx_descs)
sys/dev/iser/iser_verbs.c
588
iser_free_rx_descriptors(iser_conn);
sys/dev/iser/iser_verbs.c
602
iser_conn_terminate(struct iser_conn *iser_conn)
sys/dev/iser/iser_verbs.c
604
struct ib_conn *ib_conn = &iser_conn->ib_conn;
sys/dev/iser/iser_verbs.c
610
if (!iser_conn_state_comp_exch(iser_conn, ISER_CONN_UP,
sys/dev/iser/iser_verbs.c
614
ISER_INFO("iser_conn %p state %d\n", iser_conn, iser_conn->state);
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
640
iser_conn, err);
sys/dev/iser/iser_verbs.c
654
ISER_DBG("before send cv_wait: %p", iser_conn);
sys/dev/iser/iser_verbs.c
656
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
668
ISER_DBG("before 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
671
ISER_DBG("after recv cv_wait: %p", iser_conn);
sys/dev/iser/iser_verbs.c
684
struct iser_conn *iser_conn;
sys/dev/iser/iser_verbs.c
686
iser_conn = cma_id->context;
sys/dev/iser/iser_verbs.c
688
ISER_ERR("conn %p", iser_conn);
sys/dev/iser/iser_verbs.c
690
iser_conn->state = ISER_CONN_TERMINATING;
sys/dev/iser/iser_verbs.c
692
cv_signal(&iser_conn->up_cv);
sys/dev/iser/iser_verbs.c
702
struct iser_conn *iser_conn;
sys/dev/iser/iser_verbs.c
706
iser_conn = cma_id->context;
sys/dev/iser/iser_verbs.c
708
ib_conn = &iser_conn->ib_conn;
sys/dev/iser/iser_verbs.c
712
iser_conn);
sys/dev/iser/iser_verbs.c
721
ISER_ERR("conn %p resolve route failed: %d", iser_conn, ret);
sys/dev/iser/iser_verbs.c
736
struct iser_conn *iser_conn = cma_id->context;
sys/dev/iser/iser_verbs.c
737
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
762
ISER_ERR("conn %p failure connecting: %d", iser_conn, ret);
sys/dev/iser/iser_verbs.c
777
struct iser_conn *iser_conn;
sys/dev/iser/iser_verbs.c
781
iser_conn = cma_id->context;
sys/dev/iser/iser_verbs.c
788
iser_conn->state = ISER_CONN_UP;
sys/dev/iser/iser_verbs.c
790
cv_signal(&iser_conn->up_cv);
sys/dev/iser/iser_verbs.c
799
struct iser_conn *iser_conn = cma_id->context;
sys/dev/iser/iser_verbs.c
801
if (iser_conn_terminate(iser_conn))
sys/dev/iser/iser_verbs.c
802
iser_conn->icl_conn.ic_error(&iser_conn->icl_conn);
sys/dev/iser/iser_verbs.c
809
struct iser_conn *iser_conn;
sys/dev/iser/iser_verbs.c
812
iser_conn = cma_id->context;
sys/dev/iser/iser_verbs.c
816
sx_xlock(&iser_conn->state_mutex);
sys/dev/iser/iser_verbs.c
843
sx_xunlock(&iser_conn->state_mutex);
sys/dev/iser/iser_verbs.c
849
iser_post_recvl(struct iser_conn *iser_conn)
sys/dev/iser/iser_verbs.c
853
struct ib_conn *ib_conn = &iser_conn->ib_conn;
sys/dev/iser/iser_verbs.c
857
sge.addr = iser_conn->login_resp_dma;
sys/dev/iser/iser_verbs.c
861
rx_wr.wr_id = (uintptr_t)iser_conn->login_resp_buf;
sys/dev/iser/iser_verbs.c
877
iser_post_recvm(struct iser_conn *iser_conn, int count)
sys/dev/iser/iser_verbs.c
882
struct ib_conn *ib_conn = &iser_conn->ib_conn;
sys/dev/iser/iser_verbs.c
883
unsigned int my_rx_head = iser_conn->rx_desc_head;
sys/dev/iser/iser_verbs.c
887
rx_desc = &iser_conn->rx_descs[my_rx_head];
sys/dev/iser/iser_verbs.c
892
my_rx_head = (my_rx_head + 1) % iser_conn->qp_max_recv_dtos;
sys/dev/iser/iser_verbs.c
904
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);