Lines Matching refs:prm

1078 	struct qla_tgt_sess_work_param *prm;  in qlt_sched_sess_work()  local
1081 prm = kzalloc(sizeof(*prm), GFP_ATOMIC); in qlt_sched_sess_work()
1082 if (!prm) { in qlt_sched_sess_work()
1092 type, prm, param, param_size, tgt); in qlt_sched_sess_work()
1094 prm->type = type; in qlt_sched_sess_work()
1095 memcpy(&prm->tm_iocb, param, param_size); in qlt_sched_sess_work()
1098 list_add_tail(&prm->sess_works_list_entry, &tgt->sess_works_list); in qlt_sched_sess_work()
1604 static int qlt_pci_map_calc_cnt(struct qla_tgt_prm *prm) in qlt_pci_map_calc_cnt() argument
1606 struct qla_tgt_cmd *cmd = prm->cmd; in qlt_pci_map_calc_cnt()
1610 prm->sg = (struct scatterlist *)cmd->sg; in qlt_pci_map_calc_cnt()
1611 prm->seg_cnt = pci_map_sg(prm->tgt->ha->pdev, cmd->sg, in qlt_pci_map_calc_cnt()
1613 if (unlikely(prm->seg_cnt == 0)) in qlt_pci_map_calc_cnt()
1616 prm->cmd->sg_mapped = 1; in qlt_pci_map_calc_cnt()
1623 if (prm->seg_cnt > prm->tgt->datasegs_per_cmd) in qlt_pci_map_calc_cnt()
1624 prm->req_cnt += DIV_ROUND_UP(prm->seg_cnt - in qlt_pci_map_calc_cnt()
1625 prm->tgt->datasegs_per_cmd, in qlt_pci_map_calc_cnt()
1626 prm->tgt->datasegs_per_cont); in qlt_pci_map_calc_cnt()
1631 prm->seg_cnt = DIV_ROUND_UP(cmd->bufflen, cmd->blk_sz); in qlt_pci_map_calc_cnt()
1632 prm->tot_dsds = prm->seg_cnt; in qlt_pci_map_calc_cnt()
1634 prm->tot_dsds = prm->seg_cnt; in qlt_pci_map_calc_cnt()
1637 prm->prot_sg = cmd->prot_sg; in qlt_pci_map_calc_cnt()
1638 prm->prot_seg_cnt = pci_map_sg(prm->tgt->ha->pdev, in qlt_pci_map_calc_cnt()
1641 if (unlikely(prm->prot_seg_cnt == 0)) in qlt_pci_map_calc_cnt()
1647 prm->prot_seg_cnt = DIV_ROUND_UP(cmd->bufflen, in qlt_pci_map_calc_cnt()
1649 prm->tot_dsds += prm->prot_seg_cnt; in qlt_pci_map_calc_cnt()
1651 prm->tot_dsds += prm->prot_seg_cnt; in qlt_pci_map_calc_cnt()
1658 ql_dbg(ql_dbg_tgt, prm->cmd->vha, 0xe04d, in qlt_pci_map_calc_cnt()
1660 0, prm->cmd->sg_cnt); in qlt_pci_map_calc_cnt()
1759 static int qlt_24xx_build_ctio_pkt(struct qla_tgt_prm *prm, in qlt_24xx_build_ctio_pkt() argument
1765 struct atio_from_isp *atio = &prm->cmd->atio; in qlt_24xx_build_ctio_pkt()
1769 prm->pkt = pkt; in qlt_24xx_build_ctio_pkt()
1773 pkt->entry_count = (uint8_t)prm->req_cnt; in qlt_24xx_build_ctio_pkt()
1785 ha->tgt.cmds[h-1] = prm->cmd; in qlt_24xx_build_ctio_pkt()
1788 pkt->nport_handle = prm->cmd->loop_id; in qlt_24xx_build_ctio_pkt()
1797 pkt->u.status0.relative_offset = cpu_to_le32(prm->cmd->offset); in qlt_24xx_build_ctio_pkt()
1806 static void qlt_load_cont_data_segments(struct qla_tgt_prm *prm, in qlt_load_cont_data_segments() argument
1811 int enable_64bit_addressing = prm->tgt->tgt_enable_64bit_addr; in qlt_load_cont_data_segments()
1814 while (prm->seg_cnt > 0) { in qlt_load_cont_data_segments()
1843 cnt < prm->tgt->datasegs_per_cont && prm->seg_cnt; in qlt_load_cont_data_segments()
1844 cnt++, prm->seg_cnt--) { in qlt_load_cont_data_segments()
1847 (sg_dma_address(prm->sg))); in qlt_load_cont_data_segments()
1852 (prm->sg))); in qlt_load_cont_data_segments()
1854 *dword_ptr++ = cpu_to_le32(sg_dma_len(prm->sg)); in qlt_load_cont_data_segments()
1856 prm->sg = sg_next(prm->sg); in qlt_load_cont_data_segments()
1865 static void qlt_load_data_segments(struct qla_tgt_prm *prm, in qlt_load_data_segments() argument
1870 int enable_64bit_addressing = prm->tgt->tgt_enable_64bit_addr; in qlt_load_data_segments()
1871 struct ctio7_to_24xx *pkt24 = (struct ctio7_to_24xx *)prm->pkt; in qlt_load_data_segments()
1873 pkt24->u.status0.transfer_length = cpu_to_le32(prm->cmd->bufflen); in qlt_load_data_segments()
1879 if (prm->seg_cnt) in qlt_load_data_segments()
1880 pkt24->dseg_count = cpu_to_le16(prm->seg_cnt); in qlt_load_data_segments()
1882 if (prm->seg_cnt == 0) { in qlt_load_data_segments()
1893 (cnt < prm->tgt->datasegs_per_cmd) && prm->seg_cnt; in qlt_load_data_segments()
1894 cnt++, prm->seg_cnt--) { in qlt_load_data_segments()
1896 cpu_to_le32(pci_dma_lo32(sg_dma_address(prm->sg))); in qlt_load_data_segments()
1900 sg_dma_address(prm->sg))); in qlt_load_data_segments()
1902 *dword_ptr++ = cpu_to_le32(sg_dma_len(prm->sg)); in qlt_load_data_segments()
1904 prm->sg = sg_next(prm->sg); in qlt_load_data_segments()
1907 qlt_load_cont_data_segments(prm, vha); in qlt_load_data_segments()
1919 struct qla_tgt_prm *prm, int xmit_type, uint8_t scsi_status, in qlt_pre_xmit_response() argument
1927 prm->cmd = cmd; in qlt_pre_xmit_response()
1928 prm->tgt = tgt; in qlt_pre_xmit_response()
1929 prm->rq_result = scsi_status; in qlt_pre_xmit_response()
1930 prm->sense_buffer = &cmd->sense_buffer[0]; in qlt_pre_xmit_response()
1931 prm->sense_buffer_len = TRANSPORT_SENSE_BUFFER; in qlt_pre_xmit_response()
1932 prm->sg = NULL; in qlt_pre_xmit_response()
1933 prm->seg_cnt = -1; in qlt_pre_xmit_response()
1934 prm->req_cnt = 1; in qlt_pre_xmit_response()
1935 prm->add_status_pkt = 0; in qlt_pre_xmit_response()
1942 if (qlt_pci_map_calc_cnt(prm) != 0) in qlt_pre_xmit_response()
1946 *full_req_cnt = prm->req_cnt; in qlt_pre_xmit_response()
1949 prm->residual = se_cmd->residual_count; in qlt_pre_xmit_response()
1952 "op %x, bufflen %d, rq_result %x)\n", prm->residual, in qlt_pre_xmit_response()
1954 cmd->bufflen, prm->rq_result); in qlt_pre_xmit_response()
1955 prm->rq_result |= SS_RESIDUAL_UNDER; in qlt_pre_xmit_response()
1957 prm->residual = se_cmd->residual_count; in qlt_pre_xmit_response()
1960 "op %x, bufflen %d, rq_result %x)\n", prm->residual, in qlt_pre_xmit_response()
1962 cmd->bufflen, prm->rq_result); in qlt_pre_xmit_response()
1963 prm->rq_result |= SS_RESIDUAL_OVER; in qlt_pre_xmit_response()
1972 if (QLA_TGT_SENSE_VALID(prm->sense_buffer) || in qlt_pre_xmit_response()
1974 (prm->rq_result != 0))) { in qlt_pre_xmit_response()
1975 prm->add_status_pkt = 1; in qlt_pre_xmit_response()
2087 struct qla_tgt_prm *prm) in qlt_24xx_init_ctio_to_isp() argument
2089 prm->sense_buffer_len = min_t(uint32_t, prm->sense_buffer_len, in qlt_24xx_init_ctio_to_isp()
2093 if (qlt_need_explicit_conf(prm->tgt->ha, prm->cmd, 0)) { in qlt_24xx_init_ctio_to_isp()
2098 ctio->u.status0.residual = cpu_to_le32(prm->residual); in qlt_24xx_init_ctio_to_isp()
2099 ctio->u.status0.scsi_status = cpu_to_le16(prm->rq_result); in qlt_24xx_init_ctio_to_isp()
2100 if (QLA_TGT_SENSE_VALID(prm->sense_buffer)) { in qlt_24xx_init_ctio_to_isp()
2103 if (qlt_need_explicit_conf(prm->tgt->ha, prm->cmd, 1)) { in qlt_24xx_init_ctio_to_isp()
2104 if (prm->cmd->se_cmd.scsi_status != 0) { in qlt_24xx_init_ctio_to_isp()
2105 ql_dbg(ql_dbg_tgt, prm->cmd->vha, 0xe017, in qlt_24xx_init_ctio_to_isp()
2123 cpu_to_le16(prm->sense_buffer_len); in qlt_24xx_init_ctio_to_isp()
2124 for (i = 0; i < prm->sense_buffer_len/4; i++) in qlt_24xx_init_ctio_to_isp()
2126 cpu_to_be32(((uint32_t *)prm->sense_buffer)[i]); in qlt_24xx_init_ctio_to_isp()
2128 if (unlikely((prm->sense_buffer_len % 4) != 0)) { in qlt_24xx_init_ctio_to_isp()
2133 "lost", prm->tgt->ha->vp_idx, in qlt_24xx_init_ctio_to_isp()
2134 prm->sense_buffer_len % 4); in qlt_24xx_init_ctio_to_isp()
2262 qlt_build_ctio_crc2_pkt(struct qla_tgt_prm *prm, scsi_qla_host_t *vha) in qlt_build_ctio_crc2_pkt() argument
2276 struct qla_tgt_cmd *cmd = prm->cmd; in qlt_build_ctio_crc2_pkt()
2279 struct atio_from_isp *atio = &prm->cmd->atio; in qlt_build_ctio_crc2_pkt()
2286 prm->pkt = pkt; in qlt_build_ctio_crc2_pkt()
2292 prm->prot_sg, prm->prot_seg_cnt, se_cmd->t_task_lba); in qlt_build_ctio_crc2_pkt()
2367 ha->tgt.cmds[h-1] = prm->cmd; in qlt_build_ctio_crc2_pkt()
2371 pkt->nport_handle = prm->cmd->loop_id; in qlt_build_ctio_crc2_pkt()
2384 pkt->relative_offset = cpu_to_le32(prm->cmd->offset); in qlt_build_ctio_crc2_pkt()
2393 pkt->dseg_count = prm->tot_dsds; in qlt_build_ctio_crc2_pkt()
2434 cpu_to_le16(prm->tot_dsds - prm->prot_seg_cnt); in qlt_build_ctio_crc2_pkt()
2448 if (!bundling && prm->prot_seg_cnt) { in qlt_build_ctio_crc2_pkt()
2450 prm->tot_dsds, cmd)) in qlt_build_ctio_crc2_pkt()
2453 (prm->tot_dsds - prm->prot_seg_cnt), cmd)) in qlt_build_ctio_crc2_pkt()
2456 if (bundling && prm->prot_seg_cnt) { in qlt_build_ctio_crc2_pkt()
2462 prm->prot_seg_cnt, cmd)) in qlt_build_ctio_crc2_pkt()
2484 struct qla_tgt_prm prm; in qlt_xmit_response() local
2502 memset(&prm, 0, sizeof(prm)); in qlt_xmit_response()
2511 res = qlt_pre_xmit_response(cmd, &prm, xmit_type, scsi_status, in qlt_xmit_response()
2540 res = qlt_build_ctio_crc2_pkt(&prm, vha); in qlt_xmit_response()
2542 res = qlt_24xx_build_ctio_pkt(&prm, vha); in qlt_xmit_response()
2548 pkt = (struct ctio7_to_24xx *)prm.pkt; in qlt_xmit_response()
2556 qlt_load_data_segments(&prm, vha); in qlt_xmit_response()
2558 if (prm.add_status_pkt == 0) { in qlt_xmit_response()
2561 cpu_to_le16(prm.rq_result); in qlt_xmit_response()
2563 cpu_to_le32(prm.residual); in qlt_xmit_response()
2609 &prm); in qlt_xmit_response()
2613 qlt_24xx_init_ctio_to_isp(pkt, &prm); in qlt_xmit_response()
2640 struct qla_tgt_prm prm; in qlt_rdy_to_xfer() local
2644 memset(&prm, 0, sizeof(prm)); in qlt_rdy_to_xfer()
2645 prm.cmd = cmd; in qlt_rdy_to_xfer()
2646 prm.tgt = tgt; in qlt_rdy_to_xfer()
2647 prm.sg = NULL; in qlt_rdy_to_xfer()
2648 prm.req_cnt = 1; in qlt_rdy_to_xfer()
2655 if (qlt_pci_map_calc_cnt(&prm) != 0) in qlt_rdy_to_xfer()
2677 res = qlt_check_reserve_free_req(vha, prm.req_cnt); in qlt_rdy_to_xfer()
2681 res = qlt_build_ctio_crc2_pkt(&prm, vha); in qlt_rdy_to_xfer()
2683 res = qlt_24xx_build_ctio_pkt(&prm, vha); in qlt_rdy_to_xfer()
2686 vha->req->cnt += prm.req_cnt; in qlt_rdy_to_xfer()
2690 pkt = (struct ctio7_to_24xx *)prm.pkt; in qlt_rdy_to_xfer()
2695 qlt_load_data_segments(&prm, vha); in qlt_rdy_to_xfer()
5594 struct qla_tgt_sess_work_param *prm) in qlt_abort_work() argument
5609 s_id[0] = prm->abts.fcp_hdr_le.s_id[2]; in qlt_abort_work()
5610 s_id[1] = prm->abts.fcp_hdr_le.s_id[1]; in qlt_abort_work()
5611 s_id[2] = prm->abts.fcp_hdr_le.s_id[0]; in qlt_abort_work()
5638 rc = __qlt_24xx_handle_abts(vha, &prm->abts, sess); in qlt_abort_work()
5647 qlt_24xx_send_abts_resp(vha, &prm->abts, FCP_TMF_REJECTED, false); in qlt_abort_work()
5654 struct qla_tgt_sess_work_param *prm) in qlt_tmr_work() argument
5656 struct atio_from_isp *a = &prm->tm_iocb2; in qlt_tmr_work()
5672 s_id = prm->tm_iocb2.u.isp24.fcp_hdr.s_id; in qlt_tmr_work()
5709 qlt_send_term_exchange(vha, NULL, &prm->tm_iocb2, 1); in qlt_tmr_work()
5725 struct qla_tgt_sess_work_param *prm = list_entry( in qlt_sess_work_fn() local
5726 tgt->sess_works_list.next, typeof(*prm), in qlt_sess_work_fn()
5733 list_del(&prm->sess_works_list_entry); in qlt_sess_work_fn()
5737 switch (prm->type) { in qlt_sess_work_fn()
5739 qlt_abort_work(tgt, prm); in qlt_sess_work_fn()
5742 qlt_tmr_work(tgt, prm); in qlt_sess_work_fn()
5751 kfree(prm); in qlt_sess_work_fn()