Lines Matching refs:prm

1672 	struct qla_tgt_sess_work_param *prm;
1675 prm = kzalloc(sizeof(*prm), GFP_ATOMIC);
1676 if (!prm) {
1684 "Scheduling work (type %d, prm %p)"
1686 type, prm, param, param_size, tgt);
1688 prm->type = type;
1689 memcpy(&prm->tm_iocb, param, param_size);
1692 list_add_tail(&prm->sess_works_list_entry, &tgt->sess_works_list);
2430 static int qlt_pci_map_calc_cnt(struct qla_tgt_prm *prm)
2432 struct qla_tgt_cmd *cmd = prm->cmd;
2436 prm->sg = (struct scatterlist *)cmd->sg;
2437 prm->seg_cnt = dma_map_sg(&cmd->qpair->pdev->dev, cmd->sg,
2439 if (unlikely(prm->seg_cnt == 0))
2442 prm->cmd->sg_mapped = 1;
2449 if (prm->seg_cnt > QLA_TGT_DATASEGS_PER_CMD_24XX)
2450 prm->req_cnt += DIV_ROUND_UP(prm->seg_cnt -
2457 prm->seg_cnt = DIV_ROUND_UP(cmd->bufflen, cmd->blk_sz);
2458 prm->tot_dsds = prm->seg_cnt;
2460 prm->tot_dsds = prm->seg_cnt;
2463 prm->prot_sg = cmd->prot_sg;
2464 prm->prot_seg_cnt = dma_map_sg(&cmd->qpair->pdev->dev,
2467 if (unlikely(prm->prot_seg_cnt == 0))
2473 prm->prot_seg_cnt = DIV_ROUND_UP(cmd->bufflen,
2475 prm->tot_dsds += prm->prot_seg_cnt;
2477 prm->tot_dsds += prm->prot_seg_cnt;
2484 ql_dbg_qp(ql_dbg_tgt, prm->cmd->qpair, 0xe04d,
2486 0, prm->cmd->sg_cnt);
2595 struct qla_tgt_prm *prm)
2599 struct atio_from_isp *atio = &prm->cmd->atio;
2601 struct qla_tgt_cmd *cmd = prm->cmd;
2604 prm->pkt = pkt;
2608 pkt->entry_count = (uint8_t)prm->req_cnt;
2609 pkt->vp_index = prm->cmd->vp_idx;
2620 qpair->req->outstanding_cmds[h] = (srb_t *)prm->cmd;
2624 pkt->nport_handle = cpu_to_le16(prm->cmd->loop_id);
2632 pkt->u.status0.relative_offset = cpu_to_le32(prm->cmd->offset);
2636 prm->cmd->sess->edif.rx_bytes += cmd->bufflen;
2638 prm->cmd->sess->edif.tx_bytes += cmd->bufflen;
2650 static void qlt_load_cont_data_segments(struct qla_tgt_prm *prm)
2656 while (prm->seg_cnt > 0) {
2659 prm->cmd->qpair->req);
2678 cnt < QLA_TGT_DATASEGS_PER_CONT_24XX && prm->seg_cnt;
2679 cnt++, prm->seg_cnt--) {
2680 append_dsd64(&cur_dsd, prm->sg);
2681 prm->sg = sg_next(prm->sg);
2690 static void qlt_load_data_segments(struct qla_tgt_prm *prm)
2694 struct ctio7_to_24xx *pkt24 = (struct ctio7_to_24xx *)prm->pkt;
2696 pkt24->u.status0.transfer_length = cpu_to_le32(prm->cmd->bufflen);
2702 if (prm->seg_cnt)
2703 pkt24->dseg_count = cpu_to_le16(prm->seg_cnt);
2705 if (prm->seg_cnt == 0) {
2716 (cnt < QLA_TGT_DATASEGS_PER_CMD_24XX) && prm->seg_cnt;
2717 cnt++, prm->seg_cnt--) {
2718 append_dsd64(&cur_dsd, prm->sg);
2719 prm->sg = sg_next(prm->sg);
2722 qlt_load_cont_data_segments(prm);
2730 static void qlt_print_dif_err(struct qla_tgt_prm *prm)
2736 if (prm->sense_buffer && (prm->sense_buffer[12] == 0x10)) {
2737 cmd = prm->cmd;
2740 switch (prm->sense_buffer[13]) {
2778 struct qla_tgt_prm *prm, int xmit_type, uint8_t scsi_status,
2784 prm->cmd = cmd;
2785 prm->tgt = cmd->tgt;
2786 prm->pkt = NULL;
2787 prm->rq_result = scsi_status;
2788 prm->sense_buffer = &cmd->sense_buffer[0];
2789 prm->sense_buffer_len = TRANSPORT_SENSE_BUFFER;
2790 prm->sg = NULL;
2791 prm->seg_cnt = -1;
2792 prm->req_cnt = 1;
2793 prm->residual = 0;
2794 prm->add_status_pkt = 0;
2795 prm->prot_sg = NULL;
2796 prm->prot_seg_cnt = 0;
2797 prm->tot_dsds = 0;
2800 if (qlt_pci_map_calc_cnt(prm) != 0)
2804 *full_req_cnt = prm->req_cnt;
2807 prm->residual = se_cmd->residual_count;
2810 prm->residual, se_cmd->tag,
2812 cmd->bufflen, prm->rq_result);
2813 prm->rq_result |= SS_RESIDUAL_UNDER;
2815 prm->residual = se_cmd->residual_count;
2818 prm->residual, se_cmd->tag, se_cmd->t_task_cdb ?
2819 se_cmd->t_task_cdb[0] : 0, cmd->bufflen, prm->rq_result);
2820 prm->rq_result |= SS_RESIDUAL_OVER;
2829 if (QLA_TGT_SENSE_VALID(prm->sense_buffer) ||
2831 (prm->rq_result != 0))) {
2832 prm->add_status_pkt = 1;
2855 struct qla_tgt_prm *prm)
2857 prm->sense_buffer_len = min_t(uint32_t, prm->sense_buffer_len,
2860 if (qlt_need_explicit_conf(prm->cmd, 0)) {
2865 ctio->u.status0.residual = cpu_to_le32(prm->residual);
2866 ctio->u.status0.scsi_status = cpu_to_le16(prm->rq_result);
2867 if (QLA_TGT_SENSE_VALID(prm->sense_buffer)) {
2870 if (qlt_need_explicit_conf(prm->cmd, 1)) {
2871 if ((prm->rq_result & SS_SCSI_STATUS_BYTE) != 0) {
2872 ql_dbg_qp(ql_dbg_tgt, prm->cmd->qpair, 0xe017,
2890 cpu_to_le16(prm->sense_buffer_len);
2891 for (i = 0; i < prm->sense_buffer_len/4; i++) {
2895 &((uint32_t *)prm->sense_buffer)[i]);
2899 qlt_print_dif_err(prm);
3044 qlt_build_ctio_crc2_pkt(struct qla_qpair *qpair, struct qla_tgt_prm *prm)
3056 struct qla_tgt_cmd *cmd = prm->cmd;
3059 struct atio_from_isp *atio = &prm->cmd->atio;
3067 prm->pkt = pkt;
3073 prm->prot_sg, prm->prot_seg_cnt, se_cmd->t_task_lba);
3146 qpair->req->outstanding_cmds[h] = (srb_t *)prm->cmd;
3150 pkt->nport_handle = cpu_to_le16(prm->cmd->loop_id);
3161 pkt->relative_offset = cpu_to_le32(prm->cmd->offset);
3169 pkt->dseg_count = cpu_to_le16(prm->tot_dsds);
3203 cpu_to_le16(prm->tot_dsds - prm->prot_seg_cnt);
3225 if (!bundling && prm->prot_seg_cnt) {
3227 prm->tot_dsds, &tc))
3230 (prm->tot_dsds - prm->prot_seg_cnt), &tc))
3233 if (bundling && prm->prot_seg_cnt) {
3239 prm->prot_seg_cnt, cmd))
3261 struct qla_tgt_prm prm;
3278 res = qlt_pre_xmit_response(cmd, &prm, xmit_type, scsi_status,
3311 res = qlt_build_ctio_crc2_pkt(qpair, &prm);
3313 res = qlt_24xx_build_ctio_pkt(qpair, &prm);
3319 pkt = (struct ctio7_to_24xx *)prm.pkt;
3327 qlt_load_data_segments(&prm);
3329 if (prm.add_status_pkt == 0) {
3332 cpu_to_le16(prm.rq_result);
3335 cpu_to_le32(prm.residual);
3383 &prm);
3386 qlt_24xx_init_ctio_to_isp(pkt, &prm);
3416 struct qla_tgt_prm prm;
3421 memset(&prm, 0, sizeof(prm));
3422 prm.cmd = cmd;
3423 prm.tgt = tgt;
3424 prm.sg = NULL;
3425 prm.req_cnt = 1;
3445 if (qlt_pci_map_calc_cnt(&prm) != 0)
3450 res = qlt_check_reserve_free_req(qpair, prm.req_cnt);
3454 res = qlt_build_ctio_crc2_pkt(qpair, &prm);
3456 res = qlt_24xx_build_ctio_pkt(qpair, &prm);
3459 qpair->req->cnt += prm.req_cnt;
3463 pkt = (struct ctio7_to_24xx *)prm.pkt;
3468 qlt_load_data_segments(&prm);
6271 struct qla_tgt_sess_work_param *prm)
6285 s_id = le_id_to_be(prm->abts.fcp_hdr_le.s_id);
6312 rc = __qlt_24xx_handle_abts(vha, &prm->abts, sess);
6326 qlt_24xx_send_abts_resp(ha->base_qpair, &prm->abts,
6341 struct qla_tgt_sess_work_param *prm = list_entry(
6342 tgt->sess_works_list.next, typeof(*prm),
6349 list_del(&prm->sess_works_list_entry);
6353 switch (prm->type) {
6355 qlt_abort_work(tgt, prm);
6364 kfree(prm);