Lines Matching refs:skspcl
260 struct skd_special_context *skspcl; member
457 struct skd_special_context *skspcl);
470 struct skd_special_context *skspcl);
1256 struct skd_special_context *skspcl);
1498 struct skd_special_context *skspcl = NULL; in skd_sg_io_obtain_skspcl() local
1505 skspcl = skdev->skspcl_free_list; in skd_sg_io_obtain_skspcl()
1506 if (skspcl != NULL) { in skd_sg_io_obtain_skspcl()
1508 (struct skd_special_context *)skspcl->req.next; in skd_sg_io_obtain_skspcl()
1509 skspcl->req.id += SKD_ID_INCR; in skd_sg_io_obtain_skspcl()
1510 skspcl->req.state = SKD_REQ_STATE_SETUP; in skd_sg_io_obtain_skspcl()
1511 skspcl->orphaned = 0; in skd_sg_io_obtain_skspcl()
1512 skspcl->req.n_sg = 0; in skd_sg_io_obtain_skspcl()
1516 if (skspcl != NULL) { in skd_sg_io_obtain_skspcl()
1546 sksgio->skspcl = skspcl; in skd_sg_io_obtain_skspcl()
1627 struct skd_special_context *skspcl = sksgio->skspcl; in skd_sg_io_prep_buffering() local
1628 struct skd_request_context *skreq = &skspcl->req; in skd_sg_io_prep_buffering()
1643 struct skd_special_context *skspcl = sksgio->skspcl; in skd_sg_io_copy_buffer() local
1671 page = sg_page(&skspcl->req.sg[sksg_ix++]); in skd_sg_io_copy_buffer()
1700 struct skd_special_context *skspcl = sksgio->skspcl; in skd_sg_io_send_fitmsg() local
1701 struct fit_msg_hdr *fmh = (struct fit_msg_hdr *)skspcl->msg_buf; in skd_sg_io_send_fitmsg()
1704 memset(skspcl->msg_buf, 0, SKD_N_SPECIAL_FITMSG_BYTES); in skd_sg_io_send_fitmsg()
1713 cpu_to_be64(skspcl->req.sksg_dma_address); in skd_sg_io_send_fitmsg()
1714 scsi_req->hdr.tag = skspcl->req.id; in skd_sg_io_send_fitmsg()
1716 cpu_to_be32(skspcl->req.sg_byte_count); in skd_sg_io_send_fitmsg()
1719 skspcl->req.state = SKD_REQ_STATE_BUSY; in skd_sg_io_send_fitmsg()
1720 skd_send_special_fitmsg(skdev, skspcl); in skd_sg_io_send_fitmsg()
1731 (sksgio->skspcl->req.state != in skd_sg_io_await()
1738 if (sksgio->skspcl->req.state == SKD_REQ_STATE_ABORTED) { in skd_sg_io_await()
1740 skdev->name, __func__, __LINE__, sksgio->skspcl); in skd_sg_io_await()
1745 sksgio->skspcl->req.completion.status = in skd_sg_io_await()
1748 memset(&sksgio->skspcl->req.err_info, 0, in skd_sg_io_await()
1749 sizeof(sksgio->skspcl->req.err_info)); in skd_sg_io_await()
1750 sksgio->skspcl->req.err_info.type = 0x70; in skd_sg_io_await()
1751 sksgio->skspcl->req.err_info.key = ABORTED_COMMAND; in skd_sg_io_await()
1752 sksgio->skspcl->req.err_info.code = 0x44; in skd_sg_io_await()
1753 sksgio->skspcl->req.err_info.qual = 0; in skd_sg_io_await()
1755 } else if (sksgio->skspcl->req.state != SKD_REQ_STATE_BUSY) in skd_sg_io_await()
1762 sksgio->skspcl->orphaned = 1; in skd_sg_io_await()
1763 sksgio->skspcl = NULL; in skd_sg_io_await()
1785 struct skd_special_context *skspcl = sksgio->skspcl; in skd_sg_io_put_status() local
1788 u32 nb = be32_to_cpu(skspcl->req.completion.num_returned_bytes); in skd_sg_io_put_status()
1790 sgp->status = skspcl->req.completion.status; in skd_sg_io_put_status()
1807 struct fit_comp_error_info *ei = &skspcl->req.err_info; in skd_sg_io_put_status()
1835 struct skd_special_context *skspcl = sksgio->skspcl; in skd_sg_io_release_skspcl() local
1837 if (skspcl != NULL) { in skd_sg_io_release_skspcl()
1840 sksgio->skspcl = NULL; in skd_sg_io_release_skspcl()
1843 skd_release_special(skdev, skspcl); in skd_sg_io_release_skspcl()
1858 struct skd_special_context *skspcl = &skdev->internal_skspcl; in skd_format_internal_skspcl() local
1859 struct fit_sg_descriptor *sgd = &skspcl->req.sksg_list[0]; in skd_format_internal_skspcl()
1864 fmh = (struct fit_msg_hdr *)&skspcl->msg_buf[0]; in skd_format_internal_skspcl()
1868 scsi = (struct skd_scsi_request *)&skspcl->msg_buf[64]; in skd_format_internal_skspcl()
1870 dma_address = skspcl->req.sksg_dma_address; in skd_format_internal_skspcl()
1874 sgd->host_side_addr = skspcl->db_dma_address; in skd_format_internal_skspcl()
1884 struct skd_special_context *skspcl, in skd_send_internal_skspcl() argument
1887 struct fit_sg_descriptor *sgd = &skspcl->req.sksg_list[0]; in skd_send_internal_skspcl()
1889 unsigned char *buf = skspcl->data_buf; in skd_send_internal_skspcl()
1892 if (skspcl->req.state != SKD_REQ_STATE_IDLE) in skd_send_internal_skspcl()
1899 SKD_ASSERT((skspcl->req.id & SKD_ID_INCR) == 0); in skd_send_internal_skspcl()
1900 skspcl->req.state = SKD_REQ_STATE_BUSY; in skd_send_internal_skspcl()
1901 skspcl->req.id += SKD_ID_INCR; in skd_send_internal_skspcl()
1903 scsi = (struct skd_scsi_request *)&skspcl->msg_buf[64]; in skd_send_internal_skspcl()
1904 scsi->hdr.tag = skspcl->req.id; in skd_send_internal_skspcl()
1955 memset(skspcl->data_buf, 0, sgd->byte_count); in skd_send_internal_skspcl()
1963 skd_send_special_fitmsg(skdev, skspcl); in skd_send_internal_skspcl()
1968 struct skd_special_context *skspcl = &skdev->internal_skspcl; in skd_refresh_device_data() local
1970 skd_send_internal_skspcl(skdev, skspcl, TEST_UNIT_READY); in skd_refresh_device_data()
1974 struct skd_special_context *skspcl) in skd_chk_read_buf() argument
1976 unsigned char *buf = skspcl->data_buf; in skd_chk_read_buf()
2003 struct skd_special_context *skspcl) in skd_complete_internal() argument
2005 u8 *buf = skspcl->data_buf; in skd_complete_internal()
2009 (struct skd_scsi_request *)&skspcl->msg_buf[64]; in skd_complete_internal()
2011 SKD_ASSERT(skspcl == &skdev->internal_skspcl); in skd_complete_internal()
2016 skspcl->req.completion = *skcomp; in skd_complete_internal()
2017 skspcl->req.state = SKD_REQ_STATE_IDLE; in skd_complete_internal()
2018 skspcl->req.id += SKD_ID_INCR; in skd_complete_internal()
2020 status = skspcl->req.completion.status; in skd_complete_internal()
2028 skd_send_internal_skspcl(skdev, skspcl, WRITE_BUFFER); in skd_complete_internal()
2031 skd_send_internal_skspcl(skdev, skspcl, WRITE_BUFFER); in skd_complete_internal()
2041 skd_send_internal_skspcl(skdev, skspcl, 0x00); in skd_complete_internal()
2047 skd_send_internal_skspcl(skdev, skspcl, READ_BUFFER); in skd_complete_internal()
2057 skd_send_internal_skspcl(skdev, skspcl, 0x00); in skd_complete_internal()
2063 if (skd_chk_read_buf(skdev, skspcl) == 0) in skd_complete_internal()
2064 skd_send_internal_skspcl(skdev, skspcl, in skd_complete_internal()
2093 skd_send_internal_skspcl(skdev, skspcl, 0x00); in skd_complete_internal()
2116 skd_send_internal_skspcl(skdev, skspcl, INQUIRY); in skd_complete_internal()
2124 skd_send_internal_skspcl(skdev, skspcl, INQUIRY); in skd_complete_internal()
2128 skd_send_internal_skspcl(skdev, skspcl, in skd_complete_internal()
2222 struct skd_special_context *skspcl) in skd_send_special_fitmsg() argument
2227 u8 *bp = (u8 *)skspcl->msg_buf; in skd_send_special_fitmsg()
2242 skspcl, skspcl->req.id, skspcl->req.sksg_list, in skd_send_special_fitmsg()
2243 skspcl->req.sksg_dma_address); in skd_send_special_fitmsg()
2244 for (i = 0; i < skspcl->req.n_sg; i++) { in skd_send_special_fitmsg()
2246 &skspcl->req.sksg_list[i]; in skd_send_special_fitmsg()
2260 qcmd = skspcl->mb_dma_address; in skd_send_special_fitmsg()
2672 struct skd_special_context *skspcl) in skd_process_scsi_inq() argument
2675 struct fit_msg_hdr *fmh = (struct fit_msg_hdr *)skspcl->msg_buf; in skd_process_scsi_inq()
2678 dma_sync_sg_for_cpu(skdev->class_dev, skspcl->req.sg, skspcl->req.n_sg, in skd_process_scsi_inq()
2679 skspcl->req.sg_data_dir); in skd_process_scsi_inq()
2680 buf = skd_sg_1st_page_ptr(skspcl->req.sg); in skd_process_scsi_inq()
2842 struct skd_special_context *skspcl; in skd_complete_other() local
2872 skspcl = &skdev->skspcl_table[req_slot]; in skd_complete_other()
2873 if (skspcl->req.id == req_id && in skd_complete_other()
2874 skspcl->req.state == SKD_REQ_STATE_BUSY) { in skd_complete_other()
2876 skcomp, skerr, skspcl); in skd_complete_other()
2884 skspcl = &skdev->internal_skspcl; in skd_complete_other()
2885 if (skspcl->req.id == req_id && in skd_complete_other()
2886 skspcl->req.state == SKD_REQ_STATE_BUSY) { in skd_complete_other()
2888 skcomp, skerr, skspcl); in skd_complete_other()
2916 struct skd_special_context *skspcl) in skd_complete_special() argument
2919 skdev->name, __func__, __LINE__, skspcl); in skd_complete_special()
2920 if (skspcl->orphaned) { in skd_complete_special()
2925 skdev->name, __func__, __LINE__, skspcl); in skd_complete_special()
2926 skd_release_special(skdev, skspcl); in skd_complete_special()
2930 skd_process_scsi_inq(skdev, skcomp, skerr, skspcl); in skd_complete_special()
2932 skspcl->req.state = SKD_REQ_STATE_COMPLETED; in skd_complete_special()
2933 skspcl->req.completion = *skcomp; in skd_complete_special()
2934 skspcl->req.err_info = *skerr; in skd_complete_special()
2936 skd_log_check_status(skdev, skspcl->req.completion.status, skerr->key, in skd_complete_special()
2944 struct skd_special_context *skspcl) in skd_release_special() argument
2948 for (i = 0; i < skspcl->req.n_sg; i++) { in skd_release_special()
2949 struct page *page = sg_page(&skspcl->req.sg[i]); in skd_release_special()
2955 skspcl->req.state = SKD_REQ_STATE_IDLE; in skd_release_special()
2956 skspcl->req.id += SKD_ID_INCR; in skd_release_special()
2957 skspcl->req.next = in skd_release_special()
2959 skdev->skspcl_free_list = (struct skd_special_context *)skspcl; in skd_release_special()
3277 struct skd_special_context *skspcl = &skdev->skspcl_table[i]; in skd_recover_requests() local
3286 if (skspcl->req.state == SKD_REQ_STATE_BUSY) { in skd_recover_requests()
3287 if (skspcl->orphaned) { in skd_recover_requests()
3290 skspcl); in skd_recover_requests()
3291 skd_release_special(skdev, skspcl); in skd_recover_requests()
3295 skspcl); in skd_recover_requests()
3296 skspcl->req.state = SKD_REQ_STATE_ABORTED; in skd_recover_requests()
3583 struct skd_special_context *skspcl = &skdev->internal_skspcl; in skd_stop_device() local
3595 if (skspcl->req.state != SKD_REQ_STATE_IDLE) { in skd_stop_device()
3604 skd_send_internal_skspcl(skdev, skspcl, SYNCHRONIZE_CACHE); in skd_stop_device()
4294 struct skd_special_context *skspcl; in skd_cons_skspcl() local
4296 skspcl = &skdev->skspcl_table[i]; in skd_cons_skspcl()
4298 skspcl->req.id = i + SKD_ID_SPECIAL_REQUEST; in skd_cons_skspcl()
4299 skspcl->req.state = SKD_REQ_STATE_IDLE; in skd_cons_skspcl()
4301 skspcl->req.next = &skspcl[1].req; in skd_cons_skspcl()
4305 skspcl->msg_buf = in skd_cons_skspcl()
4307 &skspcl->mb_dma_address); in skd_cons_skspcl()
4308 if (skspcl->msg_buf == NULL) { in skd_cons_skspcl()
4313 skspcl->req.sg = kzalloc(sizeof(struct scatterlist) * in skd_cons_skspcl()
4315 if (skspcl->req.sg == NULL) { in skd_cons_skspcl()
4320 skspcl->req.sksg_list = skd_cons_sg_list(skdev, in skd_cons_skspcl()
4322 &skspcl->req. in skd_cons_skspcl()
4324 if (skspcl->req.sksg_list == NULL) { in skd_cons_skspcl()
4343 struct skd_special_context *skspcl; in skd_cons_sksb() local
4346 skspcl = &skdev->internal_skspcl; in skd_cons_sksb()
4348 skspcl->req.id = 0 + SKD_ID_INTERNAL; in skd_cons_sksb()
4349 skspcl->req.state = SKD_REQ_STATE_IDLE; in skd_cons_sksb()
4353 skspcl->data_buf = pci_zalloc_consistent(skdev->pdev, nbytes, in skd_cons_sksb()
4354 &skspcl->db_dma_address); in skd_cons_sksb()
4355 if (skspcl->data_buf == NULL) { in skd_cons_sksb()
4361 skspcl->msg_buf = pci_zalloc_consistent(skdev->pdev, nbytes, in skd_cons_sksb()
4362 &skspcl->mb_dma_address); in skd_cons_sksb()
4363 if (skspcl->msg_buf == NULL) { in skd_cons_sksb()
4368 skspcl->req.sksg_list = skd_cons_sg_list(skdev, 1, in skd_cons_sksb()
4369 &skspcl->req.sksg_dma_address); in skd_cons_sksb()
4370 if (skspcl->req.sksg_list == NULL) { in skd_cons_sksb()
4617 struct skd_special_context *skspcl; in skd_free_skspcl() local
4619 skspcl = &skdev->skspcl_table[i]; in skd_free_skspcl()
4621 if (skspcl->msg_buf != NULL) { in skd_free_skspcl()
4624 skspcl->msg_buf, in skd_free_skspcl()
4625 skspcl->mb_dma_address); in skd_free_skspcl()
4628 skspcl->msg_buf = NULL; in skd_free_skspcl()
4629 skspcl->mb_dma_address = 0; in skd_free_skspcl()
4631 skd_free_sg_list(skdev, skspcl->req.sksg_list, in skd_free_skspcl()
4633 skspcl->req.sksg_dma_address); in skd_free_skspcl()
4635 skspcl->req.sksg_list = NULL; in skd_free_skspcl()
4636 skspcl->req.sksg_dma_address = 0; in skd_free_skspcl()
4638 kfree(skspcl->req.sg); in skd_free_skspcl()
4647 struct skd_special_context *skspcl; in skd_free_sksb() local
4650 skspcl = &skdev->internal_skspcl; in skd_free_sksb()
4652 if (skspcl->data_buf != NULL) { in skd_free_sksb()
4656 skspcl->data_buf, skspcl->db_dma_address); in skd_free_sksb()
4659 skspcl->data_buf = NULL; in skd_free_sksb()
4660 skspcl->db_dma_address = 0; in skd_free_sksb()
4662 if (skspcl->msg_buf != NULL) { in skd_free_sksb()
4665 skspcl->msg_buf, skspcl->mb_dma_address); in skd_free_sksb()
4668 skspcl->msg_buf = NULL; in skd_free_sksb()
4669 skspcl->mb_dma_address = 0; in skd_free_sksb()
4671 skd_free_sg_list(skdev, skspcl->req.sksg_list, 1, in skd_free_sksb()
4672 skspcl->req.sksg_dma_address); in skd_free_sksb()
4674 skspcl->req.sksg_list = NULL; in skd_free_sksb()
4675 skspcl->req.sksg_dma_address = 0; in skd_free_sksb()