All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/10] qla2xxx: updates for 2.6.26 [8.02.01-k2].
@ 2008-04-24 22:19 Andrew Vasquez
  2008-04-24 22:21 ` [PATCH 01/10] qla2xxx: Collapse RISC-RAM retrieval code during a firmware-dump Andrew Vasquez
                   ` (10 more replies)
  0 siblings, 11 replies; 15+ messages in thread
From: Andrew Vasquez @ 2008-04-24 22:19 UTC (permalink / raw)
  To: Linux SCSI Mailing List, James Bottomley; +Cc: Seokmann Ju, Andrew Vasquez

This patchset contains fixes/updates for 2.6.26.

 drivers/scsi/qla2xxx/qla_dbg.c     |  394 +++++++++++++-----------------------
 drivers/scsi/qla2xxx/qla_fw.h      |   26 +--
 drivers/scsi/qla2xxx/qla_gbl.h     |    4 -
 drivers/scsi/qla2xxx/qla_gs.c      |    4 +-
 drivers/scsi/qla2xxx/qla_init.c    |    2 +-
 drivers/scsi/qla2xxx/qla_isr.c     |    4 +-
 drivers/scsi/qla2xxx/qla_mbx.c     |   19 +-
 drivers/scsi/qla2xxx/qla_os.c      |   12 +-
 drivers/scsi/qla2xxx/qla_version.h |    2 +-
 9 files changed, 170 insertions(+), 297 deletions(-)

here's the commits:

- Collapse RISC-RAM retrieval code during a firmware-dump.
- Wakeup DPC thread to process any deferred-work requests.
- Correct ISP84XX verify-chip response handling.
- Correct SRB usage-after-completion/free issues.
- Re-register FDMI information after a LIP.
- qla_os.c, make 2 functions static
- make qla2x00_issue_iocb_timeout() static
- Correct misc. endian and byte-ordering issues.
- Correct regression in relogin code.
- Update version number to 8.02.01-k2.

Regards,
Andrew Vasquez
QLogic Corporation

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH 01/10] qla2xxx: Collapse RISC-RAM retrieval code during a firmware-dump.
  2008-04-24 22:19 [PATCH 0/10] qla2xxx: updates for 2.6.26 [8.02.01-k2] Andrew Vasquez
@ 2008-04-24 22:21 ` Andrew Vasquez
  2008-04-24 22:21 ` [PATCH 02/10] qla2xxx: Wakeup DPC thread to process any deferred-work requests Andrew Vasquez
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Andrew Vasquez @ 2008-04-24 22:21 UTC (permalink / raw)
  To: Linux SCSI Mailing List, James Bottomley; +Cc: Andrew Vasquez, Seokmann Ju

Use the more efficient read-DMA'ble-buffer mailbox commands
rather than reading a single word/dword at a time.  We also
remove a bulk of the duplicate mailbox command-handling codes in
favor of more generic read-memory() routines (qla2xxx_dump_ram()
and qla24xx_dump_ram()).

Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
---
 drivers/scsi/qla2xxx/qla_dbg.c |  394 +++++++++++++++-------------------------
 1 files changed, 143 insertions(+), 251 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_dbg.c b/drivers/scsi/qla2xxx/qla_dbg.c
index 9d12d9f..cbef785 100644
--- a/drivers/scsi/qla2xxx/qla_dbg.c
+++ b/drivers/scsi/qla2xxx/qla_dbg.c
@@ -38,78 +38,38 @@ qla2xxx_copy_queues(scsi_qla_host_t *ha, void *ptr)
 }
 
 static int
-qla24xx_dump_memory(scsi_qla_host_t *ha, uint32_t *code_ram,
-    uint32_t cram_size, uint32_t *ext_mem, void **nxt)
+qla24xx_dump_ram(scsi_qla_host_t *ha, uint32_t addr, uint32_t *ram,
+    uint32_t ram_dwords, void **nxt)
 {
 	int rval;
-	uint32_t cnt, stat, timer, risc_address, ext_mem_cnt;
-	uint16_t mb[4];
+	uint32_t cnt, stat, timer, dwords, idx;
+	uint16_t mb0;
 	struct device_reg_24xx __iomem *reg = &ha->iobase->isp24;
+	dma_addr_t dump_dma = ha->gid_list_dma;
+	uint32_t *dump = (uint32_t *)ha->gid_list;
 
 	rval = QLA_SUCCESS;
-	risc_address = ext_mem_cnt = 0;
-	memset(mb, 0, sizeof(mb));
+	mb0 = 0;
 
-	/* Code RAM. */
-	risc_address = 0x20000;
-	WRT_REG_WORD(&reg->mailbox0, MBC_READ_RAM_EXTENDED);
+	WRT_REG_WORD(&reg->mailbox0, MBC_DUMP_RISC_RAM_EXTENDED);
 	clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
 
-	for (cnt = 0; cnt < cram_size / 4 && rval == QLA_SUCCESS;
-	    cnt++, risc_address++) {
-		WRT_REG_WORD(&reg->mailbox1, LSW(risc_address));
-		WRT_REG_WORD(&reg->mailbox8, MSW(risc_address));
-		RD_REG_WORD(&reg->mailbox8);
-		WRT_REG_DWORD(&reg->hccr, HCCRX_SET_HOST_INT);
-
-		for (timer = 6000000; timer; timer--) {
-			/* Check for pending interrupts. */
-			stat = RD_REG_DWORD(&reg->host_status);
-			if (stat & HSRX_RISC_INT) {
-				stat &= 0xff;
+	dwords = GID_LIST_SIZE / 4;
+	for (cnt = 0; cnt < ram_dwords && rval == QLA_SUCCESS;
+	    cnt += dwords, addr += dwords) {
+		if (cnt + dwords > ram_dwords)
+			dwords = ram_dwords - cnt;
 
-				if (stat == 0x1 || stat == 0x2 ||
-				    stat == 0x10 || stat == 0x11) {
-					set_bit(MBX_INTERRUPT,
-					    &ha->mbx_cmd_flags);
+		WRT_REG_WORD(&reg->mailbox1, LSW(addr));
+		WRT_REG_WORD(&reg->mailbox8, MSW(addr));
 
-					mb[0] = RD_REG_WORD(&reg->mailbox0);
-					mb[2] = RD_REG_WORD(&reg->mailbox2);
-					mb[3] = RD_REG_WORD(&reg->mailbox3);
+		WRT_REG_WORD(&reg->mailbox2, MSW(dump_dma));
+		WRT_REG_WORD(&reg->mailbox3, LSW(dump_dma));
+		WRT_REG_WORD(&reg->mailbox6, MSW(MSD(dump_dma)));
+		WRT_REG_WORD(&reg->mailbox7, LSW(MSD(dump_dma)));
 
-					WRT_REG_DWORD(&reg->hccr,
-					    HCCRX_CLR_RISC_INT);
-					RD_REG_DWORD(&reg->hccr);
-					break;
-				}
-
-				/* Clear this intr; it wasn't a mailbox intr */
-				WRT_REG_DWORD(&reg->hccr, HCCRX_CLR_RISC_INT);
-				RD_REG_DWORD(&reg->hccr);
-			}
-			udelay(5);
-		}
-
-		if (test_and_clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags)) {
-			rval = mb[0] & MBS_MASK;
-			code_ram[cnt] = htonl((mb[3] << 16) | mb[2]);
-		} else {
-			rval = QLA_FUNCTION_FAILED;
-		}
-	}
-
-	if (rval == QLA_SUCCESS) {
-		/* External Memory. */
-		risc_address = 0x100000;
-		ext_mem_cnt = ha->fw_memory_size - 0x100000 + 1;
-		WRT_REG_WORD(&reg->mailbox0, MBC_READ_RAM_EXTENDED);
-		clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
-	}
-	for (cnt = 0; cnt < ext_mem_cnt && rval == QLA_SUCCESS;
-	    cnt++, risc_address++) {
-		WRT_REG_WORD(&reg->mailbox1, LSW(risc_address));
-		WRT_REG_WORD(&reg->mailbox8, MSW(risc_address));
-		RD_REG_WORD(&reg->mailbox8);
+		WRT_REG_WORD(&reg->mailbox4, MSW(dwords));
+		WRT_REG_WORD(&reg->mailbox5, LSW(dwords));
 		WRT_REG_DWORD(&reg->hccr, HCCRX_SET_HOST_INT);
 
 		for (timer = 6000000; timer; timer--) {
@@ -123,9 +83,7 @@ qla24xx_dump_memory(scsi_qla_host_t *ha, uint32_t *code_ram,
 					set_bit(MBX_INTERRUPT,
 					    &ha->mbx_cmd_flags);
 
-					mb[0] = RD_REG_WORD(&reg->mailbox0);
-					mb[2] = RD_REG_WORD(&reg->mailbox2);
-					mb[3] = RD_REG_WORD(&reg->mailbox3);
+					mb0 = RD_REG_WORD(&reg->mailbox0);
 
 					WRT_REG_DWORD(&reg->hccr,
 					    HCCRX_CLR_RISC_INT);
@@ -141,17 +99,34 @@ qla24xx_dump_memory(scsi_qla_host_t *ha, uint32_t *code_ram,
 		}
 
 		if (test_and_clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags)) {
-			rval = mb[0] & MBS_MASK;
-			ext_mem[cnt] = htonl((mb[3] << 16) | mb[2]);
+			rval = mb0 & MBS_MASK;
+			for (idx = 0; idx < dwords; idx++)
+				ram[cnt + idx] = swab32(dump[idx]);
 		} else {
 			rval = QLA_FUNCTION_FAILED;
 		}
 	}
 
-	*nxt = rval == QLA_SUCCESS ? &ext_mem[cnt]: NULL;
+	*nxt = rval == QLA_SUCCESS ? &ram[cnt]: NULL;
 	return rval;
 }
 
+static int
+qla24xx_dump_memory(scsi_qla_host_t *ha, uint32_t *code_ram,
+    uint32_t cram_size, void **nxt)
+{
+	int rval;
+
+	/* Code RAM. */
+	rval = qla24xx_dump_ram(ha, 0x20000, code_ram, cram_size / 4, nxt);
+	if (rval != QLA_SUCCESS)
+		return rval;
+
+	/* External Memory. */
+	return qla24xx_dump_ram(ha, 0x100000, *nxt,
+	    ha->fw_memory_size - 0x100000 + 1, nxt);
+}
+
 static uint32_t *
 qla24xx_read_window(struct device_reg_24xx __iomem *reg, uint32_t iobase,
     uint32_t count, uint32_t *buf)
@@ -239,6 +214,90 @@ qla24xx_soft_reset(scsi_qla_host_t *ha)
 	return rval;
 }
 
