Commit a6c0c127 authored by Mike Miller's avatar Mike Miller Committed by James Bottomley

[PATCH] cciss: SCSI API updates

This patch updates our SCSI support to no longer use deprecated APIs.
Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent 6928192f
...@@ -28,7 +28,9 @@ ...@@ -28,7 +28,9 @@
through the array controller. Note in particular, neither through the array controller. Note in particular, neither
physical nor logical disks are presented through the scsi layer. */ physical nor logical disks are presented through the scsi layer. */
#include "../scsi/scsi.h" #include <scsi/scsi.h>
#include <scsi/scsi_cmnd.h>
#include <scsi/scsi_device.h>
#include <scsi/scsi_host.h> #include <scsi/scsi_host.h>
#include <asm/atomic.h> #include <asm/atomic.h>
#include <linux/timer.h> #include <linux/timer.h>
...@@ -61,15 +63,8 @@ int cciss_scsi_proc_info( ...@@ -61,15 +63,8 @@ int cciss_scsi_proc_info(
int length, /* length of data in buffer */ int length, /* length of data in buffer */
int func); /* 0 == read, 1 == write */ int func); /* 0 == read, 1 == write */
int cciss_scsi_queue_command (Scsi_Cmnd *cmd, void (* done)(Scsi_Cmnd *)); int cciss_scsi_queue_command (struct scsi_cmnd *cmd,
#if 0 void (* done)(struct scsi_cmnd *));
int cciss_scsi_abort(Scsi_Cmnd *cmd);
#if defined SCSI_RESET_SYNCHRONOUS && defined SCSI_RESET_ASYNCHRONOUS
int cciss_scsi_reset(Scsi_Cmnd *cmd, unsigned int reset_flags);
#else
int cciss_scsi_reset(Scsi_Cmnd *cmd);
#endif
#endif
static struct cciss_scsi_hba_t ccissscsi[MAX_CTLR] = { static struct cciss_scsi_hba_t ccissscsi[MAX_CTLR] = {
{ .name = "cciss0", .ndevices = 0 }, { .name = "cciss0", .ndevices = 0 },
...@@ -82,7 +77,7 @@ static struct cciss_scsi_hba_t ccissscsi[MAX_CTLR] = { ...@@ -82,7 +77,7 @@ static struct cciss_scsi_hba_t ccissscsi[MAX_CTLR] = {
{ .name = "cciss7", .ndevices = 0 }, { .name = "cciss7", .ndevices = 0 },
}; };
static Scsi_Host_Template cciss_driver_template = { static struct scsi_host_template cciss_driver_template = {
.module = THIS_MODULE, .module = THIS_MODULE,
.name = "cciss", .name = "cciss",
.proc_name = "cciss", .proc_name = "cciss",
...@@ -552,7 +547,7 @@ cciss_scsi_setup(int cntl_num) ...@@ -552,7 +547,7 @@ cciss_scsi_setup(int cntl_num)
static void static void
complete_scsi_command( CommandList_struct *cp, int timeout, __u32 tag) complete_scsi_command( CommandList_struct *cp, int timeout, __u32 tag)
{ {
Scsi_Cmnd *cmd; struct scsi_cmnd *cmd;
ctlr_info_t *ctlr; ctlr_info_t *ctlr;
u64bit addr64; u64bit addr64;
ErrorInfo_struct *ei; ErrorInfo_struct *ei;
...@@ -565,7 +560,7 @@ complete_scsi_command( CommandList_struct *cp, int timeout, __u32 tag) ...@@ -565,7 +560,7 @@ complete_scsi_command( CommandList_struct *cp, int timeout, __u32 tag)
return; return;
} }
cmd = (Scsi_Cmnd *) cp->scsi_cmd; cmd = (struct scsi_cmnd *) cp->scsi_cmd;
ctlr = hba[cp->ctlr]; ctlr = hba[cp->ctlr];
/* undo the DMA mappings */ /* undo the DMA mappings */
...@@ -573,14 +568,14 @@ complete_scsi_command( CommandList_struct *cp, int timeout, __u32 tag) ...@@ -573,14 +568,14 @@ complete_scsi_command( CommandList_struct *cp, int timeout, __u32 tag)
if (cmd->use_sg) { if (cmd->use_sg) {
pci_unmap_sg(ctlr->pdev, pci_unmap_sg(ctlr->pdev,
cmd->buffer, cmd->use_sg, cmd->buffer, cmd->use_sg,
scsi_to_pci_dma_dir(cmd->sc_data_direction)); cmd->sc_data_direction);
} }
else if (cmd->request_bufflen) { else if (cmd->request_bufflen) {
addr64.val32.lower = cp->SG[0].Addr.lower; addr64.val32.lower = cp->SG[0].Addr.lower;
addr64.val32.upper = cp->SG[0].Addr.upper; addr64.val32.upper = cp->SG[0].Addr.upper;
pci_unmap_single(ctlr->pdev, (dma_addr_t) addr64.val, pci_unmap_single(ctlr->pdev, (dma_addr_t) addr64.val,
cmd->request_bufflen, cmd->request_bufflen,
scsi_to_pci_dma_dir(cmd->sc_data_direction)); cmd->sc_data_direction);
} }
cmd->result = (DID_OK << 16); /* host byte */ cmd->result = (DID_OK << 16); /* host byte */
...@@ -783,9 +778,8 @@ cciss_scsi_do_simple_cmd(ctlr_info_t *c, ...@@ -783,9 +778,8 @@ cciss_scsi_do_simple_cmd(ctlr_info_t *c,
cp->Request.Type.Direction = direction; cp->Request.Type.Direction = direction;
/* Fill in the SG list and do dma mapping */ /* Fill in the SG list and do dma mapping */
cciss_map_one(c->pdev, cp, cciss_map_one(c->pdev, cp, (unsigned char *) buf,
(unsigned char *) buf, bufsize, bufsize, DMA_FROM_DEVICE);
scsi_to_pci_dma_dir(SCSI_DATA_READ));
cp->waiting = &wait; cp->waiting = &wait;
...@@ -799,9 +793,7 @@ cciss_scsi_do_simple_cmd(ctlr_info_t *c, ...@@ -799,9 +793,7 @@ cciss_scsi_do_simple_cmd(ctlr_info_t *c,
wait_for_completion(&wait); wait_for_completion(&wait);
/* undo the dma mapping */ /* undo the dma mapping */
cciss_unmap_one(c->pdev, cp, bufsize, cciss_unmap_one(c->pdev, cp, bufsize, DMA_FROM_DEVICE);
scsi_to_pci_dma_dir(SCSI_DATA_READ));
return(0); return(0);
} }
...@@ -1180,14 +1172,14 @@ cciss_scsi_info(struct Scsi_Host *sa) ...@@ -1180,14 +1172,14 @@ cciss_scsi_info(struct Scsi_Host *sa)
} }
/* cciss_scatter_gather takes a Scsi_Cmnd, (cmd), and does the pci /* cciss_scatter_gather takes a struct scsi_cmnd, (cmd), and does the pci
dma mapping and fills in the scatter gather entries of the dma mapping and fills in the scatter gather entries of the
cciss command, cp. */ cciss command, cp. */
static void static void
cciss_scatter_gather(struct pci_dev *pdev, cciss_scatter_gather(struct pci_dev *pdev,
CommandList_struct *cp, CommandList_struct *cp,
Scsi_Cmnd *cmd) struct scsi_cmnd *cmd)
{ {
unsigned int use_sg, nsegs=0, len; unsigned int use_sg, nsegs=0, len;
struct scatterlist *scatter = (struct scatterlist *) cmd->buffer; struct scatterlist *scatter = (struct scatterlist *) cmd->buffer;
...@@ -1200,7 +1192,7 @@ cciss_scatter_gather(struct pci_dev *pdev, ...@@ -1200,7 +1192,7 @@ cciss_scatter_gather(struct pci_dev *pdev,
addr64 = (__u64) pci_map_single(pdev, addr64 = (__u64) pci_map_single(pdev,
cmd->request_buffer, cmd->request_buffer,
cmd->request_bufflen, cmd->request_bufflen,
scsi_to_pci_dma_dir(cmd->sc_data_direction)); cmd->sc_data_direction);
cp->SG[0].Addr.lower = cp->SG[0].Addr.lower =
(__u32) (addr64 & (__u64) 0x00000000FFFFFFFF); (__u32) (addr64 & (__u64) 0x00000000FFFFFFFF);
...@@ -1213,7 +1205,7 @@ cciss_scatter_gather(struct pci_dev *pdev, ...@@ -1213,7 +1205,7 @@ cciss_scatter_gather(struct pci_dev *pdev,
else if (cmd->use_sg <= MAXSGENTRIES) { /* not too many addrs? */ else if (cmd->use_sg <= MAXSGENTRIES) { /* not too many addrs? */
use_sg = pci_map_sg(pdev, cmd->buffer, cmd->use_sg, use_sg = pci_map_sg(pdev, cmd->buffer, cmd->use_sg,
scsi_to_pci_dma_dir(cmd->sc_data_direction)); cmd->sc_data_direction);
for (nsegs=0; nsegs < use_sg; nsegs++) { for (nsegs=0; nsegs < use_sg; nsegs++) {
addr64 = (__u64) sg_dma_address(&scatter[nsegs]); addr64 = (__u64) sg_dma_address(&scatter[nsegs]);
...@@ -1234,7 +1226,7 @@ cciss_scatter_gather(struct pci_dev *pdev, ...@@ -1234,7 +1226,7 @@ cciss_scatter_gather(struct pci_dev *pdev,
int int
cciss_scsi_queue_command (Scsi_Cmnd *cmd, void (* done)(Scsi_Cmnd *)) cciss_scsi_queue_command (struct scsi_cmnd *cmd, void (* done)(struct scsi_cmnd *))
{ {
ctlr_info_t **c; ctlr_info_t **c;
int ctlr, rc; int ctlr, rc;
...@@ -1302,11 +1294,10 @@ cciss_scsi_queue_command (Scsi_Cmnd *cmd, void (* done)(Scsi_Cmnd *)) ...@@ -1302,11 +1294,10 @@ cciss_scsi_queue_command (Scsi_Cmnd *cmd, void (* done)(Scsi_Cmnd *))
cp->Request.Type.Attribute = ATTR_SIMPLE; cp->Request.Type.Attribute = ATTR_SIMPLE;
switch(cmd->sc_data_direction) switch(cmd->sc_data_direction)
{ {
case SCSI_DATA_WRITE: cp->Request.Type.Direction = XFER_WRITE; break; case DMA_TO_DEVICE: cp->Request.Type.Direction = XFER_WRITE; break;
case SCSI_DATA_READ: cp->Request.Type.Direction = XFER_READ; break; case DMA_FROM_DEVICE: cp->Request.Type.Direction = XFER_READ; break;
case SCSI_DATA_NONE: cp->Request.Type.Direction = XFER_NONE; break; case DMA_NONE: cp->Request.Type.Direction = XFER_NONE; break;
case DMA_BIDIRECTIONAL:
case SCSI_DATA_UNKNOWN:
// This can happen if a buggy application does a scsi passthru // This can happen if a buggy application does a scsi passthru
// and sets both inlen and outlen to non-zero. ( see // and sets both inlen and outlen to non-zero. ( see
// ../scsi/scsi_ioctl.c:scsi_ioctl_send_command() ) // ../scsi/scsi_ioctl.c:scsi_ioctl_send_command() )
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment