Lines Matching refs:sksgio

1237 					struct skd_sg_io *sksgio);
1239 struct skd_sg_io *sksgio);
1241 struct skd_sg_io *sksgio);
1243 struct skd_sg_io *sksgio, int dxfer_dir);
1245 struct skd_sg_io *sksgio);
1246 static int skd_sg_io_await(struct skd_device *skdev, struct skd_sg_io *sksgio);
1248 struct skd_sg_io *sksgio);
1250 struct skd_sg_io *sksgio);
1297 struct skd_sg_io sksgio; in skd_ioctl_sg_io() local
1299 memset(&sksgio, 0, sizeof(sksgio)); in skd_ioctl_sg_io()
1300 sksgio.mode = mode; in skd_ioctl_sg_io()
1301 sksgio.argp = argp; in skd_ioctl_sg_io()
1302 sksgio.iov = &sksgio.no_iov_iov; in skd_ioctl_sg_io()
1316 rc = skd_sg_io_get_and_check_args(skdev, &sksgio); in skd_ioctl_sg_io()
1320 rc = skd_sg_io_obtain_skspcl(skdev, &sksgio); in skd_ioctl_sg_io()
1324 rc = skd_sg_io_prep_buffering(skdev, &sksgio); in skd_ioctl_sg_io()
1328 rc = skd_sg_io_copy_buffer(skdev, &sksgio, SG_DXFER_TO_DEV); in skd_ioctl_sg_io()
1332 rc = skd_sg_io_send_fitmsg(skdev, &sksgio); in skd_ioctl_sg_io()
1336 rc = skd_sg_io_await(skdev, &sksgio); in skd_ioctl_sg_io()
1340 rc = skd_sg_io_copy_buffer(skdev, &sksgio, SG_DXFER_FROM_DEV); in skd_ioctl_sg_io()
1344 rc = skd_sg_io_put_status(skdev, &sksgio); in skd_ioctl_sg_io()
1351 skd_sg_io_release_skspcl(skdev, &sksgio); in skd_ioctl_sg_io()
1353 if (sksgio.iov != NULL && sksgio.iov != &sksgio.no_iov_iov) in skd_ioctl_sg_io()
1354 kfree(sksgio.iov); in skd_ioctl_sg_io()
1359 struct skd_sg_io *sksgio) in skd_sg_io_get_and_check_args() argument
1361 struct sg_io_hdr *sgp = &sksgio->sg; in skd_sg_io_get_and_check_args()
1364 if (!access_ok(VERIFY_WRITE, sksgio->argp, sizeof(sg_io_hdr_t))) { in skd_sg_io_get_and_check_args()
1366 skdev->name, __func__, __LINE__, sksgio->argp); in skd_sg_io_get_and_check_args()
1370 if (__copy_from_user(sgp, sksgio->argp, sizeof(sg_io_hdr_t))) { in skd_sg_io_get_and_check_args()
1372 skdev->name, __func__, __LINE__, sksgio->argp); in skd_sg_io_get_and_check_args()
1382 if (sgp->cmd_len > sizeof(sksgio->cdb)) { in skd_sg_io_get_and_check_args()
1420 if (copy_from_user(sksgio->cdb, sgp->cmdp, sgp->cmd_len)) { in skd_sg_io_get_and_check_args()
1435 sksgio->iov[0].iov_base = sgp->dxferp; in skd_sg_io_get_and_check_args()
1436 sksgio->iov[0].iov_len = sgp->dxfer_len; in skd_sg_io_get_and_check_args()
1437 sksgio->iovcnt = 1; in skd_sg_io_get_and_check_args()
1438 sksgio->dxfer_len = sgp->dxfer_len; in skd_sg_io_get_and_check_args()
1451 sksgio->iov = iov; in skd_sg_io_get_and_check_args()
1452 sksgio->iovcnt = sgp->iovec_count; in skd_sg_io_get_and_check_args()
1472 sksgio->iovcnt = iov_shorten((struct iovec *)iov, in skd_sg_io_get_and_check_args()
1475 sksgio->dxfer_len = sgp->dxfer_len; in skd_sg_io_get_and_check_args()
1477 sksgio->dxfer_len = iov_data_len; in skd_sg_io_get_and_check_args()
1481 struct sg_iovec *iov = sksgio->iov; in skd_sg_io_get_and_check_args()
1482 for (i = 0; i < sksgio->iovcnt; i++, iov++) { in skd_sg_io_get_and_check_args()
1496 struct skd_sg_io *sksgio) in skd_sg_io_obtain_skspcl() argument
1527 msecs_to_jiffies(sksgio->sg.timeout)); in skd_sg_io_obtain_skspcl()
1546 sksgio->skspcl = skspcl; in skd_sg_io_obtain_skspcl()
1625 struct skd_sg_io *sksgio) in skd_sg_io_prep_buffering() argument
1627 struct skd_special_context *skspcl = sksgio->skspcl; in skd_sg_io_prep_buffering()
1629 u32 dxfer_len = sksgio->dxfer_len; in skd_sg_io_prep_buffering()
1641 struct skd_sg_io *sksgio, int dxfer_dir) in skd_sg_io_copy_buffer() argument
1643 struct skd_special_context *skspcl = sksgio->skspcl; in skd_sg_io_copy_buffer()
1649 u32 resid = sksgio->dxfer_len; in skd_sg_io_copy_buffer()
1655 if (dxfer_dir != sksgio->sg.dxfer_direction) { in skd_sg_io_copy_buffer()
1657 sksgio->sg.dxfer_direction != SG_DXFER_TO_FROM_DEV) in skd_sg_io_copy_buffer()
1665 curiov = sksgio->iov[iov_ix++]; in skd_sg_io_copy_buffer()
1698 struct skd_sg_io *sksgio) in skd_sg_io_send_fitmsg() argument
1700 struct skd_special_context *skspcl = sksgio->skspcl; in skd_sg_io_send_fitmsg()
1711 if (sksgio->sg.dxfer_direction != SG_DXFER_NONE) in skd_sg_io_send_fitmsg()
1717 memcpy(scsi_req->cdb, sksgio->cdb, sizeof(scsi_req->cdb)); in skd_sg_io_send_fitmsg()
1725 static int skd_sg_io_await(struct skd_device *skdev, struct skd_sg_io *sksgio) in skd_sg_io_await() argument
1731 (sksgio->skspcl->req.state != in skd_sg_io_await()
1733 msecs_to_jiffies(sksgio->sg. 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()
1767 sksgio, sksgio->sg.timeout); in skd_sg_io_await()
1771 skdev->name, __func__, __LINE__, sksgio); in skd_sg_io_await()
1782 struct skd_sg_io *sksgio) in skd_sg_io_put_status() argument
1784 struct sg_io_hdr *sgp = &sksgio->sg; in skd_sg_io_put_status()
1785 struct skd_special_context *skspcl = sksgio->skspcl; in skd_sg_io_put_status()
1791 resid = sksgio->dxfer_len - nb; in skd_sg_io_put_status()
1823 if (__copy_to_user(sksgio->argp, sgp, sizeof(sg_io_hdr_t))) { in skd_sg_io_put_status()
1825 skdev->name, __func__, __LINE__, sksgio->argp); in skd_sg_io_put_status()
1833 struct skd_sg_io *sksgio) in skd_sg_io_release_skspcl() argument
1835 struct skd_special_context *skspcl = sksgio->skspcl; in skd_sg_io_release_skspcl()
1840 sksgio->skspcl = NULL; in skd_sg_io_release_skspcl()