+static int
+qla2xxx_dump_ram(scsi_qla_host_t *ha, uint32_t addr, uint16_t *ram,
+    uint16_t ram_words, void **nxt)
+{
+	int rval;
+	uint32_t cnt, stat, timer, words, idx;
+	uint16_t mb0;
+	struct device_reg_2xxx __iomem *reg = &ha->iobase->isp;
+	dma_addr_t dump_dma = ha->gid_list_dma;
+	uint16_t *dump = (uint16_t *)ha->gid_list;
+
+	rval = QLA_SUCCESS;
+	mb0 = 0;
+
+	WRT_MAILBOX_REG(ha, reg, 0, MBC_DUMP_RISC_RAM_EXTENDED);
+	clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
+
+	words = GID_LIST_SIZE / 2;
+	for (cnt = 0; cnt < ram_words && rval == QLA_SUCCESS;
+	    cnt += words, addr += words) {
+		if (cnt + words > ram_words)
+			words = ram_words - cnt;
+
+		WRT_MAILBOX_REG(ha, reg, 1, LSW(addr));
+		WRT_MAILBOX_REG(ha, reg, 8, MSW(addr));
+
+		WRT_MAILBOX_REG(ha, reg, 2, MSW(dump_dma));
+		WRT_MAILBOX_REG(ha, reg, 3, LSW(dump_dma));
+		WRT_MAILBOX_REG(ha, reg, 6, MSW(MSD(dump_dma)));
+		WRT_MAILBOX_REG(ha, reg, 7, LSW(MSD(dump_dma)));
+
+		WRT_MAILBOX_REG(ha, reg, 4, words);
+		WRT_REG_WORD(&reg->hccr, HCCR_SET_HOST_INT);
+
+		for (timer = 6000000; timer; timer--) {
+			/* Check for pending interrupts. */
+			stat = RD_REG_DWORD(&reg->u.isp2300.host_status);
+			if (stat & HSR_RISC_INT) {
+				stat &= 0xff;
+
+				if (stat == 0x1 || stat == 0x2) {
+					set_bit(MBX_INTERRUPT,
+					    &ha->mbx_cmd_flags);
+
+					mb0 = RD_MAILBOX_REG(ha, reg, 0);
+
+					/* Release mailbox registers. */
+					WRT_REG_WORD(&reg->semaphore, 0);
+					WRT_REG_WORD(&reg->hccr,
+					    HCCR_CLR_RISC_INT);
+					RD_REG_WORD(&reg->hccr);
+					break;
+				} else if (stat == 0x10 || stat == 0x11) {
+					set_bit(MBX_INTERRUPT,
+					    &ha->mbx_cmd_flags);
+
+					mb0 = RD_MAILBOX_REG(ha, reg, 0);
+
+					WRT_REG_WORD(&reg->hccr,
+					    HCCR_CLR_RISC_INT);
+					RD_REG_WORD(&reg->hccr);
+					break;
+				}
+
+				/* clear this intr; it wasn't a mailbox intr */
+				WRT_REG_WORD(&reg->hccr, HCCR_CLR_RISC_INT);
+				RD_REG_WORD(&reg->hccr);
+			}
+			udelay(5);
+		}
+
+		if (test_and_clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags)) {
+			rval = mb0 & MBS_MASK;
+			for (idx = 0; idx < words; idx++)
+				ram[cnt + idx] = swab16(dump[idx]);
+		} else {
+			rval = QLA_FUNCTION_FAILED;
+		}
+	}
+
+	*nxt = rval == QLA_SUCCESS ? &ram[cnt]: NULL;
+	return rval;
+}
+
 static inline void
 qla2xxx_read_window(struct device_reg_2xxx __iomem *reg, uint32_t count,
     uint16_t *buf)
