Lines Matching refs:fcport

723 	struct qedf_rport *fcport = NULL;  in qedf_eh_abort()  local
734 fcport = (struct qedf_rport *)&rp[1]; in qedf_eh_abort()
735 rdata = fcport->rdata; in qedf_eh_abort()
780 if (test_bit(QEDF_RPORT_UPLOADING_CONNECTION, &fcport->flags)) { in qedf_eh_abort()
876 struct qedf_rport *fcport = NULL; in qedf_wait_for_upload() local
890 list_for_each_entry_rcu(fcport, &qedf->fcports, peers) { in qedf_wait_for_upload()
891 if (fcport && test_bit(QEDF_RPORT_SESSION_READY, in qedf_wait_for_upload()
892 &fcport->flags)) { in qedf_wait_for_upload()
893 if (fcport->rdata) in qedf_wait_for_upload()
896 fcport, fcport->rdata->ids.port_id); in qedf_wait_for_upload()
899 "Waiting for fcport %p.\n", fcport); in qedf_wait_for_upload()
1014 struct qedf_rport *fcport; in qedf_fcport_lookup() local
1018 list_for_each_entry_rcu(fcport, &qedf->fcports, peers) { in qedf_fcport_lookup()
1019 rdata = fcport->rdata; in qedf_fcport_lookup()
1024 return fcport; in qedf_fcport_lookup()
1034 static int qedf_xmit_l2_frame(struct qedf_rport *fcport, struct fc_frame *fp) in qedf_xmit_l2_frame() argument
1044 qedf_send_adisc(fcport, fp); in qedf_xmit_l2_frame()
1072 struct qedf_rport *fcport; in qedf_xmit() local
1139 fcport = qedf_fcport_lookup(qedf, ntoh24(fh->fh_d_id)); in qedf_xmit()
1141 if (fcport && test_bit(QEDF_RPORT_SESSION_READY, &fcport->flags)) { in qedf_xmit()
1142 rc = qedf_xmit_l2_frame(fcport, fp); in qedf_xmit()
1244 static int qedf_alloc_sq(struct qedf_ctx *qedf, struct qedf_rport *fcport) in qedf_alloc_sq() argument
1252 fcport->sq_mem_size = SQ_NUM_ENTRIES * sizeof(struct fcoe_wqe); in qedf_alloc_sq()
1253 fcport->sq_mem_size = ALIGN(fcport->sq_mem_size, QEDF_PAGE_SIZE); in qedf_alloc_sq()
1254 fcport->sq_pbl_size = (fcport->sq_mem_size / QEDF_PAGE_SIZE) * in qedf_alloc_sq()
1256 fcport->sq_pbl_size = fcport->sq_pbl_size + QEDF_PAGE_SIZE; in qedf_alloc_sq()
1258 fcport->sq = dma_alloc_coherent(&qedf->pdev->dev, fcport->sq_mem_size, in qedf_alloc_sq()
1259 &fcport->sq_dma, GFP_KERNEL); in qedf_alloc_sq()
1260 if (!fcport->sq) { in qedf_alloc_sq()
1266 fcport->sq_pbl = dma_alloc_coherent(&qedf->pdev->dev, in qedf_alloc_sq()
1267 fcport->sq_pbl_size, in qedf_alloc_sq()
1268 &fcport->sq_pbl_dma, GFP_KERNEL); in qedf_alloc_sq()
1269 if (!fcport->sq_pbl) { in qedf_alloc_sq()
1276 num_pages = fcport->sq_mem_size / QEDF_PAGE_SIZE; in qedf_alloc_sq()
1277 page = fcport->sq_dma; in qedf_alloc_sq()
1278 pbl = (u32 *)fcport->sq_pbl; in qedf_alloc_sq()
1291 dma_free_coherent(&qedf->pdev->dev, fcport->sq_mem_size, fcport->sq, in qedf_alloc_sq()
1292 fcport->sq_dma); in qedf_alloc_sq()
1297 static void qedf_free_sq(struct qedf_ctx *qedf, struct qedf_rport *fcport) in qedf_free_sq() argument
1299 if (fcport->sq_pbl) in qedf_free_sq()
1300 dma_free_coherent(&qedf->pdev->dev, fcport->sq_pbl_size, in qedf_free_sq()
1301 fcport->sq_pbl, fcport->sq_pbl_dma); in qedf_free_sq()
1302 if (fcport->sq) in qedf_free_sq()
1303 dma_free_coherent(&qedf->pdev->dev, fcport->sq_mem_size, in qedf_free_sq()
1304 fcport->sq, fcport->sq_dma); in qedf_free_sq()
1308 struct qedf_rport *fcport) in qedf_offload_connection() argument
1313 uint16_t total_sqe = (fcport->sq_mem_size / sizeof(struct fcoe_wqe)); in qedf_offload_connection()
1316 "portid=%06x.\n", fcport->rdata->ids.port_id); in qedf_offload_connection()
1317 rval = qed_ops->acquire_conn(qedf->cdev, &fcport->handle, in qedf_offload_connection()
1318 &fcport->fw_cid, &fcport->p_doorbell); in qedf_offload_connection()
1321 "for portid=%06x.\n", fcport->rdata->ids.port_id); in qedf_offload_connection()
1327 "fw_cid=%08x handle=%d.\n", fcport->rdata->ids.port_id, in qedf_offload_connection()
1328 fcport->fw_cid, fcport->handle); in qedf_offload_connection()
1333 conn_info.sq_pbl_addr = fcport->sq_pbl_dma; in qedf_offload_connection()
1335 conn_info.sq_curr_page_addr = (dma_addr_t)(*(u64 *)fcport->sq_pbl); in qedf_offload_connection()
1337 (dma_addr_t)(*(u64 *)(fcport->sq_pbl + 8)); in qedf_offload_connection()
1344 conn_info.tx_max_fc_pay_len = fcport->rdata->maxframe_size; in qedf_offload_connection()
1347 conn_info.rx_max_fc_pay_len = fcport->rdata->maxframe_size; in qedf_offload_connection()
1359 fcport->sid = port_id; in qedf_offload_connection()
1364 conn_info.max_conc_seqs_c3 = fcport->rdata->max_seq; in qedf_offload_connection()
1367 port_id = fcport->rdata->rport->port_id; in qedf_offload_connection()
1375 if (fcport->dev_type == QEDF_RPORT_TYPE_TAPE) { in qedf_offload_connection()
1378 fcport->rdata->ids.port_id); in qedf_offload_connection()
1382 ((fcport->rdata->sp_features & FC_SP_FT_SEQC) ? 1 : 0) << in qedf_offload_connection()
1386 rval = qed_ops->offload_conn(qedf->cdev, fcport->handle, &conn_info); in qedf_offload_connection()
1389 "for portid=%06x.\n", fcport->rdata->ids.port_id); in qedf_offload_connection()
1394 fcport->rdata->ids.port_id, total_sqe); in qedf_offload_connection()
1396 spin_lock_init(&fcport->rport_lock); in qedf_offload_connection()
1397 atomic_set(&fcport->free_sqes, total_sqe); in qedf_offload_connection()
1400 qed_ops->release_conn(qedf->cdev, fcport->handle); in qedf_offload_connection()
1407 struct qedf_rport *fcport) in qedf_upload_connection() argument
1420 "port_id=%06x.\n", fcport->rdata->ids.port_id); in qedf_upload_connection()
1422 qed_ops->destroy_conn(qedf->cdev, fcport->handle, term_params_dma); in qedf_upload_connection()
1423 qed_ops->release_conn(qedf->cdev, fcport->handle); in qedf_upload_connection()
1430 struct qedf_rport *fcport) in qedf_cleanup_fcport() argument
1432 struct fc_rport_priv *rdata = fcport->rdata; in qedf_cleanup_fcport()
1435 fcport->rdata->ids.port_id); in qedf_cleanup_fcport()
1438 qedf_flush_active_ios(fcport, -1); in qedf_cleanup_fcport()
1440 if (test_and_clear_bit(QEDF_RPORT_SESSION_READY, &fcport->flags)) in qedf_cleanup_fcport()
1441 qedf_upload_connection(qedf, fcport); in qedf_cleanup_fcport()
1442 qedf_free_sq(qedf, fcport); in qedf_cleanup_fcport()
1443 fcport->rdata = NULL; in qedf_cleanup_fcport()
1444 fcport->qedf = NULL; in qedf_cleanup_fcport()
1460 struct qedf_rport *fcport; in qedf_rport_event_handler() local
1476 fcport = (struct qedf_rport *)&rp[1]; in qedf_rport_event_handler()
1477 fcport->qedf = qedf; in qedf_rport_event_handler()
1490 if (test_bit(QEDF_RPORT_SESSION_READY, &fcport->flags)) { in qedf_rport_event_handler()
1523 fcport->rdata = rdata; in qedf_rport_event_handler()
1524 fcport->rport = rport; in qedf_rport_event_handler()
1526 rval = qedf_alloc_sq(qedf, fcport); in qedf_rport_event_handler()
1528 qedf_cleanup_fcport(qedf, fcport); in qedf_rport_event_handler()
1536 fcport->dev_type = QEDF_RPORT_TYPE_TAPE; in qedf_rport_event_handler()
1541 fcport->dev_type = QEDF_RPORT_TYPE_DISK; in qedf_rport_event_handler()
1544 rval = qedf_offload_connection(qedf, fcport); in qedf_rport_event_handler()
1546 qedf_cleanup_fcport(qedf, fcport); in qedf_rport_event_handler()
1552 list_add_rcu(&fcport->peers, &qedf->fcports); in qedf_rport_event_handler()
1559 set_bit(QEDF_RPORT_SESSION_READY, &fcport->flags); in qedf_rport_event_handler()
1591 fcport = (struct qedf_rport *)&rp[1]; in qedf_rport_event_handler()
1593 spin_lock_irqsave(&fcport->rport_lock, flags); in qedf_rport_event_handler()
1595 if (test_bit(QEDF_RPORT_SESSION_READY, &fcport->flags) && in qedf_rport_event_handler()
1597 &fcport->flags)) { in qedf_rport_event_handler()
1599 &fcport->flags); in qedf_rport_event_handler()
1600 spin_unlock_irqrestore(&fcport->rport_lock, flags); in qedf_rport_event_handler()
1601 qedf_cleanup_fcport(qedf, fcport); in qedf_rport_event_handler()
1607 list_del_rcu(&fcport->peers); in qedf_rport_event_handler()
1611 &fcport->flags); in qedf_rport_event_handler()
1614 spin_unlock_irqrestore(&fcport->rport_lock, flags); in qedf_rport_event_handler()
2466 struct qedf_rport *fcport; in qedf_recv_frame() local
2585 fcport = qedf_fcport_lookup(qedf, ntoh24(fh->fh_d_id)); in qedf_recv_frame()
2587 if (fcport && test_bit(QEDF_RPORT_UPLOADING_CONNECTION, in qedf_recv_frame()
2588 &fcport->flags)) { in qedf_recv_frame()
2803 struct qedf_rport *fcport; in qedf_process_cqe() local
2819 fcport = io_req->fcport; in qedf_process_cqe()
2821 if (fcport == NULL) { in qedf_process_cqe()
2832 if (!test_bit(QEDF_RPORT_SESSION_READY, &fcport->flags)) { in qedf_process_cqe()
2834 "Session not offloaded yet, fcport = %p.\n", fcport); in qedf_process_cqe()
2841 atomic_inc(&fcport->free_sqes); in qedf_process_cqe()
2858 atomic_inc(&fcport->free_sqes); in qedf_process_cqe()
2864 atomic_inc(&fcport->free_sqes); in qedf_process_cqe()
2870 atomic_inc(&fcport->free_sqes); in qedf_process_cqe()
2876 atomic_inc(&fcport->free_sqes); in qedf_process_cqe()
2881 atomic_inc(&fcport->free_sqes); in qedf_process_cqe()
2886 atomic_inc(&fcport->free_sqes); in qedf_process_cqe()
2892 atomic_inc(&fcport->free_sqes); in qedf_process_cqe()