Commit d8e1e6ad authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Martin K. Petersen

scsi: gdth: remove interrupt coalescing support

This code has been under a never defined ifdef since the beginning
of time (or at least history), and has just bitrotted.  Nuke it.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 9affa597
...@@ -89,10 +89,6 @@ ...@@ -89,10 +89,6 @@
* phase: unused * phase: unused
*/ */
/* interrupt coalescing */
/* #define INT_COAL */
/* statistics */ /* statistics */
#define GDTH_STATISTICS #define GDTH_STATISTICS
...@@ -192,9 +188,6 @@ static u8 DebugState = DEBUG_GDTH; ...@@ -192,9 +188,6 @@ static u8 DebugState = DEBUG_GDTH;
#ifdef GDTH_STATISTICS #ifdef GDTH_STATISTICS
static u32 max_rq=0, max_index=0, max_sg=0; static u32 max_rq=0, max_index=0, max_sg=0;
#ifdef INT_COAL
static u32 max_int_coal=0;
#endif
static u32 act_ints=0, act_ios=0, act_stats=0, act_rq=0; static u32 act_ints=0, act_ios=0, act_stats=0, act_rq=0;
static struct timer_list gdth_timer; static struct timer_list gdth_timer;
#endif #endif
...@@ -1189,9 +1182,6 @@ static int gdth_search_drives(gdth_ha_str *ha) ...@@ -1189,9 +1182,6 @@ static int gdth_search_drives(gdth_ha_str *ha)
gdth_arcdl_str *alst; gdth_arcdl_str *alst;
gdth_alist_str *alst2; gdth_alist_str *alst2;
gdth_oem_str_ioctl *oemstr; gdth_oem_str_ioctl *oemstr;
#ifdef INT_COAL
gdth_perf_modes *pmod;
#endif
TRACE(("gdth_search_drives() hanum %d\n", ha->hanum)); TRACE(("gdth_search_drives() hanum %d\n", ha->hanum));
ok = 0; ok = 0;
...@@ -1234,35 +1224,6 @@ static int gdth_search_drives(gdth_ha_str *ha) ...@@ -1234,35 +1224,6 @@ static int gdth_search_drives(gdth_ha_str *ha)
cdev_cnt = (u16)ha->info; cdev_cnt = (u16)ha->info;
ha->fw_vers = ha->service; ha->fw_vers = ha->service;
#ifdef INT_COAL
if (ha->type == GDT_PCIMPR) {
/* set perf. modes */
pmod = (gdth_perf_modes *)ha->pscratch;
pmod->version = 1;
pmod->st_mode = 1; /* enable one status buffer */
*((u64 *)&pmod->st_buff_addr1) = ha->coal_stat_phys;
pmod->st_buff_indx1 = COALINDEX;
pmod->st_buff_addr2 = 0;
pmod->st_buff_u_addr2 = 0;
pmod->st_buff_indx2 = 0;
pmod->st_buff_size = sizeof(gdth_coal_status) * MAXOFFSETS;
pmod->cmd_mode = 0; // disable all cmd buffers
pmod->cmd_buff_addr1 = 0;
pmod->cmd_buff_u_addr1 = 0;
pmod->cmd_buff_indx1 = 0;
pmod->cmd_buff_addr2 = 0;
pmod->cmd_buff_u_addr2 = 0;
pmod->cmd_buff_indx2 = 0;
pmod->cmd_buff_size = 0;
pmod->reserved1 = 0;
pmod->reserved2 = 0;
if (gdth_internal_cmd(ha, CACHESERVICE, GDT_IOCTL, SET_PERF_MODES,
INVALID_CHANNEL,sizeof(gdth_perf_modes))) {
printk("GDT-HA %d: Interrupt coalescing activated\n", ha->hanum);
}
}
#endif
/* detect number of buses - try new IOCTL */ /* detect number of buses - try new IOCTL */
iocr = (gdth_raw_iochan_str *)ha->pscratch; iocr = (gdth_raw_iochan_str *)ha->pscratch;
iocr->hdr.version = 0xffffffff; iocr->hdr.version = 0xffffffff;
...@@ -2538,12 +2499,6 @@ static irqreturn_t __gdth_interrupt(gdth_ha_str *ha, ...@@ -2538,12 +2499,6 @@ static irqreturn_t __gdth_interrupt(gdth_ha_str *ha,
u8 IStatus; u8 IStatus;
u16 Service; u16 Service;
unsigned long flags = 0; unsigned long flags = 0;
#ifdef INT_COAL
int coalesced = FALSE;
int next = FALSE;
gdth_coal_status *pcs = NULL;
int act_int_coal = 0;
#endif
TRACE(("gdth_interrupt() IRQ %d\n", ha->irq)); TRACE(("gdth_interrupt() IRQ %d\n", ha->irq));
...@@ -2570,24 +2525,6 @@ static irqreturn_t __gdth_interrupt(gdth_ha_str *ha, ...@@ -2570,24 +2525,6 @@ static irqreturn_t __gdth_interrupt(gdth_ha_str *ha,
++act_ints; ++act_ints;
#endif #endif
#ifdef INT_COAL
/* See if the fw is returning coalesced status */
if (IStatus == COALINDEX) {
/* Coalesced status. Setup the initial status
buffer pointer and flags */
pcs = ha->coal_stat;
coalesced = TRUE;
next = TRUE;
}
do {
if (coalesced) {
/* For coalesced requests all status
information is found in the status buffer */
IStatus = (u8)(pcs->status & 0xff);
}
#endif
if (ha->type == GDT_PCI) { if (ha->type == GDT_PCI) {
dp6_ptr = ha->brd; dp6_ptr = ha->brd;
if (IStatus & 0x80) { /* error flag */ if (IStatus & 0x80) { /* error flag */
...@@ -2620,28 +2557,15 @@ static irqreturn_t __gdth_interrupt(gdth_ha_str *ha, ...@@ -2620,28 +2557,15 @@ static irqreturn_t __gdth_interrupt(gdth_ha_str *ha,
dp6m_ptr = ha->brd; dp6m_ptr = ha->brd;
if (IStatus & 0x80) { /* error flag */ if (IStatus & 0x80) { /* error flag */
IStatus &= ~0x80; IStatus &= ~0x80;
#ifdef INT_COAL ha->status = readw(&dp6m_ptr->i960r.status);
if (coalesced)
ha->status = pcs->ext_status & 0xffff;
else
#endif
ha->status = readw(&dp6m_ptr->i960r.status);
TRACE2(("gdth_interrupt() error %d/%d\n",IStatus,ha->status)); TRACE2(("gdth_interrupt() error %d/%d\n",IStatus,ha->status));
} else /* no error */ } else /* no error */
ha->status = S_OK; ha->status = S_OK;
#ifdef INT_COAL
/* get information */ ha->info = readl(&dp6m_ptr->i960r.info[0]);
if (coalesced) { ha->service = readw(&dp6m_ptr->i960r.service);
ha->info = pcs->info0; ha->info2 = readl(&dp6m_ptr->i960r.info[1]);
ha->info2 = pcs->info1;
ha->service = (pcs->ext_status >> 16) & 0xffff;
} else
#endif
{
ha->info = readl(&dp6m_ptr->i960r.info[0]);
ha->service = readw(&dp6m_ptr->i960r.service);
ha->info2 = readl(&dp6m_ptr->i960r.info[1]);
}
/* event string */ /* event string */
if (IStatus == ASYNCINDEX) { if (IStatus == ASYNCINDEX) {
if (ha->service != SCREENSERVICE && if (ha->service != SCREENSERVICE &&
...@@ -2656,15 +2580,8 @@ static irqreturn_t __gdth_interrupt(gdth_ha_str *ha, ...@@ -2656,15 +2580,8 @@ static irqreturn_t __gdth_interrupt(gdth_ha_str *ha,
} }
} }
} }
#ifdef INT_COAL writeb(0xff, &dp6m_ptr->i960r.edoor_reg);
/* Make sure that non coalesced interrupts get cleared writeb(0, &dp6m_ptr->i960r.sema1_reg);
before being handled by gdth_async_event/gdth_sync_event */
if (!coalesced)
#endif
{
writeb(0xff, &dp6m_ptr->i960r.edoor_reg);
writeb(0, &dp6m_ptr->i960r.sema1_reg);
}
} else { } else {
TRACE2(("gdth_interrupt() unknown controller type\n")); TRACE2(("gdth_interrupt() unknown controller type\n"));
if (!gdth_polling) if (!gdth_polling)
...@@ -2727,31 +2644,6 @@ static irqreturn_t __gdth_interrupt(gdth_ha_str *ha, ...@@ -2727,31 +2644,6 @@ static irqreturn_t __gdth_interrupt(gdth_ha_str *ha,
gdth_scsi_done(scp); gdth_scsi_done(scp);
} }
#ifdef INT_COAL
if (coalesced) {
/* go to the next status in the status buffer */
++pcs;
#ifdef GDTH_STATISTICS
++act_int_coal;
if (act_int_coal > max_int_coal) {
max_int_coal = act_int_coal;
printk("GDT: max_int_coal = %d\n",(u16)max_int_coal);
}
#endif
/* see if there is another status */
if (pcs->status == 0)
/* Stop the coalesce loop */
next = FALSE;
}
} while (next);
/* coalescing only for new GDT_PCIMPR controllers available */
if (ha->type == GDT_PCIMPR && coalesced) {
writeb(0xff, &dp6m_ptr->i960r.edoor_reg);
writeb(0, &dp6m_ptr->i960r.sema1_reg);
}
#endif
gdth_next(ha); gdth_next(ha);
return IRQ_HANDLED; return IRQ_HANDLED;
} }
...@@ -4264,15 +4156,6 @@ static int gdth_pci_probe_one(gdth_pci_str *pcistr, gdth_ha_str **ha_out) ...@@ -4264,15 +4156,6 @@ static int gdth_pci_probe_one(gdth_pci_str *pcistr, gdth_ha_str **ha_out)
goto out_free_pscratch; goto out_free_pscratch;
ha->msg_phys = scratch_dma_handle; ha->msg_phys = scratch_dma_handle;
#ifdef INT_COAL
ha->coal_stat = pci_alloc_consistent(ha->pdev,
sizeof(gdth_coal_status) * MAXOFFSETS,
&scratch_dma_handle);
if (!ha->coal_stat)
goto out_free_pmsg;
ha->coal_stat_phys = scratch_dma_handle;
#endif
ha->scratch_busy = FALSE; ha->scratch_busy = FALSE;
ha->req_first = NULL; ha->req_first = NULL;
ha->tid_cnt = pdev->device >= 0x200 ? MAXID : MAX_HDRIVES; ha->tid_cnt = pdev->device >= 0x200 ? MAXID : MAX_HDRIVES;
...@@ -4285,7 +4168,7 @@ static int gdth_pci_probe_one(gdth_pci_str *pcistr, gdth_ha_str **ha_out) ...@@ -4285,7 +4168,7 @@ static int gdth_pci_probe_one(gdth_pci_str *pcistr, gdth_ha_str **ha_out)
error = -ENODEV; error = -ENODEV;
if (!gdth_search_drives(ha)) { if (!gdth_search_drives(ha)) {
printk("GDT-PCI %d: Error during device scan\n", ha->hanum); printk("GDT-PCI %d: Error during device scan\n", ha->hanum);
goto out_free_coal_stat; goto out_free_pmsg;
} }
if (hdr_channel < 0 || hdr_channel > ha->bus_cnt) if (hdr_channel < 0 || hdr_channel > ha->bus_cnt)
...@@ -4298,7 +4181,7 @@ static int gdth_pci_probe_one(gdth_pci_str *pcistr, gdth_ha_str **ha_out) ...@@ -4298,7 +4181,7 @@ static int gdth_pci_probe_one(gdth_pci_str *pcistr, gdth_ha_str **ha_out)
if (pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) { if (pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) {
printk(KERN_WARNING "GDT-PCI %d: " printk(KERN_WARNING "GDT-PCI %d: "
"Unable to set 32-bit DMA\n", ha->hanum); "Unable to set 32-bit DMA\n", ha->hanum);
goto out_free_coal_stat; goto out_free_pmsg;
} }
} else { } else {
shp->max_cmd_len = 16; shp->max_cmd_len = 16;
...@@ -4307,7 +4190,7 @@ static int gdth_pci_probe_one(gdth_pci_str *pcistr, gdth_ha_str **ha_out) ...@@ -4307,7 +4190,7 @@ static int gdth_pci_probe_one(gdth_pci_str *pcistr, gdth_ha_str **ha_out)
} else if (pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) { } else if (pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) {
printk(KERN_WARNING "GDT-PCI %d: " printk(KERN_WARNING "GDT-PCI %d: "
"Unable to set 64/32-bit DMA\n", ha->hanum); "Unable to set 64/32-bit DMA\n", ha->hanum);
goto out_free_coal_stat; goto out_free_pmsg;
} }
} }
...@@ -4320,7 +4203,7 @@ static int gdth_pci_probe_one(gdth_pci_str *pcistr, gdth_ha_str **ha_out) ...@@ -4320,7 +4203,7 @@ static int gdth_pci_probe_one(gdth_pci_str *pcistr, gdth_ha_str **ha_out)
error = scsi_add_host(shp, &pdev->dev); error = scsi_add_host(shp, &pdev->dev);
if (error) if (error)
goto out_free_coal_stat; goto out_free_pmsg;
list_add_tail(&ha->list, &gdth_instances); list_add_tail(&ha->list, &gdth_instances);
pci_set_drvdata(ha->pdev, ha); pci_set_drvdata(ha->pdev, ha);
...@@ -4332,12 +4215,7 @@ static int gdth_pci_probe_one(gdth_pci_str *pcistr, gdth_ha_str **ha_out) ...@@ -4332,12 +4215,7 @@ static int gdth_pci_probe_one(gdth_pci_str *pcistr, gdth_ha_str **ha_out)
return 0; return 0;
out_free_coal_stat:
#ifdef INT_COAL
pci_free_consistent(ha->pdev, sizeof(gdth_coal_status) * MAXOFFSETS,
ha->coal_stat, ha->coal_stat_phys);
out_free_pmsg: out_free_pmsg:
#endif
pci_free_consistent(ha->pdev, sizeof(gdth_msg_str), pci_free_consistent(ha->pdev, sizeof(gdth_msg_str),
ha->pmsg, ha->msg_phys); ha->pmsg, ha->msg_phys);
out_free_pscratch: out_free_pscratch:
...@@ -4369,11 +4247,6 @@ static void gdth_remove_one(gdth_ha_str *ha) ...@@ -4369,11 +4247,6 @@ static void gdth_remove_one(gdth_ha_str *ha)
if (shp->irq) if (shp->irq)
free_irq(shp->irq,ha); free_irq(shp->irq,ha);
#ifdef INT_COAL
if (ha->coal_stat)
pci_free_consistent(ha->pdev, sizeof(gdth_coal_status) *
MAXOFFSETS, ha->coal_stat, ha->coal_stat_phys);
#endif
if (ha->pscratch) if (ha->pscratch)
pci_free_consistent(ha->pdev, GDTH_SCRATCH, pci_free_consistent(ha->pdev, GDTH_SCRATCH,
ha->pscratch, ha->scratch_phys); ha->pscratch, ha->scratch_phys);
......
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