@@ -258,19 +317,14 @@ void
 qla2300_fw_dump(scsi_qla_host_t *ha, int hardware_locked)
 {
 	int		rval;
-	uint32_t	cnt, timer;
-	uint32_t	risc_address;
-	uint16_t	mb0, mb2;
+	uint32_t	cnt;
 
-	uint32_t	stat;
 	struct device_reg_2xxx __iomem *reg = &ha->iobase->isp;
 	uint16_t __iomem *dmp_reg;
 	unsigned long	flags;
 	struct qla2300_fw_dump	*fw;
-	uint32_t	data_ram_cnt;
+	void		*nxt;
 
-	risc_address = data_ram_cnt = 0;
-	mb0 = mb2 = 0;
 	flags = 0;
 
 	if (!hardware_locked)
@@ -388,185 +442,23 @@ qla2300_fw_dump(scsi_qla_host_t *ha, int hardware_locked)
 		}
 	}
 
-	if (rval == QLA_SUCCESS) {
-		/* Get RISC SRAM. */
-		risc_address = 0x800;
- 		WRT_MAILBOX_REG(ha, reg, 0, MBC_READ_RAM_WORD);
-		clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
-	}
-	for (cnt = 0; cnt < sizeof(fw->risc_ram) / 2 && rval == QLA_SUCCESS;
-	    cnt++, risc_address++) {
- 		WRT_MAILBOX_REG(ha, reg, 1, (uint16_t)risc_address);
-		WRT_REG_WORD(&reg->hccr, HCCR_SET_HOST_INT);
-
-		for (timer = 6000000; timer; timer--) {
-			/* Check for pending interrupts. */
- 			stat = RD_REG_DWORD(&reg->u.isp2300.host_status);
-			if (stat & HSR_RISC_INT) {
-				stat &= 0xff;
-
-				if (stat == 0x1 || stat == 0x2) {
-					set_bit(MBX_INTERRUPT,
-					    &ha->mbx_cmd_flags);
-
-					mb0 = RD_MAILBOX_REG(ha, reg, 0);
-					mb2 = RD_MAILBOX_REG(ha, reg, 2);
-
-					/* Release mailbox registers. */
-					WRT_REG_WORD(&reg->semaphore, 0);
-					WRT_REG_WORD(&reg->hccr,
-					    HCCR_CLR_RISC_INT);
-					RD_REG_WORD(&reg->hccr);
-					break;
-				} else if (stat == 0x10 || stat == 0x11) {
-					set_bit(MBX_INTERRUPT,
-					    &ha->mbx_cmd_flags);
-
-					mb0 = RD_MAILBOX_REG(ha, reg, 0);
-					mb2 = RD_MAILBOX_REG(ha, reg, 2);
-
-					WRT_REG_WORD(&reg->hccr,
-					    HCCR_CLR_RISC_INT);
-					RD_REG_WORD(&reg->hccr);
-					break;
-				}
-
-				/* clear this intr; it wasn't a mailbox intr */
-				WRT_REG_WORD(&reg->hccr, HCCR_CLR_RISC_INT);
-				RD_REG_WORD(&reg->hccr);
-			}
-			udelay(5);
-		}
-
-		if (test_and_clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags)) {
-			rval = mb0 & MBS_MASK;
-			fw->risc_ram[cnt] = htons(mb2);
-		} else {
-			rval = QLA_FUNCTION_FAILED;
-		}
-	}
-
-	if (rval == QLA_SUCCESS) {
-		/* Get stack SRAM. */
-		risc_address = 0x10000;
- 		WRT_MAILBOX_REG(ha, reg, 0, MBC_READ_RAM_EXTENDED);
-		clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
-	}
-	for (cnt = 0; cnt < sizeof(fw->stack_ram) / 2 && rval == QLA_SUCCESS;
-	    cnt++, risc_address++) {
- 		WRT_MAILBOX_REG(ha, reg, 1, LSW(risc_address));
- 		WRT_MAILBOX_REG(ha, reg, 8, MSW(risc_address));
-		WRT_REG_WORD(&reg->hccr, HCCR_SET_HOST_INT);
-
-		for (timer = 6000000; timer; timer--) {
-			/* Check for pending interrupts. */
- 			stat = RD_REG_DWORD(&reg->u.isp2300.host_status);
-			if (stat & HSR_RISC_INT) {
-				stat &= 0xff;
-
-				if (stat == 0x1 || stat == 0x2) {
-					set_bit(MBX_INTERRUPT,
-					    &ha->mbx_cmd_flags);
-
-					mb0 = RD_MAILBOX_REG(ha, reg, 0);
-					mb2 = RD_MAILBOX_REG(ha, reg, 2);
-
-					/* Release mailbox registers. */
-					WRT_REG_WORD(&reg->semaphore, 0);
-					WRT_REG_WORD(&reg->hccr,
-					    HCCR_CLR_RISC_INT);
-					RD_REG_WORD(&reg->hccr);
-					break;
-				} else if (stat == 0x10 || stat == 0x11) {
-					set_bit(MBX_INTERRUPT,
-					    &ha->mbx_cmd_flags);
-
-					mb0 = RD_MAILBOX_REG(ha, reg, 0);
-					mb2 = RD_MAILBOX_REG(ha, reg, 2);
-
-					WRT_REG_WORD(&reg->hccr,
-					    HCCR_CLR_RISC_INT);
-					RD_REG_WORD(&reg->hccr);
-					break;
-				}
-
-				/* clear this intr; it wasn't a mailbox intr */
-				WRT_REG_WORD(&reg->hccr, HCCR_CLR_RISC_INT);
-				RD_REG_WORD(&reg->hccr);
-			}
-			udelay(5);
-		}
-
-		if (test_and_clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags)) {
-			rval = mb0 & MBS_MASK;
-			fw->stack_ram[cnt] = htons(mb2);
-		} else {
-			rval = QLA_FUNCTION_FAILED;
-		}
-	}
-
-	if (rval == QLA_SUCCESS) {
-		/* Get data SRAM. */
-		risc_address = 0x11000;
-		data_ram_cnt = ha->fw_memory_size - risc_address + 1;
- 		WRT_MAILBOX_REG(ha, reg, 0, MBC_READ_RAM_EXTENDED);
-		clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
-	}
-	for (cnt = 0; cnt < data_ram_cnt && rval == QLA_SUCCESS;
-	    cnt++, risc_address++) {
- 		WRT_MAILBOX_REG(ha, reg, 1, LSW(risc_address));
- 		WRT_MAILBOX_REG(ha, reg, 8, MSW(risc_address));
-		WRT_REG_WORD(&reg->hccr, HCCR_SET_HOST_INT);
-
-		for (timer = 6000000; timer; timer--) {
-			/* Check for pending interrupts. */
- 			stat = RD_REG_DWORD(&reg->u.isp2300.host_status);
-			if (stat & HSR_RISC_INT) {
-				stat &= 0xff;
-
-				if (stat == 0x1 || stat == 0x2) {
-					set_bit(MBX_INTERRUPT,
-					    &ha->mbx_cmd_flags);
-
-					mb0 = RD_MAILBOX_REG(ha, reg, 0);
-					mb2 = RD_MAILBOX_REG(ha, reg, 2);
-
-					/* Release mailbox registers. */
-					WRT_REG_WORD(&reg->semaphore, 0);
-					WRT_REG_WORD(&reg->hccr,
-					    HCCR_CLR_RISC_INT);
-					RD_REG_WORD(&reg->hccr);
-					break;
-				} else if (stat == 0x10 || stat == 0x11) {
-					set_bit(MBX_INTERRUPT,
-					    &ha->mbx_cmd_flags);
-
-					mb0 = RD_MAILBOX_REG(ha, reg, 0);
-					mb2 = RD_MAILBOX_REG(ha, reg, 2);
-
-					WRT_REG_WORD(&reg->hccr,
-					    HCCR_CLR_RISC_INT);
-					RD_REG_WORD(&reg->hccr);
-					break;
-				}
+	/* Get RISC SRAM. */
+	if (rval == QLA_SUCCESS)
+		rval = qla2xxx_dump_ram(ha, 0x800, fw->risc_ram,
+		    sizeof(fw->risc_ram) / 2, &nxt);
 
-				/* clear this intr; it wasn't a mailbox intr */
-				WRT_REG_WORD(&reg->hccr, HCCR_CLR_RISC_INT);
-				RD_REG_WORD(&reg->hccr);
-			}
-			udelay(5);
-		}
+	/* Get stack SRAM. */
+	if (rval == QLA_SUCCESS)
+		rval = qla2xxx_dump_ram(ha, 0x10000, fw->stack_ram,
+		    sizeof(fw->stack_ram) / 2, &nxt);
 
-		if (test_and_clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags)) {
-			rval = mb0 & MBS_MASK;
-			fw->data_ram[cnt] = htons(mb2);
-		} else {
-			rval = QLA_FUNCTION_FAILED;
-		}
-	}
+	/* Get data SRAM. */
+	if (rval == QLA_SUCCESS)
+		rval = qla2xxx_dump_ram(ha, 0x11000, fw->data_ram,
+		    ha->fw_memory_size - 0x11000 + 1, &nxt);
 
 	if (rval == QLA_SUCCESS)
