Lines Matching refs:fcport

338 	struct qedf_rport *fcport;  in qedf_link_recovery()  local
408 list_for_each_entry_rcu(fcport, &qedf->fcports, peers) { in qedf_link_recovery()
409 rdata = fcport->rdata; in qedf_link_recovery()
619 struct qedf_rport *fcport; in qedf_eh_abort() local
639 fcport = (struct qedf_rport *)&rp[1]; in qedf_eh_abort()
745 struct qedf_rport *fcport = (struct qedf_rport *)&rp[1]; in qedf_eh_host_reset() local
755 if (fcport == NULL) { in qedf_eh_host_reset()
816 struct qedf_rport *fcport; in qedf_fcport_lookup() local
820 list_for_each_entry_rcu(fcport, &qedf->fcports, peers) { in qedf_fcport_lookup()
821 rdata = fcport->rdata; in qedf_fcport_lookup()
826 return fcport; in qedf_fcport_lookup()
836 static int qedf_xmit_l2_frame(struct qedf_rport *fcport, struct fc_frame *fp) in qedf_xmit_l2_frame() argument
846 qedf_send_adisc(fcport, fp); in qedf_xmit_l2_frame()
875 struct qedf_rport *fcport; in qedf_xmit() local
940 fcport = qedf_fcport_lookup(qedf, ntoh24(fh->fh_d_id)); in qedf_xmit()
942 if (fcport && test_bit(QEDF_RPORT_SESSION_READY, &fcport->flags)) { in qedf_xmit()
943 rc = qedf_xmit_l2_frame(fcport, fp); in qedf_xmit()
1040 static int qedf_alloc_sq(struct qedf_ctx *qedf, struct qedf_rport *fcport) in qedf_alloc_sq() argument
1048 fcport->sq_mem_size = SQ_NUM_ENTRIES * sizeof(struct fcoe_wqe); in qedf_alloc_sq()
1049 fcport->sq_mem_size = ALIGN(fcport->sq_mem_size, QEDF_PAGE_SIZE); in qedf_alloc_sq()
1050 fcport->sq_pbl_size = (fcport->sq_mem_size / QEDF_PAGE_SIZE) * in qedf_alloc_sq()
1052 fcport->sq_pbl_size = fcport->sq_pbl_size + QEDF_PAGE_SIZE; in qedf_alloc_sq()
1054 fcport->sq = dma_zalloc_coherent(&qedf->pdev->dev, in qedf_alloc_sq()
1055 fcport->sq_mem_size, &fcport->sq_dma, GFP_KERNEL); in qedf_alloc_sq()
1056 if (!fcport->sq) { in qedf_alloc_sq()
1062 fcport->sq_pbl = dma_zalloc_coherent(&qedf->pdev->dev, in qedf_alloc_sq()
1063 fcport->sq_pbl_size, &fcport->sq_pbl_dma, GFP_KERNEL); in qedf_alloc_sq()
1064 if (!fcport->sq_pbl) { in qedf_alloc_sq()
1071 num_pages = fcport->sq_mem_size / QEDF_PAGE_SIZE; in qedf_alloc_sq()
1072 page = fcport->sq_dma; in qedf_alloc_sq()
1073 pbl = (u32 *)fcport->sq_pbl; in qedf_alloc_sq()
1086 dma_free_coherent(&qedf->pdev->dev, fcport->sq_mem_size, fcport->sq, in qedf_alloc_sq()
1087 fcport->sq_dma); in qedf_alloc_sq()
1092 static void qedf_free_sq(struct qedf_ctx *qedf, struct qedf_rport *fcport) in qedf_free_sq() argument
1094 if (fcport->sq_pbl) in qedf_free_sq()
1095 dma_free_coherent(&qedf->pdev->dev, fcport->sq_pbl_size, in qedf_free_sq()
1096 fcport->sq_pbl, fcport->sq_pbl_dma); in qedf_free_sq()
1097 if (fcport->sq) in qedf_free_sq()
1098 dma_free_coherent(&qedf->pdev->dev, fcport->sq_mem_size, in qedf_free_sq()
1099 fcport->sq, fcport->sq_dma); in qedf_free_sq()
1103 struct qedf_rport *fcport) in qedf_offload_connection() argument
1108 uint16_t total_sqe = (fcport->sq_mem_size / sizeof(struct fcoe_wqe)); in qedf_offload_connection()
1111 "portid=%06x.\n", fcport->rdata->ids.port_id); in qedf_offload_connection()
1112 rval = qed_ops->acquire_conn(qedf->cdev, &fcport->handle, in qedf_offload_connection()
1113 &fcport->fw_cid, &fcport->p_doorbell); in qedf_offload_connection()
1116 "for portid=%06x.\n", fcport->rdata->ids.port_id); in qedf_offload_connection()
1122 "fw_cid=%08x handle=%d.\n", fcport->rdata->ids.port_id, in qedf_offload_connection()
1123 fcport->fw_cid, fcport->handle); in qedf_offload_connection()
1128 conn_info.sq_pbl_addr = fcport->sq_pbl_dma; in qedf_offload_connection()
1130 conn_info.sq_curr_page_addr = (dma_addr_t)(*(u64 *)fcport->sq_pbl); in qedf_offload_connection()
1132 (dma_addr_t)(*(u64 *)(fcport->sq_pbl + 8)); in qedf_offload_connection()
1139 conn_info.tx_max_fc_pay_len = fcport->rdata->maxframe_size; in qedf_offload_connection()
1142 conn_info.rx_max_fc_pay_len = fcport->rdata->maxframe_size; in qedf_offload_connection()
1154 fcport->sid = port_id; in qedf_offload_connection()
1159 conn_info.max_conc_seqs_c3 = fcport->rdata->max_seq; in qedf_offload_connection()
1162 port_id = fcport->rdata->rport->port_id; in qedf_offload_connection()
1170 if (fcport->dev_type == QEDF_RPORT_TYPE_TAPE) { in qedf_offload_connection()
1173 fcport->rdata->ids.port_id); in qedf_offload_connection()
1177 ((fcport->rdata->sp_features & FC_SP_FT_SEQC) ? 1 : 0) << in qedf_offload_connection()
1181 rval = qed_ops->offload_conn(qedf->cdev, fcport->handle, &conn_info); in qedf_offload_connection()
1184 "for portid=%06x.\n", fcport->rdata->ids.port_id); in qedf_offload_connection()
1189 fcport->rdata->ids.port_id, total_sqe); in qedf_offload_connection()
1191 spin_lock_init(&fcport->rport_lock); in qedf_offload_connection()
1192 atomic_set(&fcport->free_sqes, total_sqe); in qedf_offload_connection()
1195 qed_ops->release_conn(qedf->cdev, fcport->handle); in qedf_offload_connection()
1202 struct qedf_rport *fcport) in qedf_upload_connection() argument
1215 "port_id=%06x.\n", fcport->rdata->ids.port_id); in qedf_upload_connection()
1217 qed_ops->destroy_conn(qedf->cdev, fcport->handle, term_params_dma); in qedf_upload_connection()
1218 qed_ops->release_conn(qedf->cdev, fcport->handle); in qedf_upload_connection()
1225 struct qedf_rport *fcport) in qedf_cleanup_fcport() argument
1228 fcport->rdata->ids.port_id); in qedf_cleanup_fcport()
1231 qedf_flush_active_ios(fcport, -1); in qedf_cleanup_fcport()
1233 if (test_and_clear_bit(QEDF_RPORT_SESSION_READY, &fcport->flags)) in qedf_cleanup_fcport()
1234 qedf_upload_connection(qedf, fcport); in qedf_cleanup_fcport()
1235 qedf_free_sq(qedf, fcport); in qedf_cleanup_fcport()
1236 fcport->rdata = NULL; in qedf_cleanup_fcport()
1237 fcport->qedf = NULL; in qedf_cleanup_fcport()
1252 struct qedf_rport *fcport; in qedf_rport_event_handler() local
1268 fcport = (struct qedf_rport *)&rp[1]; in qedf_rport_event_handler()
1269 fcport->qedf = qedf; in qedf_rport_event_handler()
1282 if (test_bit(QEDF_RPORT_SESSION_READY, &fcport->flags)) { in qedf_rport_event_handler()
1313 fcport->rdata = rdata; in qedf_rport_event_handler()
1314 fcport->rport = rport; in qedf_rport_event_handler()
1316 rval = qedf_alloc_sq(qedf, fcport); in qedf_rport_event_handler()
1318 qedf_cleanup_fcport(qedf, fcport); in qedf_rport_event_handler()
1326 fcport->dev_type = QEDF_RPORT_TYPE_TAPE; in qedf_rport_event_handler()
1331 fcport->dev_type = QEDF_RPORT_TYPE_DISK; in qedf_rport_event_handler()
1334 rval = qedf_offload_connection(qedf, fcport); in qedf_rport_event_handler()
1336 qedf_cleanup_fcport(qedf, fcport); in qedf_rport_event_handler()
1342 list_add_rcu(&fcport->peers, &qedf->fcports); in qedf_rport_event_handler()
1349 set_bit(QEDF_RPORT_SESSION_READY, &fcport->flags); in qedf_rport_event_handler()
1370 fcport = (struct qedf_rport *)&rp[1]; in qedf_rport_event_handler()
1373 if (test_bit(QEDF_RPORT_SESSION_READY, &fcport->flags)) { in qedf_rport_event_handler()
1374 set_bit(QEDF_RPORT_UPLOADING_CONNECTION, &fcport->flags); in qedf_rport_event_handler()
1375 qedf_cleanup_fcport(qedf, fcport); in qedf_rport_event_handler()
1382 list_del_rcu(&fcport->peers); in qedf_rport_event_handler()
1386 &fcport->flags); in qedf_rport_event_handler()
2174 struct qedf_rport *fcport; in qedf_recv_frame() local
2289 fcport = qedf_fcport_lookup(qedf, ntoh24(fh->fh_d_id)); in qedf_recv_frame()
2291 if (fcport && test_bit(QEDF_RPORT_UPLOADING_CONNECTION, in qedf_recv_frame()
2292 &fcport->flags)) { in qedf_recv_frame()
2498 struct qedf_rport *fcport; in qedf_process_cqe() local
2511 fcport = io_req->fcport; in qedf_process_cqe()
2513 if (fcport == NULL) { in qedf_process_cqe()
2522 if (!test_bit(QEDF_RPORT_SESSION_READY, &fcport->flags)) { in qedf_process_cqe()
2530 atomic_inc(&fcport->free_sqes); in qedf_process_cqe()
2547 atomic_inc(&fcport->free_sqes); in qedf_process_cqe()
2553 atomic_inc(&fcport->free_sqes); in qedf_process_cqe()
2559 atomic_inc(&fcport->free_sqes); in qedf_process_cqe()
2565 atomic_inc(&fcport->free_sqes); in qedf_process_cqe()
2570 atomic_inc(&fcport->free_sqes); in qedf_process_cqe()
2575 atomic_inc(&fcport->free_sqes); in qedf_process_cqe()
2581 atomic_inc(&fcport->free_sqes); in qedf_process_cqe()