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; in qedf_wait_for_upload() local
890 list_for_each_entry_rcu(fcport, &qedf->fcports, peers) { 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()
1015 struct qedf_rport *fcport; in qedf_fcport_lookup() local
1019 list_for_each_entry_rcu(fcport, &qedf->fcports, peers) { in qedf_fcport_lookup()
1020 rdata = fcport->rdata; in qedf_fcport_lookup()
1025 return fcport; in qedf_fcport_lookup()
1035 static int qedf_xmit_l2_frame(struct qedf_rport *fcport, struct fc_frame *fp) in qedf_xmit_l2_frame() argument
1045 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()
1242 static int qedf_alloc_sq(struct qedf_ctx *qedf, struct qedf_rport *fcport) in qedf_alloc_sq() argument
1250 fcport->sq_mem_size = SQ_NUM_ENTRIES * sizeof(struct fcoe_wqe); in qedf_alloc_sq()
1251 fcport->sq_mem_size = ALIGN(fcport->sq_mem_size, QEDF_PAGE_SIZE); in qedf_alloc_sq()
1252 fcport->sq_pbl_size = (fcport->sq_mem_size / QEDF_PAGE_SIZE) * in qedf_alloc_sq()
1254 fcport->sq_pbl_size = fcport->sq_pbl_size + QEDF_PAGE_SIZE; in qedf_alloc_sq()
1256 fcport->sq = dma_alloc_coherent(&qedf->pdev->dev, fcport->sq_mem_size, in qedf_alloc_sq()
1257 &fcport->sq_dma, GFP_KERNEL); in qedf_alloc_sq()
1258 if (!fcport->sq) { in qedf_alloc_sq()
1264 fcport->sq_pbl = dma_alloc_coherent(&qedf->pdev->dev, in qedf_alloc_sq()
1265 fcport->sq_pbl_size, in qedf_alloc_sq()
1266 &fcport->sq_pbl_dma, GFP_KERNEL); in qedf_alloc_sq()
1267 if (!fcport->sq_pbl) { in qedf_alloc_sq()
1274 num_pages = fcport->sq_mem_size / QEDF_PAGE_SIZE; in qedf_alloc_sq()
1275 page = fcport->sq_dma; in qedf_alloc_sq()
1276 pbl = (u32 *)fcport->sq_pbl; in qedf_alloc_sq()
1289 dma_free_coherent(&qedf->pdev->dev, fcport->sq_mem_size, fcport->sq, in qedf_alloc_sq()
1290 fcport->sq_dma); in qedf_alloc_sq()
1295 static void qedf_free_sq(struct qedf_ctx *qedf, struct qedf_rport *fcport) in qedf_free_sq() argument
1297 if (fcport->sq_pbl) in qedf_free_sq()
1298 dma_free_coherent(&qedf->pdev->dev, fcport->sq_pbl_size, in qedf_free_sq()
1299 fcport->sq_pbl, fcport->sq_pbl_dma); in qedf_free_sq()
1300 if (fcport->sq) in qedf_free_sq()
1301 dma_free_coherent(&qedf->pdev->dev, fcport->sq_mem_size, in qedf_free_sq()
1302 fcport->sq, fcport->sq_dma); in qedf_free_sq()
1306 struct qedf_rport *fcport) in qedf_offload_connection() argument
1311 uint16_t total_sqe = (fcport->sq_mem_size / sizeof(struct fcoe_wqe)); in qedf_offload_connection()
1314 "portid=%06x.\n", fcport->rdata->ids.port_id); in qedf_offload_connection()
1315 rval = qed_ops->acquire_conn(qedf->cdev, &fcport->handle, in qedf_offload_connection()
1316 &fcport->fw_cid, &fcport->p_doorbell); in qedf_offload_connection()
1319 "for portid=%06x.\n", fcport->rdata->ids.port_id); in qedf_offload_connection()
1325 "fw_cid=%08x handle=%d.\n", fcport->rdata->ids.port_id, in qedf_offload_connection()
1326 fcport->fw_cid, fcport->handle); in qedf_offload_connection()
1331 conn_info.sq_pbl_addr = fcport->sq_pbl_dma; in qedf_offload_connection()
1333 conn_info.sq_curr_page_addr = (dma_addr_t)(*(u64 *)fcport->sq_pbl); in qedf_offload_connection()
1335 (dma_addr_t)(*(u64 *)(fcport->sq_pbl + 8)); in qedf_offload_connection()
1342 conn_info.tx_max_fc_pay_len = fcport->rdata->maxframe_size; in qedf_offload_connection()
1345 conn_info.rx_max_fc_pay_len = fcport->rdata->maxframe_size; in qedf_offload_connection()
1357 fcport->sid = port_id; in qedf_offload_connection()
1362 conn_info.max_conc_seqs_c3 = fcport->rdata->max_seq; in qedf_offload_connection()
1365 port_id = fcport->rdata->rport->port_id; in qedf_offload_connection()
1373 if (fcport->dev_type == QEDF_RPORT_TYPE_TAPE) { in qedf_offload_connection()
1376 fcport->rdata->ids.port_id); in qedf_offload_connection()
1380 ((fcport->rdata->sp_features & FC_SP_FT_SEQC) ? 1 : 0) << in qedf_offload_connection()
1384 rval = qed_ops->offload_conn(qedf->cdev, fcport->handle, &conn_info); in qedf_offload_connection()
1387 "for portid=%06x.\n", fcport->rdata->ids.port_id); in qedf_offload_connection()
1392 fcport->rdata->ids.port_id, total_sqe); in qedf_offload_connection()
1394 spin_lock_init(&fcport->rport_lock); in qedf_offload_connection()
1395 atomic_set(&fcport->free_sqes, total_sqe); in qedf_offload_connection()
1398 qed_ops->release_conn(qedf->cdev, fcport->handle); in qedf_offload_connection()
1405 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()
2470 struct qedf_rport *fcport; in qedf_recv_frame() local
2589 fcport = qedf_fcport_lookup(qedf, ntoh24(fh->fh_d_id)); in qedf_recv_frame()
2591 if (fcport && test_bit(QEDF_RPORT_UPLOADING_CONNECTION, in qedf_recv_frame()
2592 &fcport->flags)) { in qedf_recv_frame()
2807 struct qedf_rport *fcport; in qedf_process_cqe() local
2823 fcport = io_req->fcport; in qedf_process_cqe()
2825 if (fcport == NULL) { in qedf_process_cqe()
2836 if (!test_bit(QEDF_RPORT_SESSION_READY, &fcport->flags)) { in qedf_process_cqe()
2838 "Session not offloaded yet, fcport = %p.\n", fcport); in qedf_process_cqe()
2845 atomic_inc(&fcport->free_sqes); in qedf_process_cqe()
2862 atomic_inc(&fcport->free_sqes); in qedf_process_cqe()
2868 atomic_inc(&fcport->free_sqes); in qedf_process_cqe()
2874 atomic_inc(&fcport->free_sqes); in qedf_process_cqe()
2880 atomic_inc(&fcport->free_sqes); in qedf_process_cqe()
2885 atomic_inc(&fcport->free_sqes); in qedf_process_cqe()
2890 atomic_inc(&fcport->free_sqes); in qedf_process_cqe()
2896 atomic_inc(&fcport->free_sqes); in qedf_process_cqe()