-		qla2xxx_copy_queues(ha, &fw->data_ram[cnt]);
+		qla2xxx_copy_queues(ha, nxt);
 
 	if (rval != QLA_SUCCESS) {
 		qla_printk(KERN_WARNING, ha,
@@ -1010,7 +902,7 @@ qla24xx_fw_dump(scsi_qla_host_t *ha, int hardware_locked)
 		goto qla24xx_fw_dump_failed_0;
 
 	rval = qla24xx_dump_memory(ha, fw->code_ram, sizeof(fw->code_ram),
-	    fw->ext_mem, &nxt);
+	    &nxt);
 	if (rval != QLA_SUCCESS)
 		goto qla24xx_fw_dump_failed_0;
 
@@ -1318,7 +1210,7 @@ qla25xx_fw_dump(scsi_qla_host_t *ha, int hardware_locked)
 		goto qla25xx_fw_dump_failed_0;
 
 	rval = qla24xx_dump_memory(ha, fw->code_ram, sizeof(fw->code_ram),
-	    fw->ext_mem, &nxt);
+	    &nxt);
 	if (rval != QLA_SUCCESS)
 		goto qla25xx_fw_dump_failed_0;
 
-- 
1.5.5.1.67.gbdb8


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 02/10] qla2xxx: Wakeup DPC thread to process any deferred-work requests.
  2008-04-24 22:19 [PATCH 0/10] qla2xxx: updates for 2.6.26 [8.02.01-k2] Andrew Vasquez
  2008-04-24 22:21 ` [PATCH 01/10] qla2xxx: Collapse RISC-RAM retrieval code during a firmware-dump Andrew Vasquez
@ 2008-04-24 22:21 ` Andrew Vasquez
  2008-04-24 22:21 ` [PATCH 03/10] qla2xxx: Correct ISP84XX verify-chip response handling Andrew Vasquez
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Andrew Vasquez @ 2008-04-24 22:21 UTC (permalink / raw)
  To: Linux SCSI Mailing List, James Bottomley; +Cc: Andrew Vasquez, Seokmann Ju

Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
---
 drivers/scsi/qla2xxx/qla_os.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 8b33b16..978d8bd 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -2599,6 +2599,10 @@ qla2x00_timer(scsi_qla_host_t *ha)
 		start_dpc++;
 	}
 
+	/* Process any deferred work. */
+	if (!list_empty(&ha->work_list))
+		start_dpc++;
+
 	/* Schedule the DPC routine if needed */
 	if ((test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags) ||
 	    test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags) ||
-- 
1.5.5.1.67.gbdb8


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 03/10] qla2xxx: Correct ISP84XX verify-chip response handling.
  2008-04-24 22:19 [PATCH 0/10] qla2xxx: updates for 2.6.26 [8.02.01-k2] Andrew Vasquez
  2008-04-24 22:21 ` [PATCH 01/10] qla2xxx: Collapse RISC-RAM retrieval code during a firmware-dump Andrew Vasquez
  2008-04-24 22:21 ` [PATCH 02/10] qla2xxx: Wakeup DPC thread to process any deferred-work requests Andrew Vasquez
@ 2008-04-24 22:21 ` Andrew Vasquez
  2008-04-24 22:21 ` [PATCH 04/10] qla2xxx: Correct SRB usage-after-completion/free issues Andrew Vasquez
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Andrew Vasquez @ 2008-04-24 22:21 UTC (permalink / raw)
  To: Linux SCSI Mailing List, James Bottomley; +Cc: Andrew Vasquez, Seokmann Ju

Earlier code could trigger an infinite-retry if 1st invocation
returned a non-CS_COMPLETE status.

Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
---
 drivers/scsi/qla2xxx/qla_mbx.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c
index 7d0a8a4..a9cb829 100644
--- a/drivers/scsi/qla2xxx/qla_mbx.c
+++ b/drivers/scsi/qla2xxx/qla_mbx.c
@@ -2982,8 +2982,8 @@ qla84xx_verify_chip(struct scsi_qla_host *ha, uint16_t *status)
 	/* We update the firmware with only one data sequence. */
 	options |= VCO_END_OF_DATA;
 
-	retry = 0;
 	do {
+		retry = 0;
 		memset(mn, 0, sizeof(*mn));
 		mn->p.req.entry_type = VERIFY_CHIP_IOCB_TYPE;
 		mn->p.req.entry_count = 1;
-- 
1.5.5.1.67.gbdb8


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 04/10] qla2xxx: Correct SRB usage-after-completion/free issues.
  2008-04-24 22:19 [PATCH 0/10] qla2xxx: updates for 2.6.26 [8.02.01-k2] Andrew Vasquez
                   ` (2 preceding siblings ...)
  2008-04-24 22:21 ` [PATCH 03/10] qla2xxx: Correct ISP84XX verify-chip response handling Andrew Vasquez
@ 2008-04-24 22:21 ` Andrew Vasquez
  2008-04-24 22:21 ` [PATCH 05/10] qla2xxx: Re-register FDMI information after a LIP Andrew Vasquez
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Andrew Vasquez @ 2008-04-24 22:21 UTC (permalink / raw)
  To: Linux SCSI Mailing List, James Bottomley; +Cc: Andrew Vasquez, Seokmann Ju

The driver is incorrectly assuming that the 'sp' reference held
in qla2[x00|4xx]_abort_command() is valid after the mailbox
command is issued to abort the exchange.  It is *not*, as the
command may be completed during interrupt context before control
is returned to the mailbox caller.

Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
---
 drivers/scsi/qla2xxx/qla_mbx.c |    2 --
 1 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c
index a9cb829..d10cb06 100644
--- a/drivers/scsi/qla2xxx/qla_mbx.c
+++ b/drivers/scsi/qla2xxx/qla_mbx.c
@@ -784,7 +784,6 @@ qla2x00_abort_command(scsi_qla_host_t *ha, srb_t *sp)
 		DEBUG2_3_11(printk("qla2x00_abort_command(%ld): failed=%x.\n",
 		    ha->host_no, rval));
 	} else {
-		sp->flags |= SRB_ABORT_PENDING;
 		DEBUG11(printk("qla2x00_abort_command(%ld): done.\n",
 		    ha->host_no));
 	}
@@ -2210,7 +2209,6 @@ qla24xx_abort_command(scsi_qla_host_t *ha, srb_t *sp)
 		rval = QLA_FUNCTION_FAILED;
 	} else {
 		DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no));
-		sp->flags |= SRB_ABORT_PENDING;
 	}
 
 	dma_pool_free(ha->s_dma_pool, abt, abt_dma);
-- 
1.5.5.1.67.gbdb8


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 05/10] qla2xxx: Re-register FDMI information after a LIP.
  2008-04-24 22:19 [PATCH 0/10] qla2xxx: updates for 2.6.26 [8.02.01-k2] Andrew Vasquez
                   ` (3 preceding siblings ...)
  2008-04-24 22:21 ` [PATCH 04/10] qla2xxx: Correct SRB usage-after-completion/free issues Andrew Vasquez
@ 2008-04-24 22:21 ` Andrew Vasquez
  2008-04-24 22:21 ` [PATCH 06/10] qla2xxx: qla_os.c, make 2 functions static Andrew Vasquez
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Andrew Vasquez @ 2008-04-24 22:21 UTC (permalink / raw)
  To: Linux SCSI Mailing List, James Bottomley; +Cc: Andrew Vasquez, Seokmann Ju

Original code would (incorrectly) only re-register after a
loop-down condition.  Also, FDMI registration should be enabled
by default.

Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
---
 drivers/scsi/qla2xxx/qla_isr.c |    4 ++--
 drivers/scsi/qla2xxx/qla_os.c  |    2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index 285479b..5d9a64a 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -409,6 +409,7 @@ qla2x00_async_event(scsi_qla_host_t *ha, uint16_t *mb)
 		}
 
 		set_bit(REGISTER_FC4_NEEDED, &ha->dpc_flags);
+		set_bit(REGISTER_FDMI_NEEDED, &ha->dpc_flags);
 
 		ha->flags.management_server_logged_in = 0;
 		qla2x00_post_aen_work(ha, FCH_EVT_LIP, mb[1]);
@@ -454,8 +455,6 @@ qla2x00_async_event(scsi_qla_host_t *ha, uint16_t *mb)
 
 		ha->flags.management_server_logged_in = 0;
 		ha->link_data_rate = PORT_SPEED_UNKNOWN;
-		if (ql2xfdmienable)
-			set_bit(REGISTER_FDMI_NEEDED, &ha->dpc_flags);
 		qla2x00_post_aen_work(ha, FCH_EVT_LINKDOWN, 0);
 		break;
 
@@ -511,6 +510,7 @@ qla2x00_async_event(scsi_qla_host_t *ha, uint16_t *mb)
 			set_bit(RESET_MARKER_NEEDED, &ha->dpc_flags);
 		}
 		set_bit(REGISTER_FC4_NEEDED, &ha->dpc_flags);
+		set_bit(REGISTER_FDMI_NEEDED, &ha->dpc_flags);
 
 		ha->flags.gpsc_supported = 1;
 		ha->flags.management_server_logged_in = 0;
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 978d8bd..a7c20f8 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -67,7 +67,7 @@ static void qla2x00_free_device(scsi_qla_host_t *);
 
 static void qla2x00_config_dma_addressing(scsi_qla_host_t *ha);
 
-int ql2xfdmienable;
+int ql2xfdmienable=1;
 module_param(ql2xfdmienable, int, S_IRUGO|S_IRUSR);
 MODULE_PARM_DESC(ql2xfdmienable,
 		"Enables FDMI registratons "
-- 
1.5.5.1.67.gbdb8


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 06/10] qla2xxx: qla_os.c, make 2 functions static
  2008-04-24 22:19 [PATCH 0/10] qla2xxx: updates for 2.6.26 [8.02.01-k2] Andrew Vasquez
                   ` (4 preceding siblings ...)
  2008-04-24 22:21 ` [PATCH 05/10] qla2xxx: Re-register FDMI information after a LIP Andrew Vasquez
@ 2008-04-24 22:21 ` Andrew Vasquez
  2008-04-24 22:21 ` [PATCH 07/10] qla2xxx: make qla2x00_issue_iocb_timeout() static Andrew Vasquez
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Andrew Vasquez @ 2008-04-24 22:21 UTC (permalink / raw)
  To: Linux SCSI Mailing List, James Bottomley
  Cc: Andrew Vasquez, Seokmann Ju, Adrian Bunk

From: Adrian Bunk <bunk@kernel.org>

This patch makes the following needlessly global functions static:
- qla2x00_alloc_work()
- qla2x00_post_work()

Signed-off-by: Adrian Bunk <bunk@kernel.org>
Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
---
 drivers/scsi/qla2xxx/qla_os.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index a7c20f8..878a37a 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -2135,7 +2135,7 @@ qla2x00_mem_free(scsi_qla_host_t *ha)
 	kfree(ha->nvram);
 }
 
-struct qla_work_evt *
+static struct qla_work_evt *
 qla2x00_alloc_work(struct scsi_qla_host *ha, enum qla_work_type type,
     int locked)
 {
@@ -2152,7 +2152,7 @@ qla2x00_alloc_work(struct scsi_qla_host *ha, enum qla_work_type type,
 	return e;
 }
 
-int
+static int
 qla2x00_post_work(struct scsi_qla_host *ha, struct qla_work_evt *e, int locked)
 {
 	unsigned long flags;
-- 
1.5.5.1.67.gbdb8


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 07/10] qla2xxx: make qla2x00_issue_iocb_timeout() static
  2008-04-24 22:19 [PATCH 0/10] qla2xxx: updates for 2.6.26 [8.02.01-k2] Andrew Vasquez
                   ` (5 preceding siblings ...)
  2008-04-24 22:21 ` [PATCH 06/10] qla2xxx: qla_os.c, make 2 functions static Andrew Vasquez
@ 2008-04-24 22:21 ` Andrew Vasquez
  2008-04-24 22:21 ` [PATCH 08/10] qla2xxx: Correct misc. endian and byte-ordering issues Andrew Vasquez
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Andrew Vasquez @ 2008-04-24 22:21 UTC (permalink / raw)
  To: Linux SCSI Mailing List, James Bottomley
  Cc: Andrew Vasquez, Seokmann Ju, Adrian Bunk

From: Adrian Bunk <bunk@kernel.org>

This patch makes the needlessly global qla2x00_issue_iocb_timeout()
static.

Signed-off-by: Adrian Bunk <bunk@kernel.org>
Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
---
 drivers/scsi/qla2xxx/qla_gbl.h |    4 ----
 drivers/scsi/qla2xxx/qla_mbx.c |    2 +-
 2 files changed, 1 insertions(+), 5 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h
index 76eb4fe..f882706 100644
--- a/drivers/scsi/qla2xxx/qla_gbl.h
+++ b/drivers/scsi/qla2xxx/qla_gbl.h
@@ -152,10 +152,6 @@ extern int
 qla2x00_issue_iocb(scsi_qla_host_t *, void *, dma_addr_t, size_t);
 
 extern int
-qla2x00_issue_iocb_timeout(scsi_qla_host_t *, void *, dma_addr_t, size_t,
-    uint32_t);
-
-extern int
 qla2x00_abort_command(scsi_qla_host_t *, srb_t *);
 
 extern int
diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c
index d10cb06..875c418 100644
--- a/drivers/scsi/qla2xxx/qla_mbx.c
+++ b/drivers/scsi/qla2xxx/qla_mbx.c
@@ -681,7 +681,7 @@ qla2x00_verify_checksum(scsi_qla_host_t *ha, uint32_t risc_addr)
  * Context:
  *	Kernel context.
  */
-int
+static int
 qla2x00_issue_iocb_timeout(scsi_qla_host_t *ha, void *buffer,
     dma_addr_t phys_addr, size_t size, uint32_t tov)
 {
-- 
1.5.5.1.67.gbdb8


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 08/10] qla2xxx: Correct misc. endian and byte-ordering issues.
  2008-04-24 22:19 [PATCH 0/10] qla2xxx: updates for 2.6.26 [8.02.01-k2] Andrew Vasquez
                   ` (6 preceding siblings ...)
  2008-04-24 22:21 ` [PATCH 07/10] qla2xxx: make qla2x00_issue_iocb_timeout() static Andrew Vasquez
@ 2008-04-24 22:21 ` Andrew Vasquez
  2008-04-24 22:21 ` [PATCH 09/10] qla2xxx: Correct regression in relogin code Andrew Vasquez
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Andrew Vasquez @ 2008-04-24 22:21 UTC (permalink / raw)
  To: Linux SCSI Mailing List, James Bottomley; +Cc: Andrew Vasquez, Seokmann Ju

From: Seokmann Ju <seokmann.ju@qlogic.com>

There were several places in the driver which could cause byte
ordering problem as provided by Al Viro
<viro@ZenIV.linux.org.uk>.

Signed-off-by: Seokmann Ju <seokmann.ju@qlogic.com>
---
 drivers/scsi/qla2xxx/qla_fw.h   |   26 +++++---------------------
 drivers/scsi/qla2xxx/qla_gs.c   |    4 ++--
 drivers/scsi/qla2xxx/qla_init.c |    2 +-
 drivers/scsi/qla2xxx/qla_mbx.c  |   13 ++++++-------
 4 files changed, 14 insertions(+), 31 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_fw.h b/drivers/scsi/qla2xxx/qla_fw.h
index 078f2a1..cf19451 100644
--- a/drivers/scsi/qla2xxx/qla_fw.h
+++ b/drivers/scsi/qla2xxx/qla_fw.h
@@ -1036,22 +1036,6 @@ struct mid_db_entry_24xx {
 	uint8_t reserved_1;
 };
 
- /*
- * Virtual Fabric ID type definition.
- */
-typedef struct vf_id {
-        uint16_t id : 12;
-        uint16_t priority : 4;
-} vf_id_t;
-
-/*
- * Virtual Fabric HopCt type definition.
- */
-typedef struct vf_hopct {
-        uint16_t reserved : 8;
-        uint16_t hopct : 8;
-} vf_hopct_t;
-
 /*
  * Virtual Port Control IOCB
  */
@@ -1082,10 +1066,10 @@ struct vp_ctrl_entry_24xx {
 
 	uint8_t vp_idx_map[16];
 	uint16_t flags;
-	struct vf_id    id;
+	uint16_t id;
 	uint16_t reserved_4;
-	struct vf_hopct  hopct;
-	uint8_t reserved_5[8];
+	uint16_t hopct;
+	uint8_t reserved_5[24];
 };
 
 /*
@@ -1132,9 +1116,9 @@ struct vp_config_entry_24xx {
 	uint16_t reserved_vp2;
 	uint8_t port_name_idx2[WWN_SIZE];
 	uint8_t node_name_idx2[WWN_SIZE];
-	struct vf_id    id;
+	uint16_t id;
 	uint16_t reserved_4;
-	struct vf_hopct  hopct;
+	uint16_t hopct;
 	uint8_t reserved_5;
 };
 
diff --git a/drivers/scsi/qla2xxx/qla_gs.c b/drivers/scsi/qla2xxx/qla_gs.c
index 750d7ef..4cb80b4 100644
--- a/drivers/scsi/qla2xxx/qla_gs.c
+++ b/drivers/scsi/qla2xxx/qla_gs.c
@@ -1583,8 +1583,8 @@ qla2x00_fdmi_rpa(scsi_qla_host_t *ha)
 	eiter->type = __constant_cpu_to_be16(FDMI_PORT_MAX_FRAME_SIZE);
 	eiter->len = __constant_cpu_to_be16(4 + 4);
 	max_frame_size = IS_FWI2_CAPABLE(ha) ?
-		(uint32_t) icb24->frame_payload_size:
-		(uint32_t) ha->init_cb->frame_payload_size;
+	    le16_to_cpu(icb24->frame_payload_size):
+	    le16_to_cpu(ha->init_cb->frame_payload_size);
 	eiter->a.max_frame_size = cpu_to_be32(max_frame_size);
 	size += 4 + 4;
 
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index 01e2608..bbbc5a6 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -3645,7 +3645,7 @@ qla24xx_nvram_config(scsi_qla_host_t *ha)
 	if (le16_to_cpu(nv->login_timeout) < 4)
 		nv->login_timeout = __constant_cpu_to_le16(4);
 	ha->login_timeout = le16_to_cpu(nv->login_timeout);
-	icb->login_timeout = cpu_to_le16(nv->login_timeout);
+	icb->login_timeout = nv->login_timeout;
 
 	/* Set minimum RATOV to 100 tenths of a second. */
 	ha->r_a_tov = 100;
diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c
index 875c418..2100604 100644
--- a/drivers/scsi/qla2xxx/qla_mbx.c
+++ b/drivers/scsi/qla2xxx/qla_mbx.c
@@ -1468,7 +1468,7 @@ qla24xx_login_fabric(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t domain,
 	lg->port_id[0] = al_pa;
 	lg->port_id[1] = area;
 	lg->port_id[2] = domain;
-	lg->vp_index = cpu_to_le16(ha->vp_idx);
+	lg->vp_index = ha->vp_idx;
 	rval = qla2x00_issue_iocb(ha, lg, lg_dma, 0);
 	if (rval != QLA_SUCCESS) {
 		DEBUG2_3_11(printk("%s(%ld): failed to issue Login IOCB "
@@ -1723,7 +1723,7 @@ qla24xx_fabric_logout(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t domain,
 	lg->port_id[0] = al_pa;
 	lg->port_id[1] = area;
 	lg->port_id[2] = domain;
-	lg->vp_index = cpu_to_le16(ha->vp_idx);
+	lg->vp_index = ha->vp_idx;
 	rval = qla2x00_issue_iocb(ha, lg, lg_dma, 0);
 	if (rval != QLA_SUCCESS) {
 		DEBUG2_3_11(printk("%s(%ld): failed to issue Logout IOCB "
@@ -2642,12 +2642,11 @@ qla24xx_report_id_acquisition(scsi_qla_host_t *ha,
 	struct vp_rpt_id_entry_24xx *rptid_entry)
 {
 	uint8_t vp_idx;
+	uint16_t stat = le16_to_cpu(rptid_entry->vp_idx);
 	scsi_qla_host_t *vha;
 
 	if (rptid_entry->entry_status != 0)
 		return;
-	if (rptid_entry->entry_status != __constant_cpu_to_le16(CS_COMPLETE))
-		return;
 
 	if (rptid_entry->format == 0) {
 		DEBUG15(printk("%s:format 0 : scsi(%ld) number of VPs setup %d,"
@@ -2657,17 +2656,17 @@ qla24xx_report_id_acquisition(scsi_qla_host_t *ha,
 			rptid_entry->port_id[2], rptid_entry->port_id[1],
 			rptid_entry->port_id[0]));
 	} else if (rptid_entry->format == 1) {
-		vp_idx = LSB(rptid_entry->vp_idx);
+		vp_idx = LSB(stat);
 		DEBUG15(printk("%s:format 1: scsi(%ld): VP[%d] enabled "
 		    "- status %d - "
 		    "with port id %02x%02x%02x\n",__func__,ha->host_no,
-		    vp_idx, MSB(rptid_entry->vp_idx),
+		    vp_idx, MSB(stat),
 		    rptid_entry->port_id[2], rptid_entry->port_id[1],
 		    rptid_entry->port_id[0]));
 		if (vp_idx == 0)
 			return;
 
-		if (MSB(rptid_entry->vp_idx) == 1)
+		if (MSB(stat) == 1)
 			return;
 
 		list_for_each_entry(vha, &ha->vp_list, vp_list)
-- 
1.5.5.1.67.gbdb8


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 09/10] qla2xxx: Correct regression in relogin code.
  2008-04-24 22:19 [PATCH 0/10] qla2xxx: updates for 2.6.26 [8.02.01-k2] Andrew Vasquez
                   ` (7 preceding siblings ...)
  2008-04-24 22:21 ` [PATCH 08/10] qla2xxx: Correct misc. endian and byte-ordering issues Andrew Vasquez
@ 2008-04-24 22:21 ` Andrew Vasquez
  2008-04-24 22:21 ` [PATCH 10/10] qla2xxx: Update version number to 8.02.01-k2 Andrew Vasquez
  2008-04-24 22:31 ` [PATCH 0/10] qla2xxx: updates for 2.6.26 [8.02.01-k2] James Bottomley
  10 siblings, 0 replies; 15+ messages in thread
