OSDN Git Service

hpsa: slightly optimize SA5_performant_completed
authorDon Brace <don.brace@pmcs.com>
Fri, 23 Jan 2015 22:43:51 +0000 (16:43 -0600)
committerJames Bottomley <JBottomley@Parallels.com>
Mon, 2 Feb 2015 17:57:41 +0000 (09:57 -0800)
Reviewed-by: Scott Teel <scott.teel@pmcs.com>
Signed-off-by: Don Brace <don.brace@pmcs.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/scsi/hpsa.h

index 1856445..aa6cb0b 100644 (file)
@@ -412,19 +412,19 @@ static unsigned long SA5_performant_completed(struct ctlr_info *h, u8 q)
        unsigned long register_value = FIFO_EMPTY;
 
        /* msi auto clears the interrupt pending bit. */
-       if (!(h->msi_vector || h->msix_vector)) {
+       if (unlikely(!(h->msi_vector || h->msix_vector))) {
                /* flush the controller write of the reply queue by reading
                 * outbound doorbell status register.
                 */
-               register_value = readl(h->vaddr + SA5_OUTDB_STATUS);
+               (void) readl(h->vaddr + SA5_OUTDB_STATUS);
                writel(SA5_OUTDB_CLEAR_PERF_BIT, h->vaddr + SA5_OUTDB_CLEAR);
                /* Do a read in order to flush the write to the controller
                 * (as per spec.)
                 */
-               register_value = readl(h->vaddr + SA5_OUTDB_STATUS);
+               (void) readl(h->vaddr + SA5_OUTDB_STATUS);
        }
 
-       if ((rq->head[rq->current_entry] & 1) == rq->wraparound) {
+       if ((((u32) rq->head[rq->current_entry]) & 1) == rq->wraparound) {
                register_value = rq->head[rq->current_entry];
                rq->current_entry++;
                atomic_dec(&h->commands_outstanding);