Lines Matching refs:bnx2i_conn

193 void bnx2i_get_rq_buf(struct bnx2i_conn *bnx2i_conn, char *ptr, int len)  in bnx2i_get_rq_buf()  argument
195 if (!bnx2i_conn->ep->qp.rqe_left) in bnx2i_get_rq_buf()
198 bnx2i_conn->ep->qp.rqe_left--; in bnx2i_get_rq_buf()
199 memcpy(ptr, (u8 *) bnx2i_conn->ep->qp.rq_cons_qe, len); in bnx2i_get_rq_buf()
200 if (bnx2i_conn->ep->qp.rq_cons_qe == bnx2i_conn->ep->qp.rq_last_qe) { in bnx2i_get_rq_buf()
201 bnx2i_conn->ep->qp.rq_cons_qe = bnx2i_conn->ep->qp.rq_first_qe; in bnx2i_get_rq_buf()
202 bnx2i_conn->ep->qp.rq_cons_idx = 0; in bnx2i_get_rq_buf()
204 bnx2i_conn->ep->qp.rq_cons_qe++; in bnx2i_get_rq_buf()
205 bnx2i_conn->ep->qp.rq_cons_idx++; in bnx2i_get_rq_buf()
210 static void bnx2i_ring_577xx_doorbell(struct bnx2i_conn *conn) in bnx2i_ring_577xx_doorbell()
231 void bnx2i_put_rq_buf(struct bnx2i_conn *bnx2i_conn, int count) in bnx2i_put_rq_buf() argument
234 u16 hi_bit = (bnx2i_conn->ep->qp.rq_prod_idx & 0x8000); in bnx2i_put_rq_buf()
235 struct bnx2i_endpoint *ep = bnx2i_conn->ep; in bnx2i_put_rq_buf()
241 if (ep->qp.rq_prod_idx > bnx2i_conn->hba->max_rqes) { in bnx2i_put_rq_buf()
242 ep->qp.rq_prod_idx %= bnx2i_conn->hba->max_rqes; in bnx2i_put_rq_buf()
269 static void bnx2i_ring_sq_dbell(struct bnx2i_conn *bnx2i_conn, int count) in bnx2i_ring_sq_dbell() argument
272 struct bnx2i_endpoint *ep = bnx2i_conn->ep; in bnx2i_ring_sq_dbell()
279 bnx2i_ring_577xx_doorbell(bnx2i_conn); in bnx2i_ring_sq_dbell()
294 static void bnx2i_ring_dbell_update_sq_params(struct bnx2i_conn *bnx2i_conn, in bnx2i_ring_dbell_update_sq_params() argument
300 if (bnx2i_conn->ep->qp.sq_prod_qe == in bnx2i_ring_dbell_update_sq_params()
301 bnx2i_conn->ep->qp.sq_last_qe) in bnx2i_ring_dbell_update_sq_params()
302 bnx2i_conn->ep->qp.sq_prod_qe = in bnx2i_ring_dbell_update_sq_params()
303 bnx2i_conn->ep->qp.sq_first_qe; in bnx2i_ring_dbell_update_sq_params()
305 bnx2i_conn->ep->qp.sq_prod_qe++; in bnx2i_ring_dbell_update_sq_params()
307 if ((bnx2i_conn->ep->qp.sq_prod_qe + count) <= in bnx2i_ring_dbell_update_sq_params()
308 bnx2i_conn->ep->qp.sq_last_qe) in bnx2i_ring_dbell_update_sq_params()
309 bnx2i_conn->ep->qp.sq_prod_qe += count; in bnx2i_ring_dbell_update_sq_params()
311 tmp_cnt = bnx2i_conn->ep->qp.sq_last_qe - in bnx2i_ring_dbell_update_sq_params()
312 bnx2i_conn->ep->qp.sq_prod_qe; in bnx2i_ring_dbell_update_sq_params()
313 bnx2i_conn->ep->qp.sq_prod_qe = in bnx2i_ring_dbell_update_sq_params()
314 &bnx2i_conn->ep->qp.sq_first_qe[count - in bnx2i_ring_dbell_update_sq_params()
318 bnx2i_conn->ep->qp.sq_prod_idx += count; in bnx2i_ring_dbell_update_sq_params()
320 bnx2i_ring_sq_dbell(bnx2i_conn, bnx2i_conn->ep->qp.sq_prod_idx); in bnx2i_ring_dbell_update_sq_params()
332 int bnx2i_send_iscsi_login(struct bnx2i_conn *bnx2i_conn, in bnx2i_send_iscsi_login() argument
343 bnx2i_conn->ep->qp.sq_prod_qe; in bnx2i_send_iscsi_login()
361 login_wqe->resp_bd_list_addr_lo = (u32) bnx2i_conn->gen_pdu.resp_bd_dma; in bnx2i_send_iscsi_login()
363 (u32) ((u64) bnx2i_conn->gen_pdu.resp_bd_dma >> 32); in bnx2i_send_iscsi_login()
366 (bnx2i_conn->gen_pdu.resp_buf_size << in bnx2i_send_iscsi_login()
369 login_wqe->bd_list_addr_lo = (u32) bnx2i_conn->gen_pdu.req_bd_dma; in bnx2i_send_iscsi_login()
371 (u32) ((u64) bnx2i_conn->gen_pdu.req_bd_dma >> 32); in bnx2i_send_iscsi_login()
375 bnx2i_ring_dbell_update_sq_params(bnx2i_conn, 1); in bnx2i_send_iscsi_login()
387 int bnx2i_send_iscsi_tmf(struct bnx2i_conn *bnx2i_conn, in bnx2i_send_iscsi_tmf() argument
390 struct iscsi_conn *conn = bnx2i_conn->cls_conn->dd_data; in bnx2i_send_iscsi_tmf()
402 bnx2i_conn->ep->qp.sq_prod_qe; in bnx2i_send_iscsi_tmf()
445 tmfabort_wqe->bd_list_addr_lo = (u32) bnx2i_conn->hba->mp_bd_dma; in bnx2i_send_iscsi_tmf()
447 ((u64) bnx2i_conn->hba->mp_bd_dma >> 32); in bnx2i_send_iscsi_tmf()
451 bnx2i_ring_dbell_update_sq_params(bnx2i_conn, 1); in bnx2i_send_iscsi_tmf()
463 int bnx2i_send_iscsi_text(struct bnx2i_conn *bnx2i_conn, in bnx2i_send_iscsi_text() argument
473 text_wqe = (struct bnx2i_text_request *) bnx2i_conn->ep->qp.sq_prod_qe; in bnx2i_send_iscsi_text()
486 text_wqe->resp_bd_list_addr_lo = (u32) bnx2i_conn->gen_pdu.resp_bd_dma; in bnx2i_send_iscsi_text()
488 (u32) ((u64) bnx2i_conn->gen_pdu.resp_bd_dma >> 32); in bnx2i_send_iscsi_text()
491 (bnx2i_conn->gen_pdu.resp_buf_size << in bnx2i_send_iscsi_text()
494 text_wqe->bd_list_addr_lo = (u32) bnx2i_conn->gen_pdu.req_bd_dma; in bnx2i_send_iscsi_text()
496 (u32) ((u64) bnx2i_conn->gen_pdu.req_bd_dma >> 32); in bnx2i_send_iscsi_text()
500 bnx2i_ring_dbell_update_sq_params(bnx2i_conn, 1); in bnx2i_send_iscsi_text()
513 int bnx2i_send_iscsi_scsicmd(struct bnx2i_conn *bnx2i_conn, in bnx2i_send_iscsi_scsicmd() argument
519 bnx2i_conn->ep->qp.sq_prod_qe; in bnx2i_send_iscsi_scsicmd()
523 bnx2i_ring_dbell_update_sq_params(bnx2i_conn, 1); in bnx2i_send_iscsi_scsicmd()
539 int bnx2i_send_iscsi_nopout(struct bnx2i_conn *bnx2i_conn, in bnx2i_send_iscsi_nopout() argument
543 struct bnx2i_endpoint *ep = bnx2i_conn->ep; in bnx2i_send_iscsi_nopout()
582 bnx2i_conn->hba->mp_bd_dma; in bnx2i_send_iscsi_nopout()
584 (u32) ((u64) bnx2i_conn->hba->mp_bd_dma >> 32); in bnx2i_send_iscsi_nopout()
589 bnx2i_ring_dbell_update_sq_params(bnx2i_conn, 1); in bnx2i_send_iscsi_nopout()
602 int bnx2i_send_iscsi_logout(struct bnx2i_conn *bnx2i_conn, in bnx2i_send_iscsi_logout() argument
613 bnx2i_conn->ep->qp.sq_prod_qe; in bnx2i_send_iscsi_logout()
626 logout_wqe->bd_list_addr_lo = (u32) bnx2i_conn->hba->mp_bd_dma; in bnx2i_send_iscsi_logout()
628 ((u64) bnx2i_conn->hba->mp_bd_dma >> 32); in bnx2i_send_iscsi_logout()
632 bnx2i_conn->ep->state = EP_STATE_LOGOUT_SENT; in bnx2i_send_iscsi_logout()
634 bnx2i_ring_dbell_update_sq_params(bnx2i_conn, 1); in bnx2i_send_iscsi_logout()
647 struct bnx2i_conn *bnx2i_conn = conn->dd_data; in bnx2i_update_iscsi_conn() local
648 struct bnx2i_hba *hba = bnx2i_conn->hba; in bnx2i_update_iscsi_conn()
660 if (test_bit(BNX2I_NX2_DEV_57710, &bnx2i_conn->ep->hba->cnic_dev_type)) in bnx2i_update_iscsi_conn()
661 update_wqe->context_id = bnx2i_conn->ep->ep_cid; in bnx2i_update_iscsi_conn()
663 update_wqe->context_id = (bnx2i_conn->ep->ep_cid >> 7); in bnx2i_update_iscsi_conn()
1354 struct bnx2i_conn *bnx2i_conn, in bnx2i_process_scsi_cmd_resp() argument
1357 struct iscsi_conn *conn = bnx2i_conn->cls_conn->dd_data; in bnx2i_process_scsi_cmd_resp()
1358 struct bnx2i_hba *hba = bnx2i_conn->hba; in bnx2i_process_scsi_cmd_resp()
1451 struct bnx2i_conn *bnx2i_conn, in bnx2i_process_login_resp() argument
1454 struct iscsi_conn *conn = bnx2i_conn->cls_conn->dd_data; in bnx2i_process_login_resp()
1468 resp_hdr = (struct iscsi_login_rsp *) &bnx2i_conn->gen_pdu.resp_hdr; in bnx2i_process_login_resp()
1486 bnx2i_conn->gen_pdu.resp_wr_ptr = in bnx2i_process_login_resp()
1487 bnx2i_conn->gen_pdu.resp_buf + pld_len; in bnx2i_process_login_resp()
1496 bnx2i_conn->gen_pdu.resp_wr_ptr[0] = 0; in bnx2i_process_login_resp()
1497 bnx2i_conn->gen_pdu.resp_wr_ptr++; in bnx2i_process_login_resp()
1502 bnx2i_conn->gen_pdu.resp_buf, in bnx2i_process_login_resp()
1503 bnx2i_conn->gen_pdu.resp_wr_ptr - bnx2i_conn->gen_pdu.resp_buf); in bnx2i_process_login_resp()
1519 struct bnx2i_conn *bnx2i_conn, in bnx2i_process_text_resp() argument
1522 struct iscsi_conn *conn = bnx2i_conn->cls_conn->dd_data; in bnx2i_process_text_resp()
1535 resp_hdr = (struct iscsi_text_rsp *)&bnx2i_conn->gen_pdu.resp_hdr; in bnx2i_process_text_resp()
1548 bnx2i_conn->gen_pdu.resp_wr_ptr = bnx2i_conn->gen_pdu.resp_buf + in bnx2i_process_text_resp()
1557 bnx2i_conn->gen_pdu.resp_wr_ptr[0] = 0; in bnx2i_process_text_resp()
1558 bnx2i_conn->gen_pdu.resp_wr_ptr++; in bnx2i_process_text_resp()
1562 bnx2i_conn->gen_pdu.resp_buf, in bnx2i_process_text_resp()
1563 bnx2i_conn->gen_pdu.resp_wr_ptr - in bnx2i_process_text_resp()
1564 bnx2i_conn->gen_pdu.resp_buf); in bnx2i_process_text_resp()
1580 struct bnx2i_conn *bnx2i_conn, in bnx2i_process_tmf_resp() argument
1583 struct iscsi_conn *conn = bnx2i_conn->cls_conn->dd_data; in bnx2i_process_tmf_resp()
1595 resp_hdr = (struct iscsi_tm_rsp *) &bnx2i_conn->gen_pdu.resp_hdr; in bnx2i_process_tmf_resp()
1619 struct bnx2i_conn *bnx2i_conn, in bnx2i_process_logout_resp() argument
1622 struct iscsi_conn *conn = bnx2i_conn->cls_conn->dd_data; in bnx2i_process_logout_resp()
1634 resp_hdr = (struct iscsi_logout_rsp *) &bnx2i_conn->gen_pdu.resp_hdr; in bnx2i_process_logout_resp()
1650 bnx2i_conn->ep->state = EP_STATE_LOGOUT_RESP_RCVD; in bnx2i_process_logout_resp()
1665 struct bnx2i_conn *bnx2i_conn, in bnx2i_process_nopin_local_cmpl() argument
1668 struct iscsi_conn *conn = bnx2i_conn->cls_conn->dd_data; in bnx2i_process_nopin_local_cmpl()
1689 static void bnx2i_unsol_pdu_adjust_rq(struct bnx2i_conn *bnx2i_conn) in bnx2i_unsol_pdu_adjust_rq() argument
1692 bnx2i_get_rq_buf(bnx2i_conn, dummy_rq_data, 1); in bnx2i_unsol_pdu_adjust_rq()
1693 bnx2i_put_rq_buf(bnx2i_conn, 1); in bnx2i_unsol_pdu_adjust_rq()
1706 struct bnx2i_conn *bnx2i_conn, in bnx2i_process_nopin_mesg() argument
1709 struct iscsi_conn *conn = bnx2i_conn->cls_conn->dd_data; in bnx2i_process_nopin_mesg()
1718 hdr = (struct iscsi_nopin *)&bnx2i_conn->gen_pdu.resp_hdr; in bnx2i_process_nopin_mesg()
1726 bnx2i_unsol_pdu_adjust_rq(bnx2i_conn); in bnx2i_process_nopin_mesg()
1758 struct bnx2i_conn *bnx2i_conn, in bnx2i_process_async_mesg() argument
1765 bnx2i_unsol_pdu_adjust_rq(bnx2i_conn); in bnx2i_process_async_mesg()
1771 iscsi_conn_printk(KERN_ALERT, bnx2i_conn->cls_conn->dd_data, in bnx2i_process_async_mesg()
1777 resp_hdr = (struct iscsi_async *) &bnx2i_conn->gen_pdu.resp_hdr; in bnx2i_process_async_mesg()
1793 __iscsi_complete_pdu(bnx2i_conn->cls_conn->dd_data, in bnx2i_process_async_mesg()
1808 struct bnx2i_conn *bnx2i_conn, in bnx2i_process_reject_mesg() argument
1811 struct iscsi_conn *conn = bnx2i_conn->cls_conn->dd_data; in bnx2i_process_reject_mesg()
1817 bnx2i_get_rq_buf(bnx2i_conn, conn->data, reject->data_length); in bnx2i_process_reject_mesg()
1818 bnx2i_put_rq_buf(bnx2i_conn, 1); in bnx2i_process_reject_mesg()
1820 bnx2i_unsol_pdu_adjust_rq(bnx2i_conn); in bnx2i_process_reject_mesg()
1823 hdr = (struct iscsi_reject *) &bnx2i_conn->gen_pdu.resp_hdr; in bnx2i_process_reject_mesg()
1845 struct bnx2i_conn *bnx2i_conn, in bnx2i_process_cmd_cleanup_resp() argument
1849 struct iscsi_conn *conn = bnx2i_conn->cls_conn->dd_data; in bnx2i_process_cmd_cleanup_resp()
1860 complete(&bnx2i_conn->cmd_cleanup_cmpl); in bnx2i_process_cmd_cleanup_resp()
1887 work->bnx2i_conn, in bnx2i_percpu_io_thread()
1889 atomic_dec(&work->bnx2i_conn->work_cnt); in bnx2i_percpu_io_thread()
1916 struct bnx2i_conn *bnx2i_conn, in bnx2i_queue_scsi_cmd_resp() argument
1927 task = iscsi_itt_to_task(bnx2i_conn->cls_conn->dd_data, in bnx2i_queue_scsi_cmd_resp()
1953 bnx2i_work->bnx2i_conn = bnx2i_conn; in bnx2i_queue_scsi_cmd_resp()
1956 atomic_inc(&bnx2i_conn->work_cnt); in bnx2i_queue_scsi_cmd_resp()
1964 bnx2i_process_scsi_cmd_resp(session, bnx2i_conn, (struct cqe *)cqe); in bnx2i_queue_scsi_cmd_resp()
1976 static int bnx2i_process_new_cqes(struct bnx2i_conn *bnx2i_conn) in bnx2i_process_new_cqes() argument
1978 struct iscsi_conn *conn = bnx2i_conn->cls_conn->dd_data; in bnx2i_process_new_cqes()
1980 struct bnx2i_hba *hba = bnx2i_conn->hba; in bnx2i_process_new_cqes()
1986 if (bnx2i_conn->ep == NULL) in bnx2i_process_new_cqes()
1989 qp = &bnx2i_conn->ep->qp; in bnx2i_process_new_cqes()
2008 bnx2i_unsol_pdu_adjust_rq(bnx2i_conn); in bnx2i_process_new_cqes()
2020 bnx2i_queue_scsi_cmd_resp(session, bnx2i_conn, nopin); in bnx2i_process_new_cqes()
2023 bnx2i_process_login_resp(session, bnx2i_conn, in bnx2i_process_new_cqes()
2027 bnx2i_process_tmf_resp(session, bnx2i_conn, in bnx2i_process_new_cqes()
2031 bnx2i_process_text_resp(session, bnx2i_conn, in bnx2i_process_new_cqes()
2035 bnx2i_process_logout_resp(session, bnx2i_conn, in bnx2i_process_new_cqes()
2039 if (bnx2i_process_nopin_mesg(session, bnx2i_conn, in bnx2i_process_new_cqes()
2044 bnx2i_process_nopin_local_cmpl(session, bnx2i_conn, in bnx2i_process_new_cqes()
2048 bnx2i_process_async_mesg(session, bnx2i_conn, in bnx2i_process_new_cqes()
2053 bnx2i_process_reject_mesg(session, bnx2i_conn, in bnx2i_process_new_cqes()
2057 bnx2i_process_cmd_cleanup_resp(session, bnx2i_conn, in bnx2i_process_new_cqes()
2069 if (!atomic_read(&bnx2i_conn->ep->num_active_cmds)) in bnx2i_process_new_cqes()
2075 atomic_dec(&bnx2i_conn->ep->num_active_cmds); in bnx2i_process_new_cqes()
2110 struct bnx2i_conn *bnx2i_conn; in bnx2i_fastpath_notification() local
2115 bnx2i_conn = bnx2i_get_conn_from_id(hba, iscsi_cid); in bnx2i_fastpath_notification()
2117 if (!bnx2i_conn) { in bnx2i_fastpath_notification()
2121 if (!bnx2i_conn->ep) { in bnx2i_fastpath_notification()
2126 bnx2i_process_new_cqes(bnx2i_conn); in bnx2i_fastpath_notification()
2127 nxt_idx = bnx2i_arm_cq_event_coalescing(bnx2i_conn->ep, in bnx2i_fastpath_notification()
2129 if (nxt_idx && nxt_idx == bnx2i_process_new_cqes(bnx2i_conn)) in bnx2i_fastpath_notification()
2130 bnx2i_arm_cq_event_coalescing(bnx2i_conn->ep, CNIC_ARM_CQE_FP); in bnx2i_fastpath_notification()
2144 struct bnx2i_conn *conn; in bnx2i_process_update_conn_cmpl()
2177 struct bnx2i_conn *bnx2i_conn) in bnx2i_recovery_que_add_conn() argument
2179 iscsi_conn_failure(bnx2i_conn->cls_conn->dd_data, in bnx2i_recovery_que_add_conn()
2195 struct bnx2i_conn *bnx2i_conn; in bnx2i_process_tcp_error() local
2199 bnx2i_conn = bnx2i_get_conn_from_id(hba, iscsi_cid); in bnx2i_process_tcp_error()
2201 if (!bnx2i_conn) { in bnx2i_process_tcp_error()
2208 bnx2i_recovery_que_add_conn(bnx2i_conn->hba, bnx2i_conn); in bnx2i_process_tcp_error()
2228 struct bnx2i_conn *bnx2i_conn; in bnx2i_process_iscsi_error() local
2238 bnx2i_conn = bnx2i_get_conn_from_id(hba, iscsi_cid); in bnx2i_process_iscsi_error()
2239 if (!bnx2i_conn) { in bnx2i_process_iscsi_error()
2383 bnx2i_conn->cls_conn->dd_data, in bnx2i_process_iscsi_error()
2388 bnx2i_conn->cls_conn->dd_data, in bnx2i_process_iscsi_error()
2391 bnx2i_conn->hba->shost->host_no, in bnx2i_process_iscsi_error()
2392 bnx2i_conn, bnx2i_conn->ep->ep_iscsi_cid, in bnx2i_process_iscsi_error()
2393 bnx2i_conn->ep->ep_cid); in bnx2i_process_iscsi_error()
2394 bnx2i_recovery_que_add_conn(bnx2i_conn->hba, bnx2i_conn); in bnx2i_process_iscsi_error()
2397 (void *) &bnx2i_conn->violation_notified)) in bnx2i_process_iscsi_error()
2399 bnx2i_conn->cls_conn->dd_data, in bnx2i_process_iscsi_error()