From: Andrew Vasquez @ 2008-04-24 22:21 UTC (permalink / raw)
  To: Linux SCSI Mailing List, James Bottomley; +Cc: Andrew Vasquez, Seokmann Ju

Commit 63a8651f2548c6bb5132c0b4e7dad4f57a9274db ([SCSI] qla2xxx:
Correct infinite-login-retry issue.) introduced a small
regression where a successful relogin would result in an fcport's
loop_id to be incorrectly reset to FC_NO_LOOP_ID.  Only clear-out
loopid, if retries have been 'truly' exhausted.

Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
---
 drivers/scsi/qla2xxx/qla_os.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 878a37a..3223fd1 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -2373,7 +2373,7 @@ qla2x00_do_dpc(void *data)
 					} else {
 						fcport->login_retry = 0;
 					}
-					if (fcport->login_retry == 0)
+					if (fcport->login_retry == 0 && status != QLA_SUCCESS)
 						fcport->loop_id = FC_NO_LOOP_ID;
 				}
 				if (test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags))
-- 
1.5.5.1.67.gbdb8


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 10/10] qla2xxx: Update version number to 8.02.01-k2.
  2008-04-24 22:19 [PATCH 0/10] qla2xxx: updates for 2.6.26 [8.02.01-k2] Andrew Vasquez
                   ` (8 preceding siblings ...)
  2008-04-24 22:21 ` [PATCH 09/10] qla2xxx: Correct regression in relogin code Andrew Vasquez
