Lines Matching defs:job

67 	/* job waiting for this event to finish */
77 /* job waiting for this iocb to finish */
90 /* job waiting for this mbox command to finish */
101 /* job waiting for this iocb to finish */
167 struct fc_bsg_job *job;
184 job = iocb->set_job;
185 job->dd_data = NULL; /* so timeout handler does not reply */
191 pci_unmap_sg(phba->pcidev, job->request_payload.sg_list,
192 job->request_payload.sg_cnt, DMA_TO_DEVICE);
193 pci_unmap_sg(phba->pcidev, job->reply_payload.sg_list,
194 job->reply_payload.sg_cnt, DMA_FROM_DEVICE);
212 job->reply->reply_payload_rcv_len =
221 job->reply->result = rc;
222 /* complete the job back to userspace */
223 job->job_done(job);
230 * @job: fc_bsg_job to handle
233 lpfc_bsg_send_mgmt_cmd(struct fc_bsg_job *job)
235 struct lpfc_vport *vport = (struct lpfc_vport *)job->shost->hostdata;
237 struct lpfc_rport_data *rdata = job->rport->dd_data;
255 job->reply->reply_payload_rcv_len = 0;
297 request_nseg = pci_map_sg(phba->pcidev, job->request_payload.sg_list,
298 job->request_payload.sg_cnt, DMA_TO_DEVICE);
299 for_each_sg(job->request_payload.sg_list, sgel, request_nseg, numbde) {
309 reply_nseg = pci_map_sg(phba->pcidev, job->reply_payload.sg_list,
310 job->reply_payload.sg_cnt, DMA_FROM_DEVICE);
311 for_each_sg(job->reply_payload.sg_list, sgel, reply_nseg, numbde) {
350 dd_data->context_un.iocb.set_job = job;
373 pci_unmap_sg(phba->pcidev, job->request_payload.sg_list,
374 job->request_payload.sg_cnt, DMA_TO_DEVICE);
375 pci_unmap_sg(phba->pcidev, job->reply_payload.sg_list,
376 job->reply_payload.sg_cnt, DMA_FROM_DEVICE);
390 job->reply->result = rc;
391 job->dd_data = NULL;
418 struct fc_bsg_job *job;
440 job = dd_data->context_un.iocb.set_job;
446 pci_unmap_sg(phba->pcidev, job->request_payload.sg_list,
447 job->request_payload.sg_cnt, DMA_TO_DEVICE);
448 pci_unmap_sg(phba->pcidev, job->reply_payload.sg_list,
449 job->reply_payload.sg_cnt, DMA_FROM_DEVICE);
451 if (job->reply->result == -EAGAIN)
454 job->reply->reply_payload_rcv_len =
457 job->reply->reply_payload_rcv_len =
461 els_reply = &job->reply->reply_data.ctels_reply;
477 job->reply->result = rc;
478 job->dd_data = NULL;
479 /* complete the job back to userspace */
480 job->job_done(job);
487 * @job: fc_bsg_job to handle
490 lpfc_bsg_rport_els(struct fc_bsg_job *job)
492 struct lpfc_vport *vport = (struct lpfc_vport *)job->shost->hostdata;
494 struct lpfc_rport_data *rdata = job->rport->dd_data;
517 job->reply->reply_payload_rcv_len = 0;
533 elscmd = job->request->rqst_data.r_els.els_code;
534 cmdsize = job->request_payload.payload_len;
535 rspsize = job->reply_payload.payload_len;
567 request_nseg = pci_map_sg(phba->pcidev, job->request_payload.sg_list,
568 job->request_payload.sg_cnt, DMA_TO_DEVICE);
569 for_each_sg(job->request_payload.sg_list, sgel, request_nseg, numbde) {
579 reply_nseg = pci_map_sg(phba->pcidev, job->reply_payload.sg_list,
580 job->reply_payload.sg_cnt, DMA_FROM_DEVICE);
581 for_each_sg(job->reply_payload.sg_list, sgel, reply_nseg, numbde) {
603 dd_data->context_un.iocb.set_job = job;
626 pci_unmap_sg(phba->pcidev, job->request_payload.sg_list,
627 job->request_payload.sg_cnt, DMA_TO_DEVICE);
628 pci_unmap_sg(phba->pcidev, job->reply_payload.sg_list,
629 job->reply_payload.sg_cnt, DMA_FROM_DEVICE);
643 job->reply->result = rc;
644 job->dd_data = NULL;
788 struct fc_bsg_job *job = NULL;
987 job = evt->set_job;
989 if (job) {
990 job->reply->reply_payload_rcv_len = size;
992 job->reply->result = 0;
993 job->dd_data = NULL;
994 /* complete the job back to userspace */
996 job->job_done(job);
1013 * @job: SET_EVENT fc_bsg_job
1016 lpfc_bsg_hba_set_event(struct fc_bsg_job *job)
1018 struct lpfc_vport *vport = (struct lpfc_vport *)job->shost->hostdata;
1027 if (job->request_len <
1045 job->request->rqst_data.h_vendor.vendor_cmd;
1081 evt->set_job = job; /* for unsolicited command */
1082 job->dd_data = dd_data; /* for fc transport timeout callback*/
1084 return 0; /* call job done later */
1090 job->dd_data = NULL;
1096 * @job: GET_EVENT fc_bsg_job
1099 lpfc_bsg_hba_get_event(struct fc_bsg_job *job)
1101 struct lpfc_vport *vport = (struct lpfc_vport *)job->shost->hostdata;
1110 if (job->request_len <
1120 job->request->rqst_data.h_vendor.vendor_cmd;
1123 job->reply->reply_data.vendor_reply.vendor_rsp;
1143 job->reply->reply_payload_rcv_len = 0;
1148 if (evt_dat->len > job->request_payload.payload_len) {
1149 evt_dat->len = job->request_payload.payload_len;
1153 job->request_payload.payload_len);
1159 job->reply->reply_payload_rcv_len =
1160 sg_copy_from_buffer(job->request_payload.sg_list,
1161 job->request_payload.sg_cnt,
1164 job->reply->reply_payload_rcv_len = 0;
1174 job->dd_data = NULL;
1175 job->reply->result = 0;
1176 job->job_done(job);
1180 job->dd_data = NULL;
1181 job->reply->result = rc;
1208 struct fc_bsg_job *job;
1223 job = dd_data->context_un.iocb.set_job;
1228 pci_unmap_sg(phba->pcidev, job->request_payload.sg_list,
1229 job->request_payload.sg_cnt, DMA_TO_DEVICE);
1247 job->reply->reply_payload_rcv_len =
1256 job->reply->result = rc;
1257 job->dd_data = NULL;
1258 /* complete the job back to userspace */
1259 job->job_done(job);
1267 * @job: Pointer to the job object.
1273 lpfc_issue_ct_rsp(struct lpfc_hba *phba, struct fc_bsg_job *job, uint32_t tag,
1373 dd_data->context_un.iocb.set_job = job;
1402 * @job: SEND_MGMT_RESP fc_bsg_job
1405 lpfc_bsg_send_mgmt_rsp(struct fc_bsg_job *job)
1407 struct lpfc_vport *vport = (struct lpfc_vport *)job->shost->hostdata;
1410 job->request->rqst_data.h_vendor.vendor_cmd;
1419 (unsigned long)job->request_payload.payload_len;
1423 job->reply->reply_payload_rcv_len = 0;
1444 request_nseg = pci_map_sg(phba->pcidev, job->request_payload.sg_list,
1445 job->request_payload.sg_cnt, DMA_TO_DEVICE);
1446 for_each_sg(job->request_payload.sg_list, sgel, request_nseg, numbde) {
1456 rc = lpfc_issue_ct_rsp(phba, job, tag, bmp, request_nseg);
1462 pci_unmap_sg(phba->pcidev, job->request_payload.sg_list,
1463 job->request_payload.sg_cnt, DMA_TO_DEVICE);
1471 job->reply->result = rc;
1472 job->dd_data = NULL;
1556 * @job: LPFC_BSG_VENDOR_DIAG_MODE
1567 lpfc_sli3_bsg_diag_loopback_mode(struct lpfc_hba *phba, struct fc_bsg_job *job)
1578 job->reply->reply_payload_rcv_len = 0;
1580 if (job->request_len < sizeof(struct fc_bsg_request) +
1585 job->request_len,
1598 job->request->rqst_data.h_vendor.vendor_cmd;
1671 job->reply->result = rc;
1672 /* complete the job back to userspace if no error */
1674 job->job_done(job);
1814 * @job: LPFC_BSG_VENDOR_DIAG_MODE
1820 lpfc_sli4_bsg_diag_loopback_mode(struct lpfc_hba *phba, struct fc_bsg_job *job)
1827 job->reply->reply_payload_rcv_len = 0;
1829 if (job->request_len < sizeof(struct fc_bsg_request) +
1834 job->request_len,
1859 job->request->rqst_data.h_vendor.vendor_cmd;
1956 job->reply->result = rc;
1957 /* complete the job back to userspace if no error */
1959 job->job_done(job);
1965 * @job: LPFC_BSG_VENDOR_DIAG_MODE
1971 lpfc_bsg_diag_loopback_mode(struct fc_bsg_job *job)
1978 shost = job->shost;
1981 vport = (struct lpfc_vport *)job->shost->hostdata;
1989 rc = lpfc_sli3_bsg_diag_loopback_mode(phba, job);
1992 rc = lpfc_sli4_bsg_diag_loopback_mode(phba, job);
2001 * @job: LPFC_BSG_VENDOR_DIAG_MODE_END
2007 lpfc_sli4_bsg_diag_mode_end(struct fc_bsg_job *job)
2016 shost = job->shost;
2019 vport = (struct lpfc_vport *)job->shost->hostdata;
2037 job->request->rqst_data.h_vendor.vendor_cmd;
2069 job->reply->result = rc;
2070 /* complete the job back to userspace if no error */
2072 job->job_done(job);
2078 * @job: LPFC_BSG_VENDOR_DIAG_LINK_TEST
2084 lpfc_sli4_bsg_link_diag_test(struct fc_bsg_job *job)
2099 shost = job->shost;
2104 vport = (struct lpfc_vport *)job->shost->hostdata;
2125 if (job->request_len < sizeof(struct fc_bsg_request) +
2130 job->request_len,
2142 job->request->rqst_data.h_vendor.vendor_cmd;
2193 job->reply->reply_data.vendor_reply.vendor_rsp;
2195 if (job->reply_len <
2202 job->reply_len);
2221 job->reply->result = rc;
2222 /* complete the job back to userspace if no error */
2224 job->job_done(job);
2769 * @job: LPFC_BSG_VENDOR_DIAG_TEST fc_bsg_job
2787 lpfc_bsg_diag_loopback_run(struct fc_bsg_job *job)
2789 struct lpfc_vport *vport = (struct lpfc_vport *)job->shost->hostdata;
2818 job->reply->reply_payload_rcv_len = 0;
2820 if (job->request_len <
2829 if (job->request_payload.payload_len !=
2830 job->reply_payload.payload_len) {
2835 job->request->rqst_data.h_vendor.vendor_cmd;
2849 size = job->request_payload.payload_len;
2881 sg_copy_to_buffer(job->request_payload.sg_list,
2882 job->request_payload.sg_cnt,
3041 job->reply->reply_payload_rcv_len =
3042 sg_copy_from_buffer(job->reply_payload.sg_list,
3043 job->reply_payload.sg_cnt,
3045 job->reply->reply_payload_rcv_len = size;
3075 job->reply->result = rc;
3076 job->dd_data = NULL;
3077 /* complete the job back to userspace if no error */
3079 job->job_done(job);
3085 * @job: GET_DFC_REV fc_bsg_job
3088 lpfc_bsg_get_dfc_rev(struct fc_bsg_job *job)
3090 struct lpfc_vport *vport = (struct lpfc_vport *)job->shost->hostdata;
3096 if (job->request_len <
3106 job->request->rqst_data.h_vendor.vendor_cmd;
3109 job->reply->reply_data.vendor_reply.vendor_rsp;
3111 if (job->reply_len <
3123 job->reply->result = rc;
3125 job->job_done(job);
3144 struct fc_bsg_job *job;
3151 /* job already timed out? */
3165 job = dd_data->context_un.mbox.set_job;
3166 if (job) {
3167 size = job->reply_payload.payload_len;
3168 job->reply->reply_payload_rcv_len =
3169 sg_copy_from_buffer(job->reply_payload.sg_list,
3170 job->reply_payload.sg_cnt,
3172 /* need to hold the lock until we set job->dd_data to NULL
3174 * while we are still processing the job.
3176 job->dd_data = NULL;
3188 if (job) {
3189 job->reply->result = 0;
3190 job->job_done(job);
3207 /* return negative error values for bsg job */
3313 * lpfc_bsg_issue_mbox_ext_handle_job - job handler for multi-buffer mbox cmpl
3317 * This is routine handles BSG job for mailbox commands completions with
3324 struct fc_bsg_job *job;
3335 /* has the job already timed out? */
3338 job = NULL;
3362 job = dd_data->context_un.mbox.set_job;
3363 if (job) {
3364 size = job->reply_payload.payload_len;
3365 job->reply->reply_payload_rcv_len =
3366 sg_copy_from_buffer(job->reply_payload.sg_list,
3367 job->reply_payload.sg_cnt,
3370 job->reply->result = 0;
3371 job->dd_data = NULL;
3372 /* need to hold the lock util we set job->dd_data to NULL
3379 "(x%x/x%x) complete bsg job done, bsize:%d\n",
3391 if (!job)
3401 return job;
3415 struct fc_bsg_job *job;
3417 /* handle the BSG job with mailbox command */
3426 job = lpfc_bsg_issue_mbox_ext_handle_job(phba, pmboxq);
3434 /* complete the bsg job if we have it */
3435 if (job)
3436 job->job_done(job);
3452 struct fc_bsg_job *job;
3454 /* handle the BSG job with the mailbox command */
3463 job = lpfc_bsg_issue_mbox_ext_handle_job(phba, pmboxq);
3469 /* complete the bsg job if we have it */
3470 if (job)
3471 job->job_done(job);
3580 lpfc_bsg_sli_cfg_read_cmd_ext(struct lpfc_hba *phba, struct fc_bsg_job *job,
3596 (struct dfc_mbox_req *)job->request->rqst_data.h_vendor.vendor_cmd;
3717 dd_data->context_un.mbox.set_job = job;
3718 job->dd_data = dd_data;
3767 lpfc_bsg_sli_cfg_write_cmd_ext(struct lpfc_hba *phba, struct fc_bsg_job *job,
3781 (struct dfc_mbox_req *)job->request->rqst_data.h_vendor.vendor_cmd;
3886 dd_data->context_un.mbox.set_job = job;
3887 job->dd_data = dd_data;
3907 job->reply->result = 0;
3908 job->job_done(job);
3930 lpfc_bsg_handle_sli_cfg_mbox(struct lpfc_hba *phba, struct fc_bsg_job *job,
3956 rc = lpfc_bsg_sli_cfg_read_cmd_ext(phba, job,
3964 rc = lpfc_bsg_sli_cfg_write_cmd_ext(phba, job,
3982 rc = lpfc_bsg_sli_cfg_read_cmd_ext(phba, job,
4013 rc = lpfc_bsg_sli_cfg_read_cmd_ext(phba, job,
4021 rc = lpfc_bsg_sli_cfg_write_cmd_ext(phba, job,
4074 lpfc_bsg_read_ebuf_get(struct lpfc_hba *phba, struct fc_bsg_job *job)
4113 job->reply->reply_payload_rcv_len =
4114 sg_copy_from_buffer(job->reply_payload.sg_list,
4115 job->reply_payload.sg_cnt,
4127 job->reply->result = 0;
4128 job->job_done(job);
4142 lpfc_bsg_write_ebuf_set(struct lpfc_hba *phba, struct fc_bsg_job *job,
4169 size = job->request_payload.payload_len;
4170 sg_copy_to_buffer(job->request_payload.sg_list,
4171 job->request_payload.sg_cnt,
4225 dd_data->context_un.mbox.set_job = job;
4226 job->dd_data = dd_data;
4246 job->reply->result = 0;
4247 job->job_done(job);
4267 lpfc_bsg_handle_sli_cfg_ebuf(struct lpfc_hba *phba, struct fc_bsg_job *job,
4285 rc = lpfc_bsg_read_ebuf_get(phba, job);
4297 rc = lpfc_bsg_write_ebuf_set(phba, job, dmabuf);
4312 lpfc_bsg_handle_sli_cfg_ext(struct lpfc_hba *phba, struct fc_bsg_job *job,
4319 (struct dfc_mbox_req *)job->request->rqst_data.h_vendor.vendor_cmd;
4332 rc = lpfc_bsg_handle_sli_cfg_mbox(phba, job, dmabuf);
4355 rc = lpfc_bsg_handle_sli_cfg_ebuf(phba, job, dmabuf);
4385 * being reset) and com-plete the job, otherwise issue the mailbox command and
4389 lpfc_bsg_issue_mbox(struct lpfc_hba *phba, struct fc_bsg_job *job,
4412 job->reply->reply_payload_rcv_len = 0;
4415 if (job->reply_payload.payload_len > BSG_MBOX_SIZE ||
4416 job->request_payload.payload_len > BSG_MBOX_SIZE) {
4431 (struct dfc_mbox_req *)job->request->rqst_data.h_vendor.vendor_cmd;
4448 size = job->request_payload.payload_len;
4449 sg_copy_to_buffer(job->request_payload.sg_list,
4450 job->request_payload.sg_cnt, pmbx, size);
4454 rc = lpfc_bsg_handle_sli_cfg_ext(phba, job, dmabuf);
4633 dd_data->context_un.mbox.set_job = job;
4638 job->dd_data = dd_data;
4648 /* job finished, copy the data */
4650 job->reply->reply_payload_rcv_len =
4651 sg_copy_from_buffer(job->reply_payload.sg_list,
4652 job->reply_payload.sg_cnt,
4661 return 1; /* job started */
4664 /* common exit for error or job completed inline */
4676 * @job: MBOX fc_bsg_job for LPFC_BSG_VENDOR_MBOX.
4679 lpfc_bsg_mbox_cmd(struct fc_bsg_job *job)
4681 struct lpfc_vport *vport = (struct lpfc_vport *)job->shost->hostdata;
4687 job->reply->reply_payload_rcv_len = 0;
4688 if (job->request_len <
4694 (int)(job->request_len -
4698 job->request->rqst_data.h_vendor.vendor_cmd;
4703 rc = lpfc_bsg_issue_mbox(phba, job, vport);
4706 /* job done */
4707 job->reply->result = 0;
4708 job->dd_data = NULL;
4709 job->job_done(job);
4711 /* job submitted, will complete later*/
4715 job->reply->result = rc;
4716 job->dd_data = NULL;
4745 struct fc_bsg_job *job;
4761 job = menlo->set_job;
4762 job->dd_data = NULL; /* so timeout handler does not reply */
4775 pci_unmap_sg(phba->pcidev, job->request_payload.sg_list,
4776 job->request_payload.sg_cnt, DMA_TO_DEVICE);
4777 pci_unmap_sg(phba->pcidev, job->reply_payload.sg_list,
4778 job->reply_payload.sg_cnt, DMA_FROM_DEVICE);
4785 job->reply->reply_data.vendor_reply.vendor_rsp;
4803 job->reply->reply_payload_rcv_len =
4812 job->reply->result = rc;
4813 /* complete the job back to userspace */
4814 job->job_done(job);
4821 * @job: fc_bsg_job to handle
4829 lpfc_menlo_cmd(struct fc_bsg_job *job)
4831 struct lpfc_vport *vport = (struct lpfc_vport *)job->shost->hostdata;
4848 job->reply->reply_payload_rcv_len = 0;
4850 if (job->request_len <
4860 if (job->reply_len <
4878 job->request->rqst_data.h_vendor.vendor_cmd;
4881 job->reply->reply_data.vendor_reply.vendor_rsp;
4920 request_nseg = pci_map_sg(phba->pcidev, job->request_payload.sg_list,
4921 job->request_payload.sg_cnt, DMA_TO_DEVICE);
4922 for_each_sg(job->request_payload.sg_list, sgel, request_nseg, numbde) {
4932 reply_nseg = pci_map_sg(phba->pcidev, job->reply_payload.sg_list,
4933 job->reply_payload.sg_cnt, DMA_FROM_DEVICE);
4934 for_each_sg(job->reply_payload.sg_list, sgel, reply_nseg, numbde) {
4983 dd_data->context_un.menlo.set_job = job;
4992 pci_unmap_sg(phba->pcidev, job->request_payload.sg_list,
4993 job->request_payload.sg_cnt, DMA_TO_DEVICE);
4994 pci_unmap_sg(phba->pcidev, job->reply_payload.sg_list,
4995 job->reply_payload.sg_cnt, DMA_FROM_DEVICE);
5009 job->reply->result = rc;
5010 job->dd_data = NULL;
5016 * @job: fc_bsg_job to handle
5019 lpfc_bsg_hst_vendor(struct fc_bsg_job *job)
5021 int command = job->request->rqst_data.h_vendor.vendor_cmd[0];
5026 rc = lpfc_bsg_hba_set_event(job);
5029 rc = lpfc_bsg_hba_get_event(job);
5032 rc = lpfc_bsg_send_mgmt_rsp(job);
5035 rc = lpfc_bsg_diag_loopback_mode(job);
5038 rc = lpfc_sli4_bsg_diag_mode_end(job);
5041 rc = lpfc_bsg_diag_loopback_run(job);
5044 rc = lpfc_sli4_bsg_link_diag_test(job);
5047 rc = lpfc_bsg_get_dfc_rev(job);
5050 rc = lpfc_bsg_mbox_cmd(job);
5054 rc = lpfc_menlo_cmd(job);
5058 job->reply->reply_payload_rcv_len = 0;
5060 job->reply->result = rc;
5069 * @job: fc_bsg_job to handle
5072 lpfc_bsg_request(struct fc_bsg_job *job)
5077 msgcode = job->request->msgcode;
5080 rc = lpfc_bsg_hst_vendor(job);
5083 rc = lpfc_bsg_rport_els(job);
5086 rc = lpfc_bsg_send_mgmt_cmd(job);
5090 job->reply->reply_payload_rcv_len = 0;
5092 job->reply->result = rc;
5101 * @job: fc_bsg_job that has timed out
5103 * This function just aborts the job's IOCB. The aborted IOCB will return to
5107 lpfc_bsg_timeout(struct fc_bsg_job *job)
5109 struct lpfc_vport *vport = (struct lpfc_vport *)job->shost->hostdata;
5121 dd_data = (struct bsg_job_data *)job->dd_data;
5132 /* hint to completion handler that the job timed out */
5133 job->reply->result = -EAGAIN;
5142 /* this event has no job anymore */
5144 job->dd_data = NULL;
5145 job->reply->reply_payload_rcv_len = 0;
5149 job->reply->result = -EAGAIN;
5151 job->job_done(job);
5155 /* this mbox has no job anymore */
5157 job->dd_data = NULL;
5158 job->reply->reply_payload_rcv_len = 0;
5159 job->reply->result = -EAGAIN;
5162 job->job_done(job);
5169 /* hint to completion handler that the job timed out */
5170 job->reply->result = -EAGAIN;