vserver 2.0 rc7
[linux-2.6.git] / drivers / scsi / qla1280.c
index df89d2b..4ad2808 100644 (file)
@@ -20,6 +20,9 @@
 #define QLA1280_VERSION      "3.25"
 /*****************************************************************************
     Revision History:
+    Rev  3.25.1, February 10, 2005 Christoph Hellwig
+       - use pci_map_single to map non-S/G requests
+       - remove qla1280_proc_info
     Rev  3.25, September 28, 2004, Christoph Hellwig
        - add support for ISP1020/1040
        - don't include "scsi.h" anymore for 2.6.x
@@ -670,8 +673,6 @@ static struct qla_boards ql1280_board_tbl[] = {
 };
 
 static int qla1280_verbose = 1;
-static int qla1280_buffer_size;
-static char *qla1280_buffer;
 
 #if DEBUG_QLA1280
 static int ql_debug_level = 1;
@@ -694,97 +695,6 @@ static int ql_debug_level = 1;
 #define LEAVE_INTR(x)          dprintk(4, "qla1280 : Leaving %s()\n", x);
 
 
-/*************************************************************************
- * qla1280_proc_info
- *
- * Description:
- *   Return information to handle /proc support for the driver.
- *
- * buffer - ptrs to a page buffer
- *
- * Returns:
- *************************************************************************/
-#define        PROC_BUF        &qla1280_buffer[len]
-
-static int qla1280_proc_info(struct Scsi_Host *host, char *buffer,
-                            char **start, off_t offset, int length, int inout)
-{
-       struct scsi_qla_host *ha = (struct scsi_qla_host *)host->hostdata;
-       struct qla_boards *bdp = &ql1280_board_tbl[ha->devnum];
-       int size = 0;
-       int len = 0;
-
-       if (inout)
-               return -ENOSYS;
-
-       /*
-        * if our old buffer is the right size use it otherwise
-        * allocate a new one.
-        */
-       if (qla1280_buffer_size != PAGE_SIZE) {
-               /* deallocate this buffer and get a new one */
-               if (qla1280_buffer != NULL) {
-                       free_page((unsigned long)qla1280_buffer);
-                       qla1280_buffer_size = 0;
-               }
-               qla1280_buffer = (char *)get_zeroed_page(GFP_KERNEL);
-       }
-       if (qla1280_buffer == NULL) {
-               size = sprintf(buffer, "qla1280 - kmalloc error at line %d\n",
-                              __LINE__);
-               return size;
-       }
-       /* save the size of our buffer */
-       qla1280_buffer_size = PAGE_SIZE;
-
-       /* 3.20 clear the buffer we use for proc display */
-       memset(qla1280_buffer, 0, PAGE_SIZE);
-
-       /* start building the print buffer */
-       size = sprintf(PROC_BUF,
-                      "QLogic PCI to SCSI Adapter for ISP 1280/12160:\n"
-                      "        Firmware version: %2d.%02d.%02d, Driver version %s\n",
-                      bdp->fwver[0], bdp->fwver[1], bdp->fwver[2],
-                      QLA1280_VERSION);
-
-       len += size;
-
-       size = sprintf(PROC_BUF, "SCSI Host Adapter Information: %s\n",
-                      bdp->name);
-       len += size;
-       size = sprintf(PROC_BUF, "Request Queue count= 0x%x, Response "
-                      "Queue count= 0x%x\n",
-                      REQUEST_ENTRY_CNT, RESPONSE_ENTRY_CNT);
-       len += size;
-       size = sprintf(PROC_BUF, "Number of pending commands = 0x%lx\n",
-                      ha->actthreads);
-       len += size;
-       size = sprintf(PROC_BUF, "Number of free request entries = %d\n",
-                      ha->req_q_cnt);
-       len += size;
-       size = sprintf(PROC_BUF, "\n"); /* 1       */
-       len += size;
-
-       if (len >= qla1280_buffer_size) {
-               printk(KERN_WARNING
-                      "qla1280: Overflow buffer in qla1280_proc.c\n");
-       }
-
-       if (offset > len - 1) {
-               free_page((unsigned long) qla1280_buffer);
-               qla1280_buffer = NULL;
-               qla1280_buffer_size = length = 0;
-               *start = NULL;
-       } else {
-               *start = &qla1280_buffer[offset];       /* Start of wanted data */
-               if (len - offset < length) {
-                       length = len - offset;
-               }
-       }
-       return length;
-}
-
-
 static int qla1280_read_nvram(struct scsi_qla_host *ha)
 {
        uint16_t *wptr;
@@ -1334,22 +1244,6 @@ qla1280_biosparam_old(Disk * disk, kdev_t dev, int geom[])
 {
        return qla1280_biosparam(disk->device, NULL, disk->capacity, geom);
 }
-
-static int
-qla1280_proc_info_old(char *buffer, char **start, off_t offset, int length,
-                     int hostno, int inout)
-{
-       struct Scsi_Host *host;
-
-       for (host = scsi_hostlist; host; host = host->next) {
-               if (host->host_no == hostno) {
-                       return qla1280_proc_info(host, buffer, start,
-                                                offset, length, inout);
-               }
-       }
-
-       return -ESRCH;
-}
 #endif
 
 /**************************************************************************
@@ -1571,16 +1465,12 @@ qla1280_done(struct scsi_qla_host *ha)
 
                /* Release memory used for this I/O */
                if (cmd->use_sg) {
-                       dprintk(3, "S/G unmap_sg cmd=%p\n", cmd);
-
                        pci_unmap_sg(ha->pdev, cmd->request_buffer,
-                                    cmd->use_sg, cmd->sc_data_direction);
+                                       cmd->use_sg, cmd->sc_data_direction);
                } else if (cmd->request_bufflen) {
-                       /*dprintk(1, "No S/G unmap_single cmd=%x saved_dma_handle=%lx\n",
-                         cmd, sp->saved_dma_handle); */
-
-                       pci_unmap_page(ha->pdev, sp->saved_dma_handle,
-                                      cmd->request_bufflen, cmd->sc_data_direction);
+                       pci_unmap_single(ha->pdev, sp->saved_dma_handle,
+                                       cmd->request_bufflen,
+                                       cmd->sc_data_direction);
                }
 
                /* Call the mid-level driver interrupt handler */