@ 2008-04-24 22:21 ` Andrew Vasquez
  2008-04-24 22:31 ` [PATCH 0/10] qla2xxx: updates for 2.6.26 [8.02.01-k2] James Bottomley
  10 siblings, 0 replies; 15+ messages in thread
From: Andrew Vasquez @ 2008-04-24 22:21 UTC (permalink / raw)
  To: Linux SCSI Mailing List, James Bottomley; +Cc: Andrew Vasquez, Seokmann Ju

Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
---
 drivers/scsi/qla2xxx/qla_version.h |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_version.h b/drivers/scsi/qla2xxx/qla_version.h
index f42f17a..afeae2b 100644
--- a/drivers/scsi/qla2xxx/qla_version.h
+++ b/drivers/scsi/qla2xxx/qla_version.h
@@ -7,7 +7,7 @@
 /*
  * Driver version
  */
-#define QLA2XXX_VERSION      "8.02.01-k1"
+#define QLA2XXX_VERSION      "8.02.01-k2"
 
 #define QLA_DRIVER_MAJOR_VER	8
 #define QLA_DRIVER_MINOR_VER	2
-- 
1.5.5.1.67.gbdb8


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCH 0/10] qla2xxx: updates for 2.6.26 [8.02.01-k2].
  2008-04-24 22:19 [PATCH 0/10] qla2xxx: updates for 2.6.26 [8.02.01-k2] Andrew Vasquez
                   ` (9 preceding siblings ...)
  2008-04-24 22:21 ` [PATCH 10/10] qla2xxx: Update version number to 8.02.01-k2 Andrew Vasquez
