Lines Matching defs:fc_conn
109 struct spdk_nvmf_fc_conn *fc_conn);
186 struct spdk_nvmf_fc_conn *fc_conn;
200 fc_conn = assoc->conns_buf + (i * sizeof(struct spdk_nvmf_fc_conn));
201 TAILQ_INSERT_TAIL(&assoc->avail_fc_conns, fc_conn, assoc_avail_link);
296 struct spdk_nvmf_fc_conn *fc_conn;
298 fc_conn = TAILQ_FIRST(&assoc->avail_fc_conns);
299 if (!fc_conn) {
305 TAILQ_REMOVE(&assoc->avail_fc_conns, fc_conn, assoc_avail_link);
306 memset(fc_conn, 0, sizeof(struct spdk_nvmf_fc_conn));
309 TAILQ_INSERT_TAIL(&assoc->fc_conns, fc_conn, assoc_link);
314 assoc->aq_conn = fc_conn;
317 fc_conn->qpair.qid = qid;
318 fc_conn->qpair.sq_head_max = sq_size;
319 fc_conn->qpair.state = SPDK_NVMF_QPAIR_UNINITIALIZED;
320 fc_conn->qpair.transport = assoc->nvmf_transport;
321 TAILQ_INIT(&fc_conn->qpair.outstanding);
323 fc_conn->conn_id = NVMF_FC_INVALID_CONN_ID;
324 fc_conn->esrp_ratio = esrp_ratio;
325 fc_conn->fc_assoc = assoc;
326 fc_conn->s_id = assoc->s_id;
327 fc_conn->d_id = assoc->tgtport->d_id;
328 fc_conn->rpi = rpi;
329 fc_conn->max_queue_depth = sq_size + 1;
330 fc_conn->conn_state = SPDK_NVMF_FC_OBJECT_CREATED;
331 TAILQ_INIT(&fc_conn->in_use_reqs);
332 TAILQ_INIT(&fc_conn->fused_waiting_queue);
337 nvmf_fc_create_trid(&fc_conn->trid, tgtport->fc_nodename.u.wwn,
340 return fc_conn;
412 struct spdk_nvmf_fc_conn *fc_conn = dp->args.fc_conn;
413 struct spdk_nvmf_fc_association *assoc = fc_conn->fc_assoc;
414 struct nvmf_fc_ls_op_ctx *opd_list = (struct nvmf_fc_ls_op_ctx *)fc_conn->ls_del_op_ctx;
418 fc_conn->conn_id);
420 nvmf_fc_del_connection(assoc, fc_conn);
425 nvmf_fc_ls_poller_delete_conn(struct spdk_nvmf_fc_conn *fc_conn, bool send_abts,
429 struct spdk_nvmf_fc_association *assoc = fc_conn->fc_assoc;
435 fc_conn->conn_id);
449 api_data->aq_conn = (assoc->aq_conn == fc_conn ? true : false);
450 api_data->args.fc_conn = fc_conn;
453 api_data->args.hwqp = fc_conn->hwqp;
458 nvmf_fc_ls_append_del_cb_ctx((struct nvmf_fc_ls_op_ctx **) &fc_conn->ls_del_op_ctx, opd);
460 assert(fc_conn->conn_state != SPDK_NVMF_FC_OBJECT_ZOMBIE);
461 if (fc_conn->conn_state == SPDK_NVMF_FC_OBJECT_CREATED) {
462 fc_conn->conn_state = SPDK_NVMF_FC_OBJECT_TO_BE_DELETED;
480 struct spdk_nvmf_fc_conn *fc_conn = dp->args.fc_conn;
485 assoc->assoc_id, fc_conn->conn_id);
487 fc_conn->create_opd = NULL;
499 to_be64(&assoc_acc->conn_id.connection_id, fc_conn->conn_id);
505 to_be64(&conn_acc->conn_id.connection_id, fc_conn->conn_id);
512 nvmf_fc_ls_poller_delete_conn(fc_conn, false, NULL, false, NULL, NULL);
515 "LS response (conn_id 0x%lx) sent\n", fc_conn->conn_id);
525 struct spdk_nvmf_fc_conn *fc_conn,
532 if (fc_conn->create_opd) {
533 free(fc_conn->create_opd);
534 fc_conn->create_opd = NULL;
547 nvmf_fc_del_connection(assoc, fc_conn);
555 struct spdk_nvmf_fc_conn *fc_conn,
563 fc_conn->conn_id);
566 if (nvmf_fc_create_conn_reqpool(fc_conn)) {
579 api_data->args.fc_conn = fc_conn;
591 fc_conn->create_opd = opd;
592 spdk_nvmf_tgt_new_qpair(ls_rqst->nvmf_tgt, &fc_conn->qpair);
595 nvmf_fc_ls_add_conn_failure(assoc, ls_rqst, fc_conn, aq_conn);
629 struct spdk_nvmf_fc_conn *fc_conn)
632 nvmf_fc_free_conn_reqpool(fc_conn);
635 TAILQ_REMOVE(&assoc->fc_conns, fc_conn, assoc_link);
638 TAILQ_INSERT_TAIL(&assoc->avail_fc_conns, fc_conn, assoc_avail_link);
640 fc_conn->conn_state = SPDK_NVMF_FC_OBJECT_ZOMBIE;
641 fc_conn->ls_del_op_ctx = NULL;
711 struct spdk_nvmf_fc_conn *fc_conn;
751 TAILQ_FOREACH(fc_conn, &assoc->fc_conns, assoc_link) {
752 rc = nvmf_fc_ls_poller_delete_conn(fc_conn, send_abts, NULL, backend_initiated, NULL, NULL);
755 assoc->assoc_id, fc_conn->conn_id);
872 struct spdk_nvmf_fc_conn *fc_conn;
960 fc_conn = nvmf_fc_ls_new_connection(assoc, 0,
965 if (!fc_conn) {
989 nvmf_fc_ls_add_conn_to_poller(assoc, ls_rqst, fc_conn, true);
1009 struct spdk_nvmf_fc_conn *fc_conn = NULL;
1091 fc_conn = nvmf_fc_ls_new_connection(assoc, from_be16(&rqst->connect_cmd.qid),
1096 if (!fc_conn) {
1106 fc_conn->conn_id);
1118 nvmf_fc_ls_add_conn_to_poller(assoc, ls_rqst, fc_conn, false);
1264 nvmf_fc_delete_connection(struct spdk_nvmf_fc_conn *fc_conn, bool send_abts,
1268 return nvmf_fc_ls_poller_delete_conn(fc_conn, send_abts, NULL,
1297 struct spdk_nvmf_fc_conn *fc_conn)
1304 (void *)&fc_conn->conn_id, (void *)fc_conn);
1312 if (rte_hash_lookup_data(hwqp->rport_list_hash, (void *)&fc_conn->rpi, (void **)&rport) < 0) {
1322 (void *)&fc_conn->rpi, (void *)rport);
1331 TAILQ_INSERT_TAIL(&rport->conn_list, fc_conn, rport_link);
1337 rte_hash_del_key(hwqp->connection_list_hash, (void *)&fc_conn->conn_id);
1343 struct spdk_nvmf_fc_conn *fc_conn)
1347 if (rte_hash_del_key(hwqp->connection_list_hash, (void *)&fc_conn->conn_id) < 0) {
1349 fc_conn->conn_id);
1352 if (rte_hash_lookup_data(hwqp->rport_list_hash, (void *)&fc_conn->rpi, (void **)&rport) >= 0) {
1353 TAILQ_REMOVE(&rport->conn_list, fc_conn, rport_link);
1357 if (rte_hash_del_key(hwqp->rport_list_hash, (void *)&fc_conn->rpi) < 0) {
1359 fc_conn->conn_id);
1364 SPDK_ERRLOG("RPI(%d) hash entry not found\n", fc_conn->rpi);
1372 struct spdk_nvmf_fc_conn *fc_conn;
1376 TAILQ_FOREACH(fc_conn, &rport->conn_list, rport_link) {
1377 TAILQ_FOREACH(fc_req, &fc_conn->in_use_reqs, conn_link) {
1393 struct spdk_nvmf_fc_conn *fc_conn = conn_args->fc_conn, *tmp;
1396 fc_conn->conn_id);
1399 if (rte_hash_lookup_data(fc_conn->hwqp->connection_list_hash,
1400 (void *)&fc_conn->conn_id, (void **)&tmp) >= 0) {
1404 if (nvmf_fc_poller_add_conn_lookup_data(fc_conn->hwqp, fc_conn)) {
1405 SPDK_ERRLOG("Failed to add connection 0x%lx\n", fc_conn->conn_id);
1408 SPDK_DEBUGLOG(nvmf_fc_poller_api, "conn_id=%lx", fc_conn->conn_id);
1409 fc_conn->hwqp->num_conns++;
1466 struct spdk_nvmf_fc_conn *fc_conn = conn_args->fc_conn, *tmp;
1468 SPDK_DEBUGLOG(nvmf_fc_poller_api, "Poller connection abort done, fc_conn %p conn_id 0x%lx "
1469 "s_id 0x%x rpi 0x%x qpair_fini_done %d\n", fc_conn, fc_conn->conn_id,
1470 fc_conn->s_id, fc_conn->rpi, fc_conn->qpair_fini_done);
1472 if (!fc_conn->qpair_fini_done) { /* nvmf_fc_close_qpair not called yet */
1473 fc_conn->qpair_fini_done_cb = nvmf_fc_poller_conn_abort_done;
1474 fc_conn->qpair_fini_done_cb_args = cb_args;
1476 spdk_nvmf_qpair_disconnect(&fc_conn->qpair);
1482 (void *)&fc_conn->conn_id, (void *)&tmp) >= 0) {
1484 nvmf_fc_poller_del_conn_lookup_data(conn_args->hwqp, fc_conn);
1485 fc_conn->hwqp->num_conns--;
1487 SPDK_DEBUGLOG(nvmf_fc_poller_api, "Connection lookup data deleted, fc_conn %p conn_id 0x%lx "
1488 "rport %p rpi 0x%x assoc %p\n", fc_conn, fc_conn->conn_id,
1489 fc_conn->fc_assoc->rport, fc_conn->rpi, fc_conn->fc_assoc);
1494 SPDK_ERRLOG("fc_conn %p conn_id 0x%lx hash on delete failed.\n", fc_conn, fc_conn->conn_id);
1504 struct spdk_nvmf_fc_conn *fc_conn = NULL;
1509 "Poller delete connection, fc_conn %p conn_id 0x%lx s_id 0x%x rpi 0x%x\n",
1510 conn_args->fc_conn, conn_args->fc_conn->conn_id,
1511 conn_args->fc_conn->s_id, conn_args->fc_conn->rpi);
1515 (void *)&conn_args->fc_conn->conn_id, (void **)&fc_conn) < 0) {
1521 assert(conn_args->fc_conn == fc_conn);
1525 TAILQ_FOREACH_SAFE(fc_req, &fc_conn->in_use_reqs, conn_link, tmp) {
1526 if (nvmf_qpair_is_admin_queue(&fc_conn->qpair) &&
1538 SPDK_DEBUGLOG(nvmf_fc_poller_api, "Poller Disconnect API, fc_conn %p conn_id 0x%lx "
1539 "s_id %x rpi %x requested abort count %d qpair_fini_done %d\n", fc_conn,
1540 fc_conn->conn_id, fc_conn->s_id, fc_conn->rpi,
1541 conn_args->fc_request_cnt, fc_conn->qpair_fini_done);
1544 if (!fc_conn->qpair_fini_done) { /* nvmf_fc_close_qpair not called yet */
1545 conn_args->fc_conn->qpair_fini_done_cb = nvmf_fc_poller_conn_abort_done;
1546 conn_args->fc_conn->qpair_fini_done_cb_args = conn_args;
1547 spdk_nvmf_qpair_disconnect(&fc_conn->qpair);
1551 SPDK_DEBUGLOG(nvmf_fc_poller_api, "Connection lookup data deleted, fc_conn %p conn_id 0x%lx "
1552 "rport %p rpi 0x%x assoc %p\n", fc_conn, fc_conn->conn_id,
1553 fc_conn->fc_assoc->rport, fc_conn->rpi, fc_conn->fc_assoc);
1555 nvmf_fc_poller_del_conn_lookup_data(conn_args->hwqp, conn_args->fc_conn);