Lines Matching defs:bnx2i_conn
184 * @bnx2i_conn: iscsi connection on which RQ event occurred
193 void bnx2i_get_rq_buf(struct bnx2i_conn *bnx2i_conn, char *ptr, int len)
195 if (!bnx2i_conn->ep->qp.rqe_left)
198 bnx2i_conn->ep->qp.rqe_left--;
199 memcpy(ptr, (u8 *) bnx2i_conn->ep->qp.rq_cons_qe, len);
200 if (bnx2i_conn->ep->qp.rq_cons_qe == bnx2i_conn->ep->qp.rq_last_qe) {
201 bnx2i_conn->ep->qp.rq_cons_qe = bnx2i_conn->ep->qp.rq_first_qe;
202 bnx2i_conn->ep->qp.rq_cons_idx = 0;
204 bnx2i_conn->ep->qp.rq_cons_qe++;
205 bnx2i_conn->ep->qp.rq_cons_idx++;
210 static void bnx2i_ring_577xx_doorbell(struct bnx2i_conn *conn)
226 * @bnx2i_conn: iscsi connection on which event to post
231 void bnx2i_put_rq_buf(struct bnx2i_conn *bnx2i_conn, int count)
234 u16 hi_bit = (bnx2i_conn->ep->qp.rq_prod_idx & 0x8000);
235 struct bnx2i_endpoint *ep = bnx2i_conn->ep;
241 if (ep->qp.rq_prod_idx > bnx2i_conn->hba->max_rqes) {
242 ep->qp.rq_prod_idx %= bnx2i_conn->hba->max_rqes;
261 * @bnx2i_conn: iscsi connection to which new SQ entries belong
268 static void bnx2i_ring_sq_dbell(struct bnx2i_conn *bnx2i_conn, int count)
271 struct bnx2i_endpoint *ep = bnx2i_conn->ep;
278 bnx2i_ring_577xx_doorbell(bnx2i_conn);
286 * @bnx2i_conn: iscsi connection to which new SQ entries belong
291 static void bnx2i_ring_dbell_update_sq_params(struct bnx2i_conn *bnx2i_conn,
297 if (bnx2i_conn->ep->qp.sq_prod_qe ==
298 bnx2i_conn->ep->qp.sq_last_qe)
299 bnx2i_conn->ep->qp.sq_prod_qe =
300 bnx2i_conn->ep->qp.sq_first_qe;
302 bnx2i_conn->ep->qp.sq_prod_qe++;
304 if ((bnx2i_conn->ep->qp.sq_prod_qe + count) <=
305 bnx2i_conn->ep->qp.sq_last_qe)
306 bnx2i_conn->ep->qp.sq_prod_qe += count;
308 tmp_cnt = bnx2i_conn->ep->qp.sq_last_qe -
309 bnx2i_conn->ep->qp.sq_prod_qe;
310 bnx2i_conn->ep->qp.sq_prod_qe =
311 &bnx2i_conn->ep->qp.sq_first_qe[count -
315 bnx2i_conn->ep->qp.sq_prod_idx += count;
317 bnx2i_ring_sq_dbell(bnx2i_conn, bnx2i_conn->ep->qp.sq_prod_idx);
323 * @bnx2i_conn: iscsi connection
329 int bnx2i_send_iscsi_login(struct bnx2i_conn *bnx2i_conn,
338 bnx2i_conn->ep->qp.sq_prod_qe;
356 login_wqe->resp_bd_list_addr_lo = (u32) bnx2i_conn->gen_pdu.resp_bd_dma;
358 (u32) ((u64) bnx2i_conn->gen_pdu.resp_bd_dma >> 32);
361 (bnx2i_conn->gen_pdu.resp_buf_size <<
364 login_wqe->bd_list_addr_lo = (u32) bnx2i_conn->gen_pdu.req_bd_dma;
366 (u32) ((u64) bnx2i_conn->gen_pdu.req_bd_dma >> 32);
370 bnx2i_ring_dbell_update_sq_params(bnx2i_conn, 1);
376 * @bnx2i_conn: iscsi connection
382 int bnx2i_send_iscsi_tmf(struct bnx2i_conn *bnx2i_conn,
385 struct iscsi_conn *conn = bnx2i_conn->cls_conn->dd_data;
395 bnx2i_conn->ep->qp.sq_prod_qe;
438 tmfabort_wqe->bd_list_addr_lo = (u32) bnx2i_conn->hba->mp_bd_dma;
440 ((u64) bnx2i_conn->hba->mp_bd_dma >> 32);
444 bnx2i_ring_dbell_update_sq_params(bnx2i_conn, 1);
450 * @bnx2i_conn: iscsi connection
456 int bnx2i_send_iscsi_text(struct bnx2i_conn *bnx2i_conn,
464 text_wqe = (struct bnx2i_text_request *) bnx2i_conn->ep->qp.sq_prod_qe;
477 text_wqe->resp_bd_list_addr_lo = (u32) bnx2i_conn->gen_pdu.resp_bd_dma;
479 (u32) ((u64) bnx2i_conn->gen_pdu.resp_bd_dma >> 32);
482 (bnx2i_conn->gen_pdu.resp_buf_size <<
485 text_wqe->bd_list_addr_lo = (u32) bnx2i_conn->gen_pdu.req_bd_dma;
487 (u32) ((u64) bnx2i_conn->gen_pdu.req_bd_dma >> 32);
491 bnx2i_ring_dbell_update_sq_params(bnx2i_conn, 1);
498 * @bnx2i_conn: iscsi connection
504 int bnx2i_send_iscsi_scsicmd(struct bnx2i_conn *bnx2i_conn,
510 bnx2i_conn->ep->qp.sq_prod_qe;
514 bnx2i_ring_dbell_update_sq_params(bnx2i_conn, 1);
520 * @bnx2i_conn: iscsi connection
530 int bnx2i_send_iscsi_nopout(struct bnx2i_conn *bnx2i_conn,
534 struct bnx2i_endpoint *ep = bnx2i_conn->ep;
568 bnx2i_conn->hba->mp_bd_dma;
570 (u32) ((u64) bnx2i_conn->hba->mp_bd_dma >> 32);
575 bnx2i_ring_dbell_update_sq_params(bnx2i_conn, 1);
582 * @bnx2i_conn: iscsi connection
588 int bnx2i_send_iscsi_logout(struct bnx2i_conn *bnx2i_conn,
597 bnx2i_conn->ep->qp.sq_prod_qe;
610 logout_wqe->bd_list_addr_lo = (u32) bnx2i_conn->hba->mp_bd_dma;
612 ((u64) bnx2i_conn->hba->mp_bd_dma >> 32);
616 bnx2i_conn->ep->state = EP_STATE_LOGOUT_SENT;
618 bnx2i_ring_dbell_update_sq_params(bnx2i_conn, 1);
631 struct bnx2i_conn *bnx2i_conn = conn->dd_data;
632 struct bnx2i_hba *hba = bnx2i_conn->hba;
644 if (test_bit(BNX2I_NX2_DEV_57710, &bnx2i_conn->ep->hba->cnic_dev_type))
645 update_wqe->context_id = bnx2i_conn->ep->ep_cid;
647 update_wqe->context_id = (bnx2i_conn->ep->ep_cid >> 7);
1331 * @bnx2i_conn: bnx2i connection
1337 struct bnx2i_conn *bnx2i_conn,
1340 struct iscsi_conn *conn = bnx2i_conn->cls_conn->dd_data;
1341 struct bnx2i_hba *hba = bnx2i_conn->hba;
1428 * @bnx2i_conn: iscsi connection pointer
1434 struct bnx2i_conn *bnx2i_conn,
1437 struct iscsi_conn *conn = bnx2i_conn->cls_conn->dd_data;
1451 resp_hdr = (struct iscsi_login_rsp *) &bnx2i_conn->gen_pdu.resp_hdr;
1469 bnx2i_conn->gen_pdu.resp_wr_ptr =
1470 bnx2i_conn->gen_pdu.resp_buf + pld_len;
1479 bnx2i_conn->gen_pdu.resp_wr_ptr[0] = 0;
1480 bnx2i_conn->gen_pdu.resp_wr_ptr++;
1485 bnx2i_conn->gen_pdu.resp_buf,
1486 bnx2i_conn->gen_pdu.resp_wr_ptr - bnx2i_conn->gen_pdu.resp_buf);
1496 * @bnx2i_conn: iscsi connection pointer
1502 struct bnx2i_conn *bnx2i_conn,
1505 struct iscsi_conn *conn = bnx2i_conn->cls_conn->dd_data;
1518 resp_hdr = (struct iscsi_text_rsp *)&bnx2i_conn->gen_pdu.resp_hdr;
1531 bnx2i_conn->gen_pdu.resp_wr_ptr = bnx2i_conn->gen_pdu.resp_buf +
1540 bnx2i_conn->gen_pdu.resp_wr_ptr[0] = 0;
1541 bnx2i_conn->gen_pdu.resp_wr_ptr++;
1545 bnx2i_conn->gen_pdu.resp_buf,
1546 bnx2i_conn->gen_pdu.resp_wr_ptr -
1547 bnx2i_conn->gen_pdu.resp_buf);
1557 * @bnx2i_conn: iscsi connection pointer
1563 struct bnx2i_conn *bnx2i_conn,
1566 struct iscsi_conn *conn = bnx2i_conn->cls_conn->dd_data;
1578 resp_hdr = (struct iscsi_tm_rsp *) &bnx2i_conn->gen_pdu.resp_hdr;
1595 * @bnx2i_conn: iscsi connection pointer
1602 struct bnx2i_conn *bnx2i_conn,
1605 struct iscsi_conn *conn = bnx2i_conn->cls_conn->dd_data;
1617 resp_hdr = (struct iscsi_logout_rsp *) &bnx2i_conn->gen_pdu.resp_hdr;
1633 bnx2i_conn->ep->state = EP_STATE_LOGOUT_RESP_RCVD;
1642 * @bnx2i_conn: iscsi connection pointer
1648 struct bnx2i_conn *bnx2i_conn,
1651 struct iscsi_conn *conn = bnx2i_conn->cls_conn->dd_data;
1666 * @bnx2i_conn: iscsi connection
1672 static void bnx2i_unsol_pdu_adjust_rq(struct bnx2i_conn *bnx2i_conn)
1675 bnx2i_get_rq_buf(bnx2i_conn, dummy_rq_data, 1);
1676 bnx2i_put_rq_buf(bnx2i_conn, 1);
1683 * @bnx2i_conn: iscsi connection pointer
1689 struct bnx2i_conn *bnx2i_conn,
1692 struct iscsi_conn *conn = bnx2i_conn->cls_conn->dd_data;
1701 hdr = (struct iscsi_nopin *)&bnx2i_conn->gen_pdu.resp_hdr;
1709 bnx2i_unsol_pdu_adjust_rq(bnx2i_conn);
1735 * @bnx2i_conn: iscsi connection pointer
1741 struct bnx2i_conn *bnx2i_conn,
1748 bnx2i_unsol_pdu_adjust_rq(bnx2i_conn);
1754 iscsi_conn_printk(KERN_ALERT, bnx2i_conn->cls_conn->dd_data,
1760 resp_hdr = (struct iscsi_async *) &bnx2i_conn->gen_pdu.resp_hdr;
1776 __iscsi_complete_pdu(bnx2i_conn->cls_conn->dd_data,
1785 * @bnx2i_conn: iscsi connection pointer
1791 struct bnx2i_conn *bnx2i_conn,
1794 struct iscsi_conn *conn = bnx2i_conn->cls_conn->dd_data;
1800 bnx2i_get_rq_buf(bnx2i_conn, conn->data, reject->data_length);
1801 bnx2i_put_rq_buf(bnx2i_conn, 1);
1803 bnx2i_unsol_pdu_adjust_rq(bnx2i_conn);
1806 hdr = (struct iscsi_reject *) &bnx2i_conn->gen_pdu.resp_hdr;
1822 * @bnx2i_conn: iscsi connection pointer
1828 struct bnx2i_conn *bnx2i_conn,
1832 struct iscsi_conn *conn = bnx2i_conn->cls_conn->dd_data;
1843 complete(&bnx2i_conn->cmd_cleanup_cmpl);
1870 work->bnx2i_conn,
1872 atomic_dec(&work->bnx2i_conn->work_cnt);
1890 * @bnx2i_conn: bnx2i connection
1901 struct bnx2i_conn *bnx2i_conn,
1911 task = iscsi_itt_to_task(bnx2i_conn->cls_conn->dd_data,
1932 bnx2i_work->bnx2i_conn = bnx2i_conn;
1935 atomic_inc(&bnx2i_conn->work_cnt);
1943 bnx2i_process_scsi_cmd_resp(session, bnx2i_conn, (struct cqe *)cqe);
1951 * @bnx2i_conn: bnx2i connection
1955 static int bnx2i_process_new_cqes(struct bnx2i_conn *bnx2i_conn)
1957 struct iscsi_conn *conn = bnx2i_conn->cls_conn->dd_data;
1959 struct bnx2i_hba *hba = bnx2i_conn->hba;
1965 if (bnx2i_conn->ep == NULL)
1968 qp = &bnx2i_conn->ep->qp;
1987 bnx2i_unsol_pdu_adjust_rq(bnx2i_conn);
1999 bnx2i_queue_scsi_cmd_resp(session, bnx2i_conn, nopin);
2002 bnx2i_process_login_resp(session, bnx2i_conn,
2006 bnx2i_process_tmf_resp(session, bnx2i_conn,
2010 bnx2i_process_text_resp(session, bnx2i_conn,
2014 bnx2i_process_logout_resp(session, bnx2i_conn,
2018 if (bnx2i_process_nopin_mesg(session, bnx2i_conn,
2023 bnx2i_process_nopin_local_cmpl(session, bnx2i_conn,
2027 bnx2i_process_async_mesg(session, bnx2i_conn,
2032 bnx2i_process_reject_mesg(session, bnx2i_conn,
2036 bnx2i_process_cmd_cleanup_resp(session, bnx2i_conn,
2048 if (!atomic_read(&bnx2i_conn->ep->num_active_cmds))
2054 atomic_dec(&bnx2i_conn->ep->num_active_cmds);
2089 struct bnx2i_conn *bnx2i_conn;
2094 bnx2i_conn = bnx2i_get_conn_from_id(hba, iscsi_cid);
2096 if (!bnx2i_conn) {
2100 if (!bnx2i_conn->ep) {
2105 bnx2i_process_new_cqes(bnx2i_conn);
2106 nxt_idx = bnx2i_arm_cq_event_coalescing(bnx2i_conn->ep,
2108 if (nxt_idx && nxt_idx == bnx2i_process_new_cqes(bnx2i_conn))
2109 bnx2i_arm_cq_event_coalescing(bnx2i_conn->ep, CNIC_ARM_CQE_FP);
2123 struct bnx2i_conn *conn;
2151 * @bnx2i_conn: iscsi connection
2156 struct bnx2i_conn *bnx2i_conn)
2158 iscsi_conn_failure(bnx2i_conn->cls_conn->dd_data,
2174 struct bnx2i_conn *bnx2i_conn;
2178 bnx2i_conn = bnx2i_get_conn_from_id(hba, iscsi_cid);
2180 if (!bnx2i_conn) {
2187 bnx2i_recovery_que_add_conn(bnx2i_conn->hba, bnx2i_conn);
2207 struct bnx2i_conn *bnx2i_conn;
2217 bnx2i_conn = bnx2i_get_conn_from_id(hba, iscsi_cid);
2218 if (!bnx2i_conn) {
2362 bnx2i_conn->cls_conn->dd_data,
2367 bnx2i_conn->cls_conn->dd_data,
2370 bnx2i_conn->hba->shost->host_no,
2371 bnx2i_conn, bnx2i_conn->ep->ep_iscsi_cid,
2372 bnx2i_conn->ep->ep_cid);
2373 bnx2i_recovery_que_add_conn(bnx2i_conn->hba, bnx2i_conn);
2376 (void *) &bnx2i_conn->violation_notified))
2378 bnx2i_conn->cls_conn->dd_data,