@ 2008-04-24 22:31 ` James Bottomley
  2008-04-24 22:37   ` Andrew Vasquez
  10 siblings, 1 reply; 15+ messages in thread
From: James Bottomley @ 2008-04-24 22:31 UTC (permalink / raw)
  To: Andrew Vasquez; +Cc: Linux SCSI Mailing List, Seokmann Ju

On Thu, 2008-04-24 at 15:19 -0700, Andrew Vasquez wrote:
> This patchset contains fixes/updates for 2.6.26.
> 
>  drivers/scsi/qla2xxx/qla_dbg.c     |  394 +++++++++++++-----------------------
>  drivers/scsi/qla2xxx/qla_fw.h      |   26 +--
>  drivers/scsi/qla2xxx/qla_gbl.h     |    4 -
>  drivers/scsi/qla2xxx/qla_gs.c      |    4 +-
>  drivers/scsi/qla2xxx/qla_init.c    |    2 +-
>  drivers/scsi/qla2xxx/qla_isr.c     |    4 +-
>  drivers/scsi/qla2xxx/qla_mbx.c     |   19 +-
>  drivers/scsi/qla2xxx/qla_os.c      |   12 +-
>  drivers/scsi/qla2xxx/qla_version.h |    2 +-
>  9 files changed, 170 insertions(+), 297 deletions(-)
> 
> here's the commits:
> 
> - Collapse RISC-RAM retrieval code during a firmware-dump.
> - Wakeup DPC thread to process any deferred-work requests.
> - Correct ISP84XX verify-chip response handling.
> - Correct SRB usage-after-completion/free issues.
> - Re-register FDMI information after a LIP.
> - qla_os.c, make 2 functions static
> - make qla2x00_issue_iocb_timeout() static
> - Correct misc. endian and byte-ordering issues.
> - Correct regression in relogin code.
> - Update version number to 8.02.01-k2.

So, since I have to guess, I put my money on:

[PATCH 09/10] qla2xxx: Correct regression in relogin code

needs backporting to stable to fix the 2.6.24 regression bug 10486.

Do I win?

James



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 0/10] qla2xxx: updates for 2.6.26 [8.02.01-k2].
  2008-04-24 22:31 ` [PATCH 0/10] qla2xxx: updates for 2.6.26 [8.02.01-k2] James Bottomley
@ 2008-04-24 22:37   ` Andrew Vasquez
  2008-04-24 22:51     ` James Bottomley
  0 siblings, 1 reply; 15+ messages in thread
From: Andrew Vasquez @ 2008-04-24 22:37 UTC (permalink / raw)
  To: James Bottomley; +Cc: Linux SCSI Mailing List, Seokmann Ju

On Thu, 24 Apr 2008, James Bottomley wrote:

> On Thu, 2008-04-24 at 15:19 -0700, Andrew Vasquez wrote:
> > This patchset contains fixes/updates for 2.6.26.
> > 
> >  drivers/scsi/qla2xxx/qla_dbg.c     |  394 +++++++++++++-----------------------
> >  drivers/scsi/qla2xxx/qla_fw.h      |   26 +--
> >  drivers/scsi/qla2xxx/qla_gbl.h     |    4 -
> >  drivers/scsi/qla2xxx/qla_gs.c      |    4 +-
> >  drivers/scsi/qla2xxx/qla_init.c    |    2 +-
> >  drivers/scsi/qla2xxx/qla_isr.c     |    4 +-
> >  drivers/scsi/qla2xxx/qla_mbx.c     |   19 +-
> >  drivers/scsi/qla2xxx/qla_os.c      |   12 +-
> >  drivers/scsi/qla2xxx/qla_version.h |    2 +-
> >  9 files changed, 170 insertions(+), 297 deletions(-)
> > 
> > here's the commits:
> > 
> > - Collapse RISC-RAM retrieval code during a firmware-dump.
> > - Wakeup DPC thread to process any deferred-work requests.
> > - Correct ISP84XX verify-chip response handling.
> > - Correct SRB usage-after-completion/free issues.
> > - Re-register FDMI information after a LIP.
> > - qla_os.c, make 2 functions static
> > - make qla2x00_issue_iocb_timeout() static
> > - Correct misc. endian and byte-ordering issues.
> > - Correct regression in relogin code.
> > - Update version number to 8.02.01-k2.
> 
> So, since I have to guess, I put my money on:
> 
> [PATCH 09/10] qla2xxx: Correct regression in relogin code
> 
> needs backporting to stable to fix the 2.6.24 regression bug 10486.
> 
> Do I win?

Sure do.  Send me your RTN and I'll wire you 10 million USD...

All kidding aside, I've just sent the patch to stable@kernel.org for
inclusion.

thanks,
av

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 0/10] qla2xxx: updates for 2.6.26 [8.02.01-k2].
  2008-04-24 22:37   ` Andrew Vasquez
@ 2008-04-24 22:51     ` James Bottomley
  2008-04-24 22:58       ` Andrew Vasquez
  0 siblings, 1 reply; 15+ messages in thread
From: James Bottomley @ 2008-04-24 22:51 UTC (permalink / raw)
  To: Andrew Vasquez; +Cc: Linux SCSI Mailing List, Seokmann Ju

On Thu, 2008-04-24 at 15:37 -0700, Andrew Vasquez wrote:
> On Thu, 24 Apr 2008, James Bottomley wrote:
> > On Thu, 2008-04-24 at 15:19 -0700, Andrew Vasquez wrote:
> > > This patchset contains fixes/updates for 2.6.26.
[...]
> > So, since I have to guess, I put my money on:
> > 
> > [PATCH 09/10] qla2xxx: Correct regression in relogin code
> > 
> > needs backporting to stable to fix the 2.6.24 regression bug 10486.
> > 
> > Do I win?
> 
> Sure do.  Send me your RTN and I'll wire you 10 million USD...
> 
> All kidding aside, I've just sent the patch to stable@kernel.org for
> inclusion.

Unfortunately, that won't quit work.  Stable won't accept a patch until
it's upstream.  For that reason, I tag all such patches with

Cc: Stable Tree <stable@kernel.org>

in my git tree.  This triggers an automatic email prod to the stable
team when the patch goes upstream, so unless the backport is non
trivial, that's all that's all that's needed.

I just needed to know where to put the tag.

James



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 0/10] qla2xxx: updates for 2.6.26 [8.02.01-k2].
  2008-04-24 22:51     ` James Bottomley
@ 2008-04-24 22:58       ` Andrew Vasquez
  0 siblings, 0 replies; 15+ messages in thread
From: Andrew Vasquez @ 2008-04-24 22:58 UTC (permalink / raw)
  To: James Bottomley; +Cc: Linux SCSI Mailing List, Seokmann Ju

On Thu, 24 Apr 2008, James Bottomley wrote:

> Unfortunately, that won't quit work.  Stable won't accept a patch until
> it's upstream.  For that reason, I tag all such patches with
> 
> Cc: Stable Tree <stable@kernel.org>
> 
> in my git tree.  This triggers an automatic email prod to the stable
> team when the patch goes upstream, so unless the backport is non
> trivial, that's all that's all that's needed.
> 
> I just needed to know where to put the tag.

That's good info, thanks.  I tried to follow the bits in
Documentation/stable_kernel_rules.txt...

grazie,
av

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2008-04-24 22:58 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-04-24 22:19 [PATCH 0/10] qla2xxx: updates for 2.6.26 [8.02.01-k2] Andrew Vasquez
2008-04-24 22:21 ` [PATCH 01/10] qla2xxx: Collapse RISC-RAM retrieval code during a firmware-dump Andrew Vasquez
2008-04-24 22:21 ` [PATCH 02/10] qla2xxx: Wakeup DPC thread to process any deferred-work requests Andrew Vasquez
2008-04-24 22:21 ` [PATCH 03/10] qla2xxx: Correct ISP84XX verify-chip response handling Andrew Vasquez
2008-04-24 22:21 ` [PATCH 04/10] qla2xxx: Correct SRB usage-after-completion/free issues Andrew Vasquez
2008-04-24 22:21 ` [PATCH 05/10] qla2xxx: Re-register FDMI information after a LIP Andrew Vasquez
2008-04-24 22:21 ` [PATCH 06/10] qla2xxx: qla_os.c, make 2 functions static Andrew Vasquez
2008-04-24 22:21 ` [PATCH 07/10] qla2xxx: make qla2x00_issue_iocb_timeout() static Andrew Vasquez
2008-04-24 22:21 ` [PATCH 08/10] qla2xxx: Correct misc. endian and byte-ordering issues Andrew Vasquez
2008-04-24 22:21 ` [PATCH 09/10] qla2xxx: Correct regression in relogin code Andrew Vasquez
2008-04-24 22:21 ` [PATCH 10/10] qla2xxx: Update version number to 8.02.01-k2 Andrew Vasquez
2008-04-24 22:31 ` [PATCH 0/10] qla2xxx: updates for 2.6.26 [8.02.01-k2] James Bottomley
2008-04-24 22:37   ` Andrew Vasquez
2008-04-24 22:51     ` James Bottomley
2008-04-24 22:58       ` Andrew Vasquez

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.