Lines Matching defs:p_hwfn

32 static int qed_nvmetcp_async_event(struct qed_hwfn *p_hwfn, u8 fw_event_code,
36 if (p_hwfn->p_nvmetcp_info->event_cb) {
37 struct qed_nvmetcp_info *p_nvmetcp = p_hwfn->p_nvmetcp_info;
42 DP_NOTICE(p_hwfn, "nvmetcp async completion is not set\n");
48 static int qed_sp_nvmetcp_func_start(struct qed_hwfn *p_hwfn,
65 init_data.cid = qed_spq_get_cid(p_hwfn);
66 init_data.opaque_fid = p_hwfn->hw_info.opaque_fid;
69 rc = qed_sp_init_request(p_hwfn, &p_ent,
77 p_params = &p_hwfn->pf_params.nvmetcp_pf_params;
82 p_init->ll2_rx_queue_id = RESC_START(p_hwfn, QED_LL2_RAM_QUEUE) +
92 val = RESC_START(p_hwfn, QED_CMDQS_CQS);
97 val = qed_get_igu_sb_id(p_hwfn, i);
104 p_queue->bdq_resource_id = (u8)RESC_START(p_hwfn, QED_BDQ);
111 p_hwfn->p_nvmetcp_info->event_context = event_context;
112 p_hwfn->p_nvmetcp_info->event_cb = async_event_cb;
113 qed_spq_register_async_cb(p_hwfn, PROTOCOLID_TCP_ULP,
116 return qed_spq_post(p_hwfn, p_ent, NULL);
119 static int qed_sp_nvmetcp_func_stop(struct qed_hwfn *p_hwfn,
129 init_data.cid = qed_spq_get_cid(p_hwfn);
130 init_data.opaque_fid = p_hwfn->hw_info.opaque_fid;
133 rc = qed_sp_init_request(p_hwfn, &p_ent,
139 rc = qed_spq_post(p_hwfn, p_ent, NULL);
140 qed_spq_unregister_async_cb(p_hwfn, PROTOCOLID_TCP_ULP);
266 static int qed_sp_nvmetcp_conn_offload(struct qed_hwfn *p_hwfn,
284 init_data.opaque_fid = p_hwfn->hw_info.opaque_fid;
287 rc = qed_sp_init_request(p_hwfn, &p_ent,
296 physical_q = qed_get_cm_pq_idx(p_hwfn, PQ_FLAGS_OFLD);
301 physical_q = qed_get_cm_pq_idx(p_hwfn, PQ_FLAGS_ACK);
353 return qed_spq_post(p_hwfn, p_ent, NULL);
356 static int qed_sp_nvmetcp_conn_update(struct qed_hwfn *p_hwfn,
370 init_data.opaque_fid = p_hwfn->hw_info.opaque_fid;
374 rc = qed_sp_init_request(p_hwfn, &p_ent,
390 return qed_spq_post(p_hwfn, p_ent, NULL);
393 static int qed_sp_nvmetcp_conn_terminate(struct qed_hwfn *p_hwfn,
406 init_data.opaque_fid = p_hwfn->hw_info.opaque_fid;
409 rc = qed_sp_init_request(p_hwfn, &p_ent,
419 return qed_spq_post(p_hwfn, p_ent, NULL);
422 static int qed_sp_nvmetcp_conn_clear_sq(struct qed_hwfn *p_hwfn,
434 init_data.opaque_fid = p_hwfn->hw_info.opaque_fid;
437 rc = qed_sp_init_request(p_hwfn, &p_ent,
443 return qed_spq_post(p_hwfn, p_ent, NULL);
446 static void __iomem *qed_nvmetcp_get_db_addr(struct qed_hwfn *p_hwfn, u32 cid)
448 return (u8 __iomem *)p_hwfn->doorbells +
452 static int qed_nvmetcp_allocate_connection(struct qed_hwfn *p_hwfn,
465 spin_lock_bh(&p_hwfn->p_nvmetcp_info->lock);
466 if (!list_empty(&p_hwfn->p_nvmetcp_info->free_list))
467 p_conn = list_first_entry(&p_hwfn->p_nvmetcp_info->free_list,
471 spin_unlock_bh(&p_hwfn->p_nvmetcp_info->lock);
476 spin_unlock_bh(&p_hwfn->p_nvmetcp_info->lock);
479 p_params = &p_hwfn->pf_params.nvmetcp_pf_params;
487 rc = qed_chain_alloc(p_hwfn->cdev, &p_conn->r2tq, &params);
494 rc = qed_chain_alloc(p_hwfn->cdev, &p_conn->uhq, &params);
499 rc = qed_chain_alloc(p_hwfn->cdev, &p_conn->xhq, &params);
509 qed_chain_free(p_hwfn->cdev, &p_conn->uhq);
511 qed_chain_free(p_hwfn->cdev, &p_conn->r2tq);
518 static int qed_nvmetcp_acquire_connection(struct qed_hwfn *p_hwfn,
525 spin_lock_bh(&p_hwfn->p_nvmetcp_info->lock);
526 rc = qed_cxt_acquire_cid(p_hwfn, PROTOCOLID_TCP_ULP, &icid);
527 spin_unlock_bh(&p_hwfn->p_nvmetcp_info->lock);
532 rc = qed_nvmetcp_allocate_connection(p_hwfn, &p_conn);
534 spin_lock_bh(&p_hwfn->p_nvmetcp_info->lock);
535 qed_cxt_release_cid(p_hwfn, icid);
536 spin_unlock_bh(&p_hwfn->p_nvmetcp_info->lock);
543 p_conn->fw_cid = (p_hwfn->hw_info.opaque_fid << 16) | icid;
549 static void qed_nvmetcp_release_connection(struct qed_hwfn *p_hwfn,
552 spin_lock_bh(&p_hwfn->p_nvmetcp_info->lock);
553 list_add_tail(&p_conn->list_entry, &p_hwfn->p_nvmetcp_info->free_list);
554 qed_cxt_release_cid(p_hwfn, p_conn->icid);
555 spin_unlock_bh(&p_hwfn->p_nvmetcp_info->lock);
558 static void qed_nvmetcp_free_connection(struct qed_hwfn *p_hwfn,
561 qed_chain_free(p_hwfn->cdev, &p_conn->xhq);
562 qed_chain_free(p_hwfn->cdev, &p_conn->uhq);
563 qed_chain_free(p_hwfn->cdev, &p_conn->r2tq);
567 int qed_nvmetcp_alloc(struct qed_hwfn *p_hwfn)
576 p_hwfn->p_nvmetcp_info = p_nvmetcp_info;
581 void qed_nvmetcp_setup(struct qed_hwfn *p_hwfn)
583 spin_lock_init(&p_hwfn->p_nvmetcp_info->lock);
586 void qed_nvmetcp_free(struct qed_hwfn *p_hwfn)
590 if (!p_hwfn->p_nvmetcp_info)
593 while (!list_empty(&p_hwfn->p_nvmetcp_info->free_list)) {
594 p_conn = list_first_entry(&p_hwfn->p_nvmetcp_info->free_list,
598 qed_nvmetcp_free_connection(p_hwfn, p_conn);
602 kfree(p_hwfn->p_nvmetcp_info);
603 p_hwfn->p_nvmetcp_info = NULL;