@@ -3354,14 +3244,11 @@ qla1280_64bit_start_scsi(struct scsi_qla_host *ha, struct srb * sp)
                                                    REQUEST_ENTRY_SIZE);
                        }
                } else {        /* No scatter gather data transfer */
-                       struct page *page = virt_to_page(cmd->request_buffer);
-                       unsigned long off = (unsigned long)cmd->request_buffer & ~PAGE_MASK;
-
-                       dma_handle = pci_map_page(ha->pdev, page, off,
-                                                 cmd->request_bufflen,
-                                                 cmd->sc_data_direction);
+                       dma_handle = pci_map_single(ha->pdev,
+                                       cmd->request_buffer,
+                                       cmd->request_bufflen,
+                                       cmd->sc_data_direction);
 
-                       /* save dma_handle for pci_unmap_page */
                        sp->saved_dma_handle = dma_handle;
 #if defined(CONFIG_IA64_GENERIC) || defined(CONFIG_IA64_SGI_SN2)
                        if (ha->flags.use_pci_vchannel)
@@ -3636,11 +3523,10 @@ qla1280_32bit_start_scsi(struct scsi_qla_host *ha, struct srb * sp)
                                                    REQUEST_ENTRY_SIZE);
                        }
                } else {        /* No S/G data transfer */
-                       struct page *page = virt_to_page(cmd->request_buffer);
-                       unsigned long off = (unsigned long)cmd->request_buffer & ~PAGE_MASK;
-                       dma_handle = pci_map_page(ha->pdev, page, off,
-                                                 cmd->request_bufflen,
-                                                 cmd->sc_data_direction);
+                       dma_handle = pci_map_single(ha->pdev,
+                                       cmd->request_buffer,
+                                       cmd->request_bufflen,
+                                       cmd->sc_data_direction);
                        sp->saved_dma_handle = dma_handle;
 
                        *dword_ptr++ = cpu_to_le32(pci_dma_lo32(dma_handle));
@@ -4668,7 +4554,6 @@ static struct scsi_host_template qla1280_driver_template = {
        .eh_bus_reset_handler   = qla1280_eh_bus_reset,
        .eh_host_reset_handler  = qla1280_eh_adapter_reset,
        .bios_param             = qla1280_biosparam,
-       .proc_info              = qla1280_proc_info,
        .can_queue              = 0xfffff,
        .this_id                = -1,
        .sg_tablesize           = SG_ALL,
@@ -4688,7 +4573,6 @@ static Scsi_Host_Template qla1280_driver_template = {
        .eh_bus_reset_handler   = qla1280_eh_bus_reset,
        .eh_host_reset_handler  = qla1280_eh_adapter_reset,
        .bios_param             = qla1280_biosparam_old,
-       .proc_info              = qla1280_proc_info_old,
        .can_queue              = 0xfffff,
        .this_id                = -1,
        .sg_tablesize           = SG_ALL,