Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 289631 Details for
Bug 425721
[QLogic 4.7 bug][3/5] qla4xxx - Targets not seen on first port (5.01.02-d2 --> 5.01.02-d3)
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
Patch from 5.01.02-d2 to 5.01.02-d3
qla4xxx-5.01.02-d2_5.01.02-d3_RH47.patch (text/plain), 9.17 KB, created by
Dave Wagner
on 2007-12-15 01:02:35 UTC
(
hide
)
Description:
Patch from 5.01.02-d2 to 5.01.02-d3
Filename:
MIME Type:
Creator:
Dave Wagner
Created:
2007-12-15 01:02:35 UTC
Size:
9.17 KB
patch
obsolete
>diff -Naurp 5.01.02-d2/drivers/scsi/qla4xxx/ql4_dbg.h 5.01.02-d3/drivers/scsi/qla4xxx/ql4_dbg.h >--- 5.01.02-d2/drivers/scsi/qla4xxx/ql4_dbg.h 2007-11-06 14:21:49.000000000 -0800 >+++ 5.01.02-d3/drivers/scsi/qla4xxx/ql4_dbg.h 2007-12-10 15:15:16.000000000 -0800 >@@ -59,7 +59,7 @@ void qla4xxx_print_srb_info(uint32_t > /* #define QL_DEBUG_LEVEL_5 */ > /* #define QL_DEBUG_LEVEL_9 */ > >-/* #define QL_DEBUG_LEVEL_2 */ /* Output error msgs to COM1 */ >+#define QL_DEBUG_LEVEL_2 /* Output error msgs to COM1 */ > > #define DEBUG(x) do {} while (0); > >diff -Naurp 5.01.02-d2/drivers/scsi/qla4xxx/ql4_fw.h 5.01.02-d3/drivers/scsi/qla4xxx/ql4_fw.h >--- 5.01.02-d2/drivers/scsi/qla4xxx/ql4_fw.h 2007-06-12 14:08:51.000000000 -0700 >+++ 5.01.02-d3/drivers/scsi/qla4xxx/ql4_fw.h 2007-12-10 10:14:36.000000000 -0800 >@@ -880,7 +880,7 @@ typedef struct _ADDRESS_CTRL_BLK { > uint8_t IPAddr[4]; /* 50-53 IPv4 */ > __le16 VLANTagCtrl; /* 54-55 IPv4 */ > uint8_t IPv4AddrState; /* 56 */ >- uint8_t IPv4CacheId; /* 567 */ >+ uint8_t IPv4CacheId; /* 57 */ > uint8_t Reserved4[8]; /* 58-5F */ > uint8_t SubnetMask[4]; /* 60-63 IPv4 */ > uint8_t Reserved5[12]; /* 64-6F */ >@@ -963,7 +963,6 @@ typedef struct _ADDRESS_CTRL_BLK { > uint8_t Reserved14[140]; /* 274-2FF */ > } ADDRESS_CTRL_BLK, *PADDRESS_CTRL_BLK; /* 300 */ > >- > typedef struct _INIT_FW_CTRL_BLK { > ADDRESS_CTRL_BLK pri_acb; > ADDRESS_CTRL_BLK sec_acb; >diff -Naurp 5.01.02-d2/drivers/scsi/qla4xxx/ql4_init.c 5.01.02-d3/drivers/scsi/qla4xxx/ql4_init.c >--- 5.01.02-d2/drivers/scsi/qla4xxx/ql4_init.c 2007-12-03 13:29:31.000000000 -0800 >+++ 5.01.02-d3/drivers/scsi/qla4xxx/ql4_init.c 2007-12-10 15:16:03.000000000 -0800 >@@ -666,6 +666,7 @@ qla4xxx_free_ddb(scsi_qla_host_t *ha, dd > > /* Free memory for device entry */ > kfree(ddb_entry); >+ ddb_entry = NULL; > LEAVE("qla4xxx_free_ddb"); > } > >@@ -1663,7 +1664,6 @@ qla4xxx_update_ddb_entry(scsi_qla_host_t > fw_ddb_entry, fw_ddb_entry_dma); > > LEAVE(__func__); >- > return(status); > } > >@@ -1821,11 +1821,11 @@ qla4xxx_build_ddb_list(scsi_qla_host_t * > status = QLA_ERROR; > goto exit_build_ddb_list; > } >+ > /* Fill in the device structure */ > if (qla4xxx_update_ddb_entry(ha, ddb_entry, > fw_ddb_index) == QLA_ERROR) { >- ha->fw_ddb_index_map[fw_ddb_index] = >- (ddb_entry_t *) INVALID_ENTRY; >+ qla4xxx_free_ddb(ha, ddb_entry); > > DEBUG2(printk("scsi%d: %s: " > "update_ddb_entry failed for fw_ddb_index" >@@ -1982,13 +1982,6 @@ qla4xxx_devices_ready(scsi_qla_host_t *h > return(QLA_ERROR); > } > >- #if 0 >- if (ddb_entry->dev_scan_wait_to_complete_relogin != 0 && >- time_after_eq(jiffies, ddb_entry->dev_scan_wait_to_complete_relogin)) { >- /* do nothing */ >- } >- #endif >- > if (ddb_entry->dev_scan_wait_to_start_relogin != 0 && > time_after_eq(jiffies, ddb_entry->dev_scan_wait_to_start_relogin)) { > ddb_entry->dev_scan_wait_to_start_relogin = 0; >@@ -2076,17 +2069,16 @@ qla4xxx_initialize_ddb_list(scsi_qla_hos > > > /* >- * First perform device discovery for active >- * fw ddb indexes and build >- * ddb list. >- */ >- /* Retry for cases of fw_ddb_index mismatch and in cases of >- * memory alloc failure. >+ * First perform device discovery for active fw ddb indexes >+ * and build the ddb list. Initiate relogins for non-active ddbs. >+ * >+ * Retry initializing adapter for cases of fw_ddb_index mismatch >+ * and in cases of memory alloc failure. > */ > if ((status = qla4xxx_build_ddb_list(ha)) == QLA_ERROR) > return(status); > >- /* Wait for an AEN */ >+ /* Wait for non-active targets to become active */ > qla4xxx_devices_ready(ha); > > >@@ -2843,8 +2835,7 @@ qla4xxx_add_device_dynamically(scsi_qla_ > "%d\n", ha->host_no, fw_ddb_index)); > } else if (qla4xxx_update_ddb_entry(ha, ddb_entry, fw_ddb_index) == > QLA_ERROR) { >- ha->fw_ddb_index_map[fw_ddb_index] = >- (ddb_entry_t *) INVALID_ENTRY; >+ qla4xxx_free_ddb(ha, ddb_entry); > QL4PRINT(QLP2, printk(KERN_WARNING > "scsi%d: failed to add new device at index [%d]\n" > "Unable to retrieve fw ddb entry\n", ha->host_no, >@@ -2906,7 +2897,6 @@ qla4xxx_process_ddb_changed(scsi_qla_hos > qla4xxx_add_device_dynamically(ha, fw_ddb_index); > } > LEAVE(__func__); >- > return(QLA_SUCCESS); > } > >diff -Naurp 5.01.02-d2/drivers/scsi/qla4xxx/ql4_isr.c 5.01.02-d3/drivers/scsi/qla4xxx/ql4_isr.c >--- 5.01.02-d2/drivers/scsi/qla4xxx/ql4_isr.c 2007-10-11 13:35:45.000000000 -0700 >+++ 5.01.02-d3/drivers/scsi/qla4xxx/ql4_isr.c 2007-12-14 14:04:47.000000000 -0800 >@@ -321,6 +321,7 @@ qla4xxx_status_entry(scsi_qla_host_t *ha > switch (sts_entry->completionStatus) { > case SCS_COMPLETE: > case SCS_QUEUE_FULL: >+ > if (scsi_status == 0) { > cmd->result = DID_OK << 16; > break; >@@ -465,7 +466,7 @@ qla4xxx_status_entry(scsi_qla_host_t *ha > break; > } > >- cmd->resid = residual; >+ cmd->resid = residual; > > /* > * If there is scsi_status, it takes precedense over >@@ -1448,55 +1449,69 @@ qla4xxx_process_aen(scsi_qla_host_t *ha, > > switch (mbox_sts[0]) { > case MBOX_ASTS_DATABASE_CHANGED: >- if (process_aen == FLUSH_DDB_CHANGED_AENS) { >+ switch (process_aen) { >+ case FLUSH_DDB_CHANGED_AENS: > DEBUG2(printk( > "scsi%d: AEN[%d] %04x, index [%d] " > "state=%04x FLUSHED!\n", ha->host_no, > ha->aen_out, mbox_sts[0], mbox_sts[2], > mbox_sts[3])); > break; >- /* Process all the outstanding AEN's >- * to make sure that we dont have any >- * stale entries in the queue. >- */ >- } >- else if (process_aen == RELOGIN_DDB_CHANGED_AENS) { >- /* for use during init time, we only want to >- * relogin non-active ddbs */ >+ case RELOGIN_DDB_CHANGED_AENS: >+ { >+ /* For use during init time, we want to relogin >+ * non-active ddbs and update device state of >+ * ddbs that are now active */ > ddb_entry_t *ddb_entry; >+ uint32_t fw_ddb_device_state = mbox_sts[3]; > > ddb_entry = qla4xxx_lookup_ddb_by_fw_index(ha, mbox_sts[2]); > if (ddb_entry) { >- ddb_entry->dev_scan_wait_to_complete_relogin = 0; >- ddb_entry->dev_scan_wait_to_start_relogin = >- jiffies + ((ddb_entry->default_time2wait + 4) * HZ); >- >- QL4PRINT(QLP3, printk( >- "scsi%d: index [%d] initate relogin " >- "after %d seconds\n", ha->host_no, >- ddb_entry->fw_ddb_index, >- ddb_entry->default_time2wait+4)); >+ ddb_entry->fw_ddb_device_state = fw_ddb_device_state; >+ >+ if (fw_ddb_device_state == DDB_DS_SESSION_ACTIVE) { >+ /* Updated device state will now >+ * allow a SCSI target to get >+ * mapped to this ddb */ >+ QL4PRINT(QLP7, printk( >+ "scsi%d: index [%d] now active\n", >+ ha->host_no, >+ ddb_entry->fw_ddb_index)); >+ } else if ((fw_ddb_device_state == DDB_DS_SESSION_FAILED) || >+ (fw_ddb_device_state == DDB_DS_NO_CONNECTION_ACTIVE)){ >+ ddb_entry->dev_scan_wait_to_complete_relogin = 0; >+ ddb_entry->dev_scan_wait_to_start_relogin = >+ jiffies + ((ddb_entry->default_time2wait + 4) * HZ); >+ >+ QL4PRINT(QLP7, printk( >+ "scsi%d: index [%d] initate relogin " >+ "after %d seconds\n", ha->host_no, >+ ddb_entry->fw_ddb_index, >+ ddb_entry->default_time2wait+4)); >+ } > } > break; > } >- >- if (mbox_sts[1] == 0) { /* Global DB change. */ >- QL4PRINT(QLP2|QLP7, printk("scsi%d: %s: " >- "global database changed aen\n", >- ha->host_no, __func__)); >- qla4xxx_reinitialize_ddb_list(ha); >- } else if (mbox_sts[1] == 1) { /* Specific device. */ >- qla4xxx_process_ddb_changed(ha, >- mbox_sts[2], >- mbox_sts[3]); >- } else { >- QL4PRINT(QLP2|QLP7, printk("scsi%d: %s: " >- "invalid database changed aen modifier, " >- "mbox_sts[1]=%04x\n", ha->host_no, >- __func__, mbox_sts[1])); >- } >- break; >- } >+ case PROCESS_ALL_AENS: >+ default: >+ if (mbox_sts[1] == 0) { /* Global DB change. */ >+ QL4PRINT(QLP2|QLP7, printk("scsi%d: %s: " >+ "global database changed aen\n", >+ ha->host_no, __func__)); >+ qla4xxx_reinitialize_ddb_list(ha); >+ } else if (mbox_sts[1] == 1) { /* Specific device. */ >+ qla4xxx_process_ddb_changed(ha, >+ mbox_sts[2], >+ mbox_sts[3]); >+ } else { >+ QL4PRINT(QLP2|QLP7, printk("scsi%d: %s: " >+ "invalid database changed aen modifier, " >+ "mbox_sts[1]=%04x\n", ha->host_no, >+ __func__, mbox_sts[1])); >+ } >+ break; >+ } /* switch process_aen */ >+ } /* switch mbox_sts[0] */ > spin_lock_irqsave(&ha->hardware_lock, flags); > } > spin_unlock_irqrestore(&ha->hardware_lock, flags); >diff -Naurp 5.01.02-d2/drivers/scsi/qla4xxx/ql4_version.h 5.01.02-d3/drivers/scsi/qla4xxx/ql4_version.h >--- 5.01.02-d2/drivers/scsi/qla4xxx/ql4_version.h 2007-12-03 13:24:06.000000000 -0800 >+++ 5.01.02-d3/drivers/scsi/qla4xxx/ql4_version.h 2007-12-10 15:18:15.000000000 -0800 >@@ -5,9 +5,9 @@ > * See LICENSE.qla4xxx for copyright and licensing details. > */ > >-#define QLA4XXX_DRIVER_VERSION "5.01.02-d2" >+#define QLA4XXX_DRIVER_VERSION "5.01.02-d3" > > #define QL4_DRIVER_MAJOR_VER 5 > #define QL4_DRIVER_MINOR_VER 1 > #define QL4_DRIVER_PATCH_VER 2 >-#define QL4_DRIVER_BETA_VER 2 >+#define QL4_DRIVER_BETA_VER 3
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 425721
: 289631