qla2xxx: update qla2xxx driver to 8.01.02-k.
Subsystems (4)
cover qla2xxx: update qla2xxx driver to 8.01.02-k.
James,
Here's a set of patches which add a handful of features to the qla2xxx driver. Please queue for post-2.6.14 inclusion.
With the exception of the rather large firmware image updates (direct pointer to bzip'd patch listed -- noted below with '*'), subsequent messages will contain inlined patches.
Summary of patches:
Correct issue where fcport is prematurely marked DEAD. Add support to dynamically enable/disable ZIO. Collapse ISP2xxx queuecommand implementations. Update license.
Add support for embedded ISP24xx firmware.
* Resync with latest released firmware -- 4.00.12. Add hotplug firmware-load support for all ISP types.
* Resync with latest released ISP23xx/63xx firmware -- 3.03.18. Use midlayer's int_to_scsilun() function.
Correct fw-loader module-use referencing.
Add an 'Issue LIP' device attribute.
Update version number to 8.01.02-k.
All patches can be found at the following URL:
ftp://ftp.qlogic.com/outgoing/linux/patches/8.x/8.01.02k/
Regards,
Andrew Vasquez
QLogic Corporation
Signature · 1 line
Andrew Vasquez
PATCH 1/12 qla2xxx: Correct issue where fcport is prematurely marked DEAD.
The non-handled failure cases of the Fabric Login mailbox command handling logic would incorrectly mark the fcport as dead and not allow the standard port-down-retry-count logic to manage the transition.
---
drivers/scsi/qla2xxx/qla_init.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
applies-to: b92e43b7cbae6e7128ca6d7831d06e63989f2a31 67f7dd397a973725712a91d3382eba8d8c5bb1da
drivers/scsi/qla2xxx/qla_init.c +1 -1
@@ -2858,7 +2858,7 @@ qla2x00_fabric_login(scsi_qla_host_t *ha fcport->d_id.b.domain, fcport->d_id.b.area, fcport->d_id.b.al_pa); fcport->loop_id =FC_NO_LOOP_ID ; -atomic_set (&fcport->state,FCS_DEVICE_DEAD ); + fcport->login_retry =0 ; rval =3 ;break ;
---
0.99.8.GIT
Signature · 1 line
Andrew Vasquez
PATCH 2/12 qla2xxx: Add support to dynamically enable/disable ZIO.
In reply to Andrew VasquezISP23xx and ISP24xx chips have support for an adaptive method of posting SCSI command completions for multiple SCSI commands during a single system interrupt.
SCSI commands are placed on the system response queue without interrupting the host until 1) a delay timer expires; or 2) a SCSI command completes with an error.
As long as the host software (qla2xxx) services the response queue for completions (this polling is done during queuecommand()) within the 'delay timer' period, the firmware will not generate system interrupt.
---
drivers/scsi/qla2xxx/qla_attr.c | 83 +++++++++++++++++++++++++++++++++++++++ drivers/scsi/qla2xxx/qla_def.h | 8 ++++ drivers/scsi/qla2xxx/qla_gbl.h | 3 - drivers/scsi/qla2xxx/qla_init.c | 53 +++++++++++++++++++------ drivers/scsi/qla2xxx/qla_iocb.c | 10 +++++ drivers/scsi/qla2xxx/qla_isr.c | 7 ++- drivers/scsi/qla2xxx/qla_os.c | 23 ----------- 7 files changed, 146 insertions(+), 41 deletions(-)
applies-to: 3ba1c677ace2a992c97be174309e1d4ac058d506 1bff7727d9a487fbb3a8370f58c519f5abb17f99
drivers/scsi/qla2xxx/qla_attr.c +83 -0
@@ -319,6 +319,83 @@ qla2x00_state_show(struct class_device *return len; } +static ssize_t +qla2x00_zio_show (struct class_device *cdev,char *buf) +{ +scsi_qla_host_t *ha =to_qla_host (class_to_shost (cdev)); +int len =0 ; + +switch (ha->zio_mode) { +case QLA_ZIO_MODE_5 : + len +=snprintf (buf + len,PAGE_SIZE -len,"Mode 5\n" ); +break ; +case QLA_ZIO_MODE_6 : + len +=snprintf (buf + len,PAGE_SIZE -len,"Mode 6\n" ); +break ; +case QLA_ZIO_DISABLED : + len +=snprintf (buf + len,PAGE_SIZE -len,"Disabled\n" ); +break ; + } +return len; +} + +static ssize_t +qla2x00_zio_store (struct class_device *cdev,const char *buf,size_t count) +{ +scsi_qla_host_t *ha =to_qla_host (class_to_shost (cdev)); +int val =0 ; +uint16_t zio_mode; + +if (sscanf (buf,"%d" , &val) !=1 ) +return -EINVAL ; + +switch (val) { +case 1 : + zio_mode =QLA_ZIO_MODE_5 ; +break ; +case 2 : + zio_mode =QLA_ZIO_MODE_6 ; +break ; +default : + zio_mode =QLA_ZIO_DISABLED ; +break ; + } + +/* Update per-hba values and queue a reset. */ +if (zio_mode !=QLA_ZIO_DISABLED || ha->zio_mode !=QLA_ZIO_DISABLED ) { + ha->zio_mode = zio_mode; +set_bit (ISP_ABORT_NEEDED , &ha->dpc_flags); + } +return strlen (buf); +} + +static ssize_t +qla2x00_zio_timer_show (struct class_device *cdev,char *buf) +{ +scsi_qla_host_t *ha =to_qla_host (class_to_shost (cdev)); + +return snprintf (buf,PAGE_SIZE ,"%d us\n" , ha->zio_timer *100 ); +} + +static ssize_t +qla2x00_zio_timer_store (struct class_device *cdev,const char *buf, +size_t count) +{ +scsi_qla_host_t *ha =to_qla_host (class_to_shost (cdev)); +int val =0 ; +uint16_t zio_timer; + +if (sscanf (buf,"%d" , &val) !=1 ) +return -EINVAL ; +if (val >25500 || val <100 ) +return -ERANGE ; + + zio_timer = (uint16_t )(val /100 ); + ha->zio_timer = zio_timer; + +return strlen (buf); +} + static CLASS_DEVICE_ATTR(driver_version, S_IRUGO, qla2x00_drvr_version_show, NULL); static CLASS_DEVICE_ATTR(fw_version, S_IRUGO, qla2x00_fw_version_show, NULL);
@@ -329,6 +406,10 @@ static CLASS_DEVICE_ATTR(model_name, S_I static CLASS_DEVICE_ATTR(model_desc, S_IRUGO, qla2x00_model_desc_show, NULL); static CLASS_DEVICE_ATTR(pci_info, S_IRUGO, qla2x00_pci_info_show, NULL); static CLASS_DEVICE_ATTR(state, S_IRUGO, qla2x00_state_show, NULL); +static CLASS_DEVICE_ATTR(zio, S_IRUGO | S_IWUSR, qla2x00_zio_show, + qla2x00_zio_store); +static CLASS_DEVICE_ATTR(zio_timer, S_IRUGO | S_IWUSR, qla2x00_zio_timer_show, + qla2x00_zio_timer_store);struct class_device_attribute *qla2x00_host_attrs[] = { &class_device_attr_driver_version,
@@ -340,6 +421,8 @@ struct class_device_attribute *qla2x00_h &class_device_attr_model_desc, &class_device_attr_pci_info, &class_device_attr_state, + &class_device_attr_zio, + &class_device_attr_zio_timer, NULL, };
drivers/scsi/qla2xxx/qla_def.h +8 -0
@@ -823,6 +823,11 @@ typedef struct {#define PD_STATE_WAIT_PORT_LOGOUT_ACK 11 +#define QLA_ZIO_MODE_5 (BIT_2 | BIT_0) +#define QLA_ZIO_MODE_6 (BIT_2 | BIT_1) +#define QLA_ZIO_DISABLED 0 +#define QLA_ZIO_DEFAULT_TIMER 2 +/* * ISP Initialization Control Block. * Little endian except where noted.
@@ -2470,6 +2475,9 @@ typedef struct scsi_qla_host {/* Needed for BEACON */ uint16_t beacon_blink_led;uint16_t beacon_green_on; + +uint16_t zio_mode; +uint16_t zio_timer; } scsi_qla_host_t;
drivers/scsi/qla2xxx/qla_gbl.h +1 -2
@@ -76,8 +76,6 @@ extern char qla2x00_version_str[];extern int ql2xlogintimeout;extern int qlport_down_retry;extern int ql2xplogiabsentdevice; -extern int ql2xenablezio; -extern int ql2xintrdelaytimer;extern int ql2xloginretrycount;extern int ql2xfdmienable;
@@ -223,6 +221,7 @@ extern irqreturn_t qla2100_intr_handler(extern irqreturn_t qla2300_intr_handler (int ,void *,struct pt_regs *);extern irqreturn_t qla24xx_intr_handler (int ,void *,struct pt_regs *);extern void qla2x00_process_response_queue (struct scsi_qla_host *); +extern void qla24xx_process_response_queue (struct scsi_qla_host *);/* * Global Function Prototypes in qla_sup.c source file.
drivers/scsi/qla2xxx/qla_init.c +40 -13
75 lines not on this page · raw message
drivers/scsi/qla2xxx/qla_iocb.c +10 -0
@@ -440,6 +440,11 @@ qla2x00_start_scsi(srb_t *sp)WRT_REG_WORD (ISP_REQ_Q_IN (ha, reg), ha->req_ring_index);RD_REG_WORD_RELAXED (ISP_REQ_Q_IN (ha, reg));/* PCI Posting. */ +/* Manage unprocessed RIO/ZIO commands in response queue. */ +if (ha->flags.process_response_queue && + ha->response_ring_ptr->signature !=RESPONSE_PROCESSED ) +qla2x00_process_response_queue (ha); +spin_unlock_irqrestore (&ha->hardware_lock, flags);return (QLA_SUCCESS );
@@ -877,6 +882,11 @@ qla24xx_start_scsi(srb_t *sp)WRT_REG_DWORD (®->req_q_in, ha->req_ring_index);RD_REG_DWORD_RELAXED (®->req_q_in);/* PCI Posting. */ +/* Manage unprocessed RIO/ZIO commands in response queue. */ +if (ha->flags.process_response_queue && + ha->response_ring_ptr->signature !=RESPONSE_PROCESSED ) +qla24xx_process_response_queue (ha); +spin_unlock_irqrestore (&ha->hardware_lock, flags);return QLA_SUCCESS ;
drivers/scsi/qla2xxx/qla_isr.c +4 -3
@@ -21,13 +21,11 @@static void qla2x00_mbx_completion (scsi_qla_host_t *,uint16_t );static void qla2x00_async_event (scsi_qla_host_t *,uint16_t *);static void qla2x00_process_completed_request (struct scsi_qla_host *,uint32_t ); -void qla2x00_process_response_queue (struct scsi_qla_host *);static void qla2x00_status_entry (scsi_qla_host_t *,void *);static void qla2x00_status_cont_entry (scsi_qla_host_t *,sts_cont_entry_t *);static void qla2x00_error_entry (scsi_qla_host_t *,sts_entry_t *);static void qla2x00_ms_entry (scsi_qla_host_t *,ms_iocb_entry_t *); -void qla24xx_process_response_queue (scsi_qla_host_t *);static void qla24xx_ms_entry (scsi_qla_host_t *,struct ct_entry_24xx *);/**
@@ -651,7 +649,10 @@ qla2x00_async_event(scsi_qla_host_t *ha,"scsi(%ld): [R|Z]IO update completion.\n" , ha->host_no)); -qla2x00_process_response_queue (ha); +if (IS_QLA24XX (ha) ||IS_QLA25XX (ha)) +qla24xx_process_response_queue (ha); +else +qla2x00_process_response_queue (ha);break ;case MBA_DISCARD_RND_FRAME :
drivers/scsi/qla2xxx/qla_os.c +0 -23
@@ -61,19 +61,6 @@ MODULE_PARM_DESC(ql2xplogiabsentdevice,"a Fabric scan. This is needed for several broken switches." "Default is 0 - no PLOGI. 1 - perfom PLOGI."); -int ql2xenablezio =0 ; -module_param (ql2xenablezio, int,S_IRUGO |S_IRUSR ); -MODULE_PARM_DESC (ql2xenablezio, -"Option to enable ZIO:If 1 then enable it otherwise" -" use the default set in the NVRAM." -" Default is 0 : disabled" ); - -int ql2xintrdelaytimer =10 ; -module_param (ql2xintrdelaytimer, int,S_IRUGO |S_IRUSR ); -MODULE_PARM_DESC (ql2xintrdelaytimer, -"ZIO: Waiting time for Firmware before it generates an " -"interrupt to the host to notify completion of request." ); -int ql2xloginretrycount =0 ;module_param (ql2xloginretrycount, int,S_IRUGO |S_IRUSR ); MODULE_PARM_DESC(ql2xloginretrycount,
@@ -400,16 +387,6 @@ qla2x00_queuecommand(struct scsi_cmnd *cif (rval !=QLA_SUCCESS ) goto qc_host_busy_free_sp; -/* Manage unprocessed RIO/ZIO commands in response queue. */ -if (ha->flags.online && ha->flags.process_response_queue && - ha->response_ring_ptr->signature !=RESPONSE_PROCESSED ) { -unsigned long flags; - -spin_lock_irqsave (&ha->hardware_lock, flags); -qla2x00_process_response_queue (ha); -spin_unlock_irqrestore (&ha->hardware_lock, flags); - } -spin_lock_irq (ha->host->host_lock);return 0 ;
---
0.99.8.GIT
Signature · 1 line
Andrew Vasquez
PATCH 3/12 qla2xxx: Collapse ISP2xxx queuecommand implementations.
In reply to Andrew Vasquez---
drivers/scsi/qla2xxx/qla_os.c | 144 ++++++++++++----------------------------- 1 files changed, 41 insertions(+), 103 deletions(-)
applies-to: 78d6d6feb3837ff269b56e589bfba93fd55f9d81 6575ef7122e7f3ce8fc8c90412b2ad4dba65e03c
drivers/scsi/qla2xxx/qla_os.c +41 -103
@@ -355,111 +355,49 @@ qla2x00_get_new_sp(scsi_qla_host_t *ha,return sp; } -static int -qla2x00_queuecommand (struct scsi_cmnd *cmd,void (*done)(struct scsi_cmnd *)) -{ -scsi_qla_host_t *ha =to_qla_host (cmd->device->host); -fc_port_t *fcport = (struct fc_port *) cmd->device->hostdata; -srb_t *sp; -int rval; - -if (!fcport) { - cmd->result =DID_NO_CONNECT <<16 ; - goto qc_fail_command; - } - -if (atomic_read (&fcport->state) !=FCS_ONLINE ) { -if (atomic_read (&fcport->state) ==FCS_DEVICE_DEAD || -atomic_read (&ha->loop_state) ==LOOP_DEAD ) { - cmd->result =DID_NO_CONNECT <<16 ; - goto qc_fail_command; - } - goto qc_host_busy; - } - -spin_unlock_irq (ha->host->host_lock); - - sp =qla2x00_get_new_sp (ha, fcport, cmd, done); -if (!sp) - goto qc_host_busy_lock; - - rval =qla2x00_start_scsi (sp); -if (rval !=QLA_SUCCESS ) - goto qc_host_busy_free_sp; - -spin_lock_irq (ha->host->host_lock); - -return 0 ; - -qc_host_busy_free_sp: -qla2x00_sp_free_dma (ha, sp); -mempool_free (sp, ha->srb_mempool); - -qc_host_busy_lock: -spin_lock_irq (ha->host->host_lock); - -qc_host_busy: -return SCSI_MLQUEUE_HOST_BUSY ; - -qc_fail_command: -done (cmd); - -return 0 ; -} - - -static int -qla24xx_queuecommand (struct scsi_cmnd *cmd,void (*done)(struct scsi_cmnd *)) -{ -scsi_qla_host_t *ha =to_qla_host (cmd->device->host); -fc_port_t *fcport = (struct fc_port *) cmd->device->hostdata; -srb_t *sp; -int rval; - -if (!fcport) { - cmd->result =DID_NO_CONNECT <<16 ; - goto qc24_fail_command; - } - -if (atomic_read (&fcport->state) !=FCS_ONLINE ) { -if (atomic_read (&fcport->state) ==FCS_DEVICE_DEAD || -atomic_read (&ha->loop_state) ==LOOP_DEAD ) { - cmd->result =DID_NO_CONNECT <<16 ; - goto qc24_fail_command; - } - goto qc24_host_busy; - } - -spin_unlock_irq (ha->host->host_lock); - - sp =qla2x00_get_new_sp (ha, fcport, cmd, done); -if (!sp) - goto qc24_host_busy_lock; - - rval =qla24xx_start_scsi (sp); -if (rval !=QLA_SUCCESS ) - goto qc24_host_busy_free_sp; - -spin_lock_irq (ha->host->host_lock); - -return 0 ; - -qc24_host_busy_free_sp: -qla2x00_sp_free_dma (ha, sp); -mempool_free (sp, ha->srb_mempool); - -qc24_host_busy_lock: -spin_lock_irq (ha->host->host_lock); - -qc24_host_busy: -return SCSI_MLQUEUE_HOST_BUSY ; - -qc24_fail_command: -done (cmd); - -return 0 ; +#define QLA_QUEUE_COMMAND (isp) \ +static int \ +isp##_queuecommand(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *)) \ +{ \ + scsi_qla_host_t *ha = to_qla_host(cmd->device->host); \ + fc_port_t *fcport = (struct fc_port *) cmd->device->hostdata; \ + srb_t *sp; \ + int rval; \ + if (!fcport) { \ + cmd->result = DID_NO_CONNECT << 16; \ + goto fail_command; \ + } \ + if (atomic_read(&fcport->state) != FCS_ONLINE) { \ + if (atomic_read(&fcport->state) == FCS_DEVICE_DEAD || \ + atomic_read(&ha->loop_state) == LOOP_DEAD) { \ + cmd->result = DID_NO_CONNECT << 16; \ + goto fail_command; \ + } \ + goto host_busy; \ + } \ + spin_unlock_irq(ha->host->host_lock); \ + sp = qla2x00_get_new_sp(ha, fcport, cmd, done); \ + if (!sp) \ + goto host_busy_lock; \ + rval = isp##_start_scsi(sp); \ + if (rval != QLA_SUCCESS) \ + goto host_busy_free_sp; \ + spin_lock_irq(ha->host->host_lock); \ + return 0; \ +host_busy_free_sp: \ + qla2x00_sp_free_dma(ha, sp); \ + mempool_free(sp, ha->srb_mempool); \ +host_busy_lock: \ + spin_lock_irq(ha->host->host_lock); \ +host_busy: \ + return SCSI_MLQUEUE_HOST_BUSY; \ +fail_command: \ + done(cmd); \ + return 0; \ } +QLA_QUEUE_COMMAND (qla2x00); +QLA_QUEUE_COMMAND (qla24xx);/* * qla2x00_eh_wait_on_command
---
0.99.8.GIT
Signature · 1 line
Andrew Vasquez
Re: [PATCH 3/12] qla2xxx: Collapse ISP2xxx queuecommand implementations.
Quoted 1 line · Andrew Vasquez
Signed-off-by Andrew Vasquez <[email protected]>
I don't like this at all. Even the first variant with the indirect function call seems better than this.
drivers/scsi/qla2xxx/qla_os.c qla2x00_get_new_sp(scsi_qla_host_t *ha, · line 369
Quoted 12 lines
drivers/scsi/qla2xxx/qla_os.c +12
-0+#define QLA_QUEUE_COMMAND (isp) \ +static int \ +isp##_queuecommand(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *)) \ +{ \ + scsi_qla_host_t *ha = to_qla_host(cmd->device->host); \ + fc_port_t *fcport = (struct fc_port *) cmd->device->hostdata; \ + srb_t *sp; \ + int rval; \ + if (!fcport) { \ + cmd->result = DID_NO_CONNECT << 16; \ + goto fail_command; \ + } \
While we're at it, I don't think cmd->device->hostdata could ever be NULL.
Re: [PATCH 3/12] qla2xxx: Collapse ISP2xxx queuecommand implementations.
Quoted 5 lines · Christoph Hellwig
Quoted 1 line · Andrew Vasquez
Signed-off-by Andrew Vasquez <[email protected]>I don't like this at all. Even the first variant with the indirect function call seems better than this.
The indirect function call is still there -- the resultant code hasn't changed with this patch. This patch simply insures that common queueing code gets updated in one spot rather than two (qla2x00_queuecommand() qla24xx_queuecommand()). The *only* difference between the two was the call to [qla2x00|qla24xx]_start_scsi(). So, beyond style, are there any other objections.
Quoted 7 lines
Quoted 7 lines
drivers/scsi/qla2xxx/qla_os.c +7
-0+#define QLA_QUEUE_COMMAND (isp) \ +static int \ +isp##_queuecommand(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *)) \ +{ \ + scsi_qla_host_t *ha = to_qla_host(cmd->device->host); \ + fc_port_t *fcport = (struct fc_port *) cmd->device->hostdata; \ + srb_t *sp; \
Quoted 8 lines
drivers/scsi/qla2xxx/qla_os.c qla2x00_get_new_sp(scsi_qla_host_t *ha, · line 369
Quoted 5 lines
drivers/scsi/qla2xxx/qla_os.c +5
-0+int rval; \ +if (!fcport) { \ + cmd->result =DID_NO_CONNECT <<16 ; \ + goto fail_command; \ + } \While we're at it, I don't think
cmd->device->hostdatacould ever be NULL.
Yes, with the target_parent checks in scsi_alloc_target():
if (shost->transportt->target_parent) {
spin_lock_irqsave(shost->host_lock, flags);
parent = shost->transportt->target_parent(shost, channel, id);
spin_unlock_irqrestore(shost->host_lock, flags);
if (!parent)
return NULL;
}you are correct. Yet another reason to collapse both -- change the code in one place.
Signature · 1 line
Andrew Vasquez
PATCH 4/12 qla2xxx: Update license.
In reply to Andrew Vasquez---
Documentation/scsi/LICENSE.qla2xxx | 59 +++++++++++++++++++++++++++++++++++ drivers/scsi/qla2xxx/ql2100.c | 9 ++--- drivers/scsi/qla2xxx/ql2100_fw.c | 22 +++---------- drivers/scsi/qla2xxx/ql2200.c | 9 ++--- drivers/scsi/qla2xxx/ql2200_fw.c | 22 +++---------- drivers/scsi/qla2xxx/ql2300.c | 9 ++--- drivers/scsi/qla2xxx/ql2300_fw.c | 22 +++---------- drivers/scsi/qla2xxx/ql2322.c | 7 ++-- drivers/scsi/qla2xxx/ql2322_fw.c | 22 +++---------- drivers/scsi/qla2xxx/ql6312.c | 7 ++-- drivers/scsi/qla2xxx/ql6312_fw.c | 22 +++---------- drivers/scsi/qla2xxx/qla_attr.c | 18 ++--------- drivers/scsi/qla2xxx/qla_dbg.c | 18 ++--------- drivers/scsi/qla2xxx/qla_dbg.h | 23 +++----------- drivers/scsi/qla2xxx/qla_def.h | 25 ++++----------- drivers/scsi/qla2xxx/qla_fw.h | 26 ++++----------- drivers/scsi/qla2xxx/qla_gbl.h | 28 ++++------------- drivers/scsi/qla2xxx/qla_gs.c | 18 ++--------- drivers/scsi/qla2xxx/qla_init.c | 18 ++--------- drivers/scsi/qla2xxx/qla_inline.h | 19 ++--------- drivers/scsi/qla2xxx/qla_iocb.c | 23 +++----------- drivers/scsi/qla2xxx/qla_isr.c | 18 ++--------- drivers/scsi/qla2xxx/qla_mbx.c | 18 ++--------- drivers/scsi/qla2xxx/qla_os.c | 18 ++--------- drivers/scsi/qla2xxx/qla_rscn.c | 18 ++--------- drivers/scsi/qla2xxx/qla_settings.h | 22 +++---------- drivers/scsi/qla2xxx/qla_sup.c | 23 +++----------- drivers/scsi/qla2xxx/qla_version.h | 22 +++---------- 28 files changed, 172 insertions(+), 393 deletions(-) create mode 100644 Documentation/scsi/LICENSE.qla2xxx
applies-to: 2a85611f196edcf230196ae7e73d5783255f2be1 f31d3537cd77b14ded8c7eea8c6a1d0ca6a29f3e
Documentation/scsi/LICENSE.qla2xxx new file +59 -0
@@ -0,0 +1,59 @@ +Copyright (c) 2003-2005 QLogic Corporation +QLogic Linux Fibre Channel HBA Driver + +This program includes a device driver for Linux 2.6 that may be +distributed with QLogic hardware specific firmware binary file. +You may modify and redistribute the device driver code under the +GNU General Public License as published by the Free Software +Foundation (version 2 or a later version) and/or under the +following terms, as applicable: + + 1. Redistribution of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + + 2. Redistribution in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + + 3. The name of QLogic Corporation may not be used to + endorse or promote products derived from this software + without specific prior written permission. + +You may redistribute the hardware specific firmware binary file +under the following terms: + + 1. Redistribution of source code (only if applicable), + must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistribution in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + + 3. The name of QLogic Corporation may not be used to + endorse or promote products derived from this software + without specific prior written permission + +REGARDLESS OF WHAT LICENSING MECHANISM IS USED OR APPLICABLE, +THIS PROGRAM IS PROVIDED BY QLOGIC CORPORATION "AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +USER ACKNOWLEDGES AND AGREES THAT USE OF THIS PROGRAM WILL NOT +CREATE OR GIVE GROUNDS FOR A LICENSE BY IMPLICATION, ESTOPPEL, OR +OTHERWISE IN ANY INTELLECTUAL PROPERTY RIGHTS (PATENT, COPYRIGHT, +TRADE SECRET, MASK WORK, OR OTHER PROPRIETARY RIGHT) EMBODIED IN +ANY OTHER QLOGIC HARDWARE OR SOFTWARE EITHER SOLELY OR IN +COMBINATION WITH THIS PROGRAM.
drivers/scsi/qla2xxx/ql2100.c +4 -5
@@ -1,11 +1,10 @@/* -* QLogic ISP2100 device driver for Linux 2.6.x -* Copyright (C) 2003 Christoph Hellwig. -* Copyright (C) 2003-2005 QLogic Corporation (www.qlogic.com) +* QLogic Fibre Channel HBA Driver +* Copyright (C) 2003 Christoph Hellwig. +* Copyright (c) 2003-2005 QLogic Corporation * -* Released under GPL v2. +* See LICENSE.qla2xxx for copyright and licensing details. */ -#include <linux/init.h> #include <linux/module.h> #include <linux/pci.h>
drivers/scsi/qla2xxx/ql2100_fw.c +5 -17
@@ -1,21 +1,9 @@ -/****************************************************************************** -* QLOGIC LINUX SOFTWARE -* -* QLogic ISP2x00 device driver for Linux 2.6.x -* Copyright (C) 2003-2005 QLogic Corporation -* (www.qlogic.com) -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2, or (at your option) any -* later version. -* -* This program is distributed in the hope that it will be useful, but -* WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* General Public License for more details. +/* +* QLogic Fibre Channel HBA Driver +* Copyright (c) 2003-2005 QLogic Corporation * -*************************************************************************/ +* See LICENSE.qla2xxx for copyright and licensing details. +*/ /* * Firmware Version 1.19.25 (13:12 Dec 10, 2003)
drivers/scsi/qla2xxx/ql2200.c +4 -5
@@ -1,11 +1,10 @@/* -* QLogic ISP2200 device driver for Linux 2.6.x -* Copyright (C) 2003 Christoph Hellwig. -* Copyright (C) 2003-2005 QLogic Corporation (www.qlogic.com) +* QLogic Fibre Channel HBA Driver +* Copyright (C) 2003 Christoph Hellwig. +* Copyright (c) 2003-2005 QLogic Corporation * -* Released under GPL v2. +* See LICENSE.qla2xxx for copyright and licensing details. */ -#include <linux/init.h> #include <linux/module.h> #include <linux/pci.h>
drivers/scsi/qla2xxx/ql2200_fw.c +5 -17
@@ -1,21 +1,9 @@ -/****************************************************************************** -* QLOGIC LINUX SOFTWARE -* -* QLogic ISP2x00 device driver for Linux 2.6.x -* Copyright (C) 2003-2005 QLogic Corporation -* (www.qlogic.com) -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2, or (at your option) any -* later version. -* -* This program is distributed in the hope that it will be useful, but -* WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* General Public License for more details. +/* +* QLogic Fibre Channel HBA Driver +* Copyright (c) 2003-2005 QLogic Corporation * -*************************************************************************/ +* See LICENSE.qla2xxx for copyright and licensing details. +*/ /* * Firmware Version 2.02.08 (17:06 Mar 22, 2005)
drivers/scsi/qla2xxx/ql2300.c +4 -5
@@ -1,11 +1,10 @@/* -* QLogic ISP2300 device driver for Linux 2.6.x -* Copyright (C) 2003 Christoph Hellwig. -* Copyright (C) 2003-2005 QLogic Corporation (www.qlogic.com) +* QLogic Fibre Channel HBA Driver +* Copyright (C) 2003 Christoph Hellwig. +* Copyright (c) 2003-2005 QLogic Corporation * -* Released under GPL v2. +* See LICENSE.qla2xxx for copyright and licensing details. */ -#include <linux/init.h> #include <linux/module.h> #include <linux/pci.h>
drivers/scsi/qla2xxx/ql2300_fw.c +5 -17
@@ -1,21 +1,9 @@ -/****************************************************************************** -* QLOGIC LINUX SOFTWARE -* -* QLogic ISP2x00 device driver for Linux 2.6.x -* Copyright (C) 2005 QLogic Corporation -* (www.qlogic.com) -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2, or (at your option) any -* later version. -* -* This program is distributed in the hope that it will be useful, but -* WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* General Public License for more details. +/* +* QLogic Fibre Channel HBA Driver +* Copyright (c) 2003-2005 QLogic Corporation * -******************************************************************************/ +* See LICENSE.qla2xxx for copyright and licensing details. +*/ /* * Firmware Version 3.03.15 (10:03 May 26, 2005)
drivers/scsi/qla2xxx/ql2322.c +3 -4
@@ -1,10 +1,9 @@/* -* QLogic ISP2322 device driver for Linux 2.6.x -* Copyright (C) 2003-2005 QLogic Corporation (www.qlogic.com) +* QLogic Fibre Channel HBA Driver +* Copyright (c) 2003-2005 QLogic Corporation * -* Released under GPL v2. +* See LICENSE.qla2xxx for copyright and licensing details. */ -#include <linux/init.h> #include <linux/module.h> #include <linux/pci.h>
drivers/scsi/qla2xxx/ql2322_fw.c +5 -17
@@ -1,21 +1,9 @@ -/****************************************************************************** -* QLOGIC LINUX SOFTWARE -* -* QLogic ISP2x00 device driver for Linux 2.6.x -* Copyright (C) 2005 QLogic Corporation -* (www.qlogic.com) -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2, or (at your option) any -* later version. -* -* This program is distributed in the hope that it will be useful, but -* WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* General Public License for more details. +/* +* QLogic Fibre Channel HBA Driver +* Copyright (c) 2003-2005 QLogic Corporation * -******************************************************************************/ +* See LICENSE.qla2xxx for copyright and licensing details. +*/ /* * Firmware Version 3.03.15 (10:09 May 26, 2005)
drivers/scsi/qla2xxx/ql6312.c +3 -4
@@ -1,10 +1,9 @@/* -* QLogic ISP6312 device driver for Linux 2.6.x -* Copyright (C) 2003-2005 QLogic Corporation (www.qlogic.com) +* QLogic Fibre Channel HBA Driver +* Copyright (c) 2003-2005 QLogic Corporation * -* Released under GPL v2. +* See LICENSE.qla2xxx for copyright and licensing details. */ -#include <linux/init.h> #include <linux/module.h> #include <linux/pci.h>
drivers/scsi/qla2xxx/ql6312_fw.c +5 -17
@@ -1,21 +1,9 @@ -/****************************************************************************** -* QLOGIC LINUX SOFTWARE -* -* QLogic ISP2x00 device driver for Linux 2.6.x -* Copyright (C) 2005 QLogic Corporation -* (www.qlogic.com) -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2, or (at your option) any -* later version. -* -* This program is distributed in the hope that it will be useful, but -* WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* General Public License for more details. +/* +* QLogic Fibre Channel HBA Driver +* Copyright (c) 2003-2005 QLogic Corporation * -******************************************************************************/ +* See LICENSE.qla2xxx for copyright and licensing details. +*/ /* * Firmware Version 3.03.15 (10:00 May 26, 2005)
drivers/scsi/qla2xxx/qla_attr.c +3 -15
@@ -1,20 +1,8 @@/* -* QLOGIC LINUX SOFTWARE -* -* QLogic ISP2x00 device driver for Linux 2.6.x -* Copyright (C) 2003-2005 QLogic Corporation -* (www.qlogic.com) -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2, or (at your option) any -* later version. -* -* This program is distributed in the hope that it will be useful, but -* WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* General Public License for more details. +* QLogic Fibre Channel HBA Driver +* Copyright (c) 2003-2005 QLogic Corporation * +* See LICENSE.qla2xxx for copyright and licensing details. */ #include "qla_def.h"
drivers/scsi/qla2xxx/qla_dbg.c +3 -15
@@ -1,20 +1,8 @@/* -* QLOGIC LINUX SOFTWARE -* -* QLogic ISP2x00 device driver for Linux 2.6.x -* Copyright (C) 2003-2005 QLogic Corporation -* (www.qlogic.com) -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2, or (at your option) any -* later version. -* -* This program is distributed in the hope that it will be useful, but -* WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* General Public License for more details. +* QLogic Fibre Channel HBA Driver +* Copyright (c) 2003-2005 QLogic Corporation * +* See LICENSE.qla2xxx for copyright and licensing details. */ #include "qla_def.h"
drivers/scsi/qla2xxx/qla_dbg.h +5 -18
@@ -1,22 +1,9 @@ -/****************************************************************************** -* QLOGIC LINUX SOFTWARE -* -* QLogic ISP2x00 device driver for Linux 2.6.x -* Copyright (C) 2003-2005 QLogic Corporation -* (www.qlogic.com) -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2, or (at your option) any -* later version. -* -* This program is distributed in the hope that it will be useful, but -* WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* General Public License for more details. +/* +* QLogic Fibre Channel HBA Driver +* Copyright (c) 2003-2005 QLogic Corporation * -******************************************************************************/ - +* See LICENSE.qla2xxx for copyright and licensing details. +*/ /* * Driver debug definitions. */
drivers/scsi/qla2xxx/qla_def.h +6 -19
@@ -1,22 +1,9 @@ -/******************************************************************************** -* QLOGIC LINUX SOFTWARE -* -* QLogic ISP2x00 device driver for Linux 2.6.x -* Copyright (C) 2003-2005 QLogic Corporation -* (www.qlogic.com) -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2, or (at your option) any -* later version. -* -* This program is distributed in the hope that it will be useful, but -* WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* General Public License for more details. -** -******************************************************************************/ - +/* +* QLogic Fibre Channel HBA Driver +* Copyright (c) 2003-2005 QLogic Corporation +* +* See LICENSE.qla2xxx for copyright and licensing details. +*/ #ifndef __QLA_DEF_H#define __QLA_DEF_H
drivers/scsi/qla2xxx/qla_fw.h +6 -20
@@ -1,23 +1,9 @@ - -/******************************************************************************** -* QLOGIC LINUX SOFTWARE -* -* QLogic ISP2x00 device driver for Linux 2.6.x -* Copyright (C) 2003-2005 QLogic Corporation -* (www.qlogic.com) -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2, or (at your option) any -* later version. -* -* This program is distributed in the hope that it will be useful, but -* WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* General Public License for more details. -** -******************************************************************************/ - +/* +* QLogic Fibre Channel HBA Driver +* Copyright (c) 2003-2005 QLogic Corporation +* +* See LICENSE.qla2xxx for copyright and licensing details. +*/ #ifndef __QLA_FW_H#define __QLA_FW_H
drivers/scsi/qla2xxx/qla_gbl.h +6 -22
@@ -1,25 +1,9 @@ -/******************************************************************************** -* QLOGIC LINUX SOFTWARE -* -* QLogic ISP2x00 device driver for Linux 2.6.x -* Copyright (C) 2003-2005 QLogic Corporation -* (www.qlogic.com) -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2, or (at your option) any -* later version. -* -* This program is distributed in the hope that it will be useful, but -* WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* General Public License for more details. -* -****************************************************************************** -* Global include file. -******************************************************************************/ - - +/* +* QLogic Fibre Channel HBA Driver +* Copyright (c) 2003-2005 QLogic Corporation +* +* See LICENSE.qla2xxx for copyright and licensing details. +*/ #ifndef __QLA_GBL_H#define __QLA_GBL_H
drivers/scsi/qla2xxx/qla_gs.c +3 -15
@@ -1,20 +1,8 @@/* -* QLOGIC LINUX SOFTWARE -* -* QLogic ISP2x00 device driver for Linux 2.6.x -* Copyright (C) 2003-2005 QLogic Corporation -* (www.qlogic.com) -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2, or (at your option) any -* later version. -* -* This program is distributed in the hope that it will be useful, but -* WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* General Public License for more details. +* QLogic Fibre Channel HBA Driver +* Copyright (c) 2003-2005 QLogic Corporation * +* See LICENSE.qla2xxx for copyright and licensing details. */ #include "qla_def.h"
drivers/scsi/qla2xxx/qla_init.c +3 -15
@@ -1,20 +1,8 @@/* -* QLOGIC LINUX SOFTWARE -* -* QLogic ISP2x00 device driver for Linux 2.6.x -* Copyright (C) 2003-2005 QLogic Corporation -* (www.qlogic.com) -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2, or (at your option) any -* later version. -* -* This program is distributed in the hope that it will be useful, but -* WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* General Public License for more details. +* QLogic Fibre Channel HBA Driver +* Copyright (c) 2003-2005 QLogic Corporation * +* See LICENSE.qla2xxx for copyright and licensing details. */ #include "qla_def.h"
drivers/scsi/qla2xxx/qla_inline.h +3 -16
@@ -1,23 +1,10 @@/* -* QLOGIC LINUX SOFTWARE -* -* QLogic ISP2x00 device driver for Linux 2.6.x -* Copyright (C) 2003-2005 QLogic Corporation -* (www.qlogic.com) -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2, or (at your option) any -* later version. -* -* This program is distributed in the hope that it will be useful, but -* WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* General Public License for more details. +* QLogic Fibre Channel HBA Driver +* Copyright (c) 2003-2005 QLogic Corporation * +* See LICENSE.qla2xxx for copyright and licensing details. */ -static __inline__uint16_t qla2x00_debounce_register (volatile uint16_t __iomem *);/* * qla2x00_debounce_register
drivers/scsi/qla2xxx/qla_iocb.c +5 -18
@@ -1,22 +1,9 @@ -/****************************************************************************** -* QLOGIC LINUX SOFTWARE +/* +* QLogic Fibre Channel HBA Driver +* Copyright (c) 2003-2005 QLogic Corporation * -* QLogic ISP2x00 device driver for Linux 2.6.x -* Copyright (C) 2003-2005 QLogic Corporation -* (www.qlogic.com) -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2, or (at your option) any -* later version. -* -* This program is distributed in the hope that it will be useful, but -* WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* General Public License for more details. -* -******************************************************************************/ - +* See LICENSE.qla2xxx for copyright and licensing details. +*/ #include "qla_def.h" #include <linux/blkdev.h>
drivers/scsi/qla2xxx/qla_isr.c +3 -15
@@ -1,20 +1,8 @@/* -* QLOGIC LINUX SOFTWARE -* -* QLogic ISP2x00 device driver for Linux 2.6.x -* Copyright (C) 2003-2005 QLogic Corporation -* (www.qlogic.com) -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2, or (at your option) any -* later version. -* -* This program is distributed in the hope that it will be useful, but -* WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* General Public License for more details. +* QLogic Fibre Channel HBA Driver +* Copyright (c) 2003-2005 QLogic Corporation * +* See LICENSE.qla2xxx for copyright and licensing details. */ #include "qla_def.h"
drivers/scsi/qla2xxx/qla_mbx.c +3 -15
@@ -1,20 +1,8 @@/* -* QLOGIC LINUX SOFTWARE -* -* QLogic ISP2x00 device driver for Linux 2.6.x -* Copyright (C) 2003-2005 QLogic Corporation -* (www.qlogic.com) -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2, or (at your option) any -* later version. -* -* This program is distributed in the hope that it will be useful, but -* WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* General Public License for more details. +* QLogic Fibre Channel HBA Driver +* Copyright (c) 2003-2005 QLogic Corporation * +* See LICENSE.qla2xxx for copyright and licensing details. */ #include "qla_def.h"
drivers/scsi/qla2xxx/qla_os.c +3 -15
@@ -1,20 +1,8 @@/* -* QLOGIC LINUX SOFTWARE -* -* QLogic ISP2x00 device driver for Linux 2.6.x -* Copyright (C) 2003-2005 QLogic Corporation -* (www.qlogic.com) -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2, or (at your option) any -* later version. -* -* This program is distributed in the hope that it will be useful, but -* WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* General Public License for more details. +* QLogic Fibre Channel HBA Driver +* Copyright (c) 2003-2005 QLogic Corporation * +* See LICENSE.qla2xxx for copyright and licensing details. */ #include "qla_def.h"
drivers/scsi/qla2xxx/qla_rscn.c +3 -15
@@ -1,20 +1,8 @@/* -* QLOGIC LINUX SOFTWARE -* -* QLogic ISP2x00 device driver for Linux 2.6.x -* Copyright (C) 2003-2005 QLogic Corporation -* (www.qlogic.com) -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2, or (at your option) any -* later version. -* -* This program is distributed in the hope that it will be useful, but -* WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* General Public License for more details. +* QLogic Fibre Channel HBA Driver +* Copyright (c) 2003-2005 QLogic Corporation * +* See LICENSE.qla2xxx for copyright and licensing details. */ #include "qla_def.h"
drivers/scsi/qla2xxx/qla_settings.h +5 -17
@@ -1,21 +1,9 @@ -/****************************************************************************** -* QLOGIC LINUX SOFTWARE -* -* QLogic ISP2x00 device driver for Linux 2.6.x -* Copyright (C) 2003-2005 QLogic Corporation -* (www.qlogic.com) -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2, or (at your option) any -* later version. -* -* This program is distributed in the hope that it will be useful, but -* WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* General Public License for more details. +/* +* QLogic Fibre Channel HBA Driver +* Copyright (c) 2003-2005 QLogic Corporation * -******************************************************************************/ +* See LICENSE.qla2xxx for copyright and licensing details. +*/ /* * Compile time Options: * 0 - Disable and 1 - Enable
drivers/scsi/qla2xxx/qla_sup.c +5 -18
@@ -1,22 +1,9 @@ -/****************************************************************************** -* QLOGIC LINUX SOFTWARE -* -* QLogic ISP2x00 device driver for Linux 2.6.x -* Copyright (C) 2003-2005 QLogic Corporation -* (www.qlogic.com) -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2, or (at your option) any -* later version. -* -* This program is distributed in the hope that it will be useful, but -* WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* General Public License for more details. +/* +* QLogic Fibre Channel HBA Driver +* Copyright (c) 2003-2005 QLogic Corporation * -******************************************************************************/ - +* See LICENSE.qla2xxx for copyright and licensing details. +*/ #include "qla_def.h" #include <linux/delay.h>
drivers/scsi/qla2xxx/qla_version.h +5 -17
@@ -1,21 +1,9 @@ -/****************************************************************************** -* QLOGIC LINUX SOFTWARE -* -* QLogic ISP2x00 device driver for Linux 2.6.x -* Copyright (C) 2003-2005 QLogic Corporation -* (www.qlogic.com) -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2, or (at your option) any -* later version. -* -* This program is distributed in the hope that it will be useful, but -* WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* General Public License for more details. +/* +* QLogic Fibre Channel HBA Driver +* Copyright (c) 2003-2005 QLogic Corporation * -******************************************************************************/ +* See LICENSE.qla2xxx for copyright and licensing details. +*/ /* * Driver version */
---
0.99.8.GIT
Signature · 1 line
Andrew Vasquez
Re: [PATCH 4/12] qla2xxx: Update license.
Quoted 17 lines · Andrew Vasquez
Signed-off-by Andrew Vasquez <[email protected]>+++ b/Documentation/scsi/LICENSE.qla2xxx
Documentation/scsi/LICENSE.qla2xxx new file +13
-0@@ -0,0 +1,59 @@ +Copyright (c) 2003-2005 QLogic Corporation +QLogic Linux Fibre Channel HBA Driver + +This program includes a device driver for Linux 2.6 that may be +distributed with QLogic hardware specific firmware binary file. +You may modify and redistribute the device driver code under the +GNU General Public License as published by the Free Software +Foundation (version 2 or a later version) and/or under the +following terms, as applicable: + + 1. Redistribution of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer.
Documentation/scsi/LICENSE.qla2xxx line 23
Quoted 10 lines
Documentation/scsi/LICENSE.qla2xxx new file +10
-0+ + 2. Redistribution in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + + 3. The name of QLogic Corporation may not be used to + endorse or promote products derived from this software + without specific prior written permission. +
as one of the people who made significant changes to the qlogic driver I object to this license change, especially because it was a one sided change without consultation beforehand.
James: please do not apply this.
Andrew: you can't do this. You just CANNOT change the license of code you don't own fully without consent of ALL contributors.
Re: [PATCH 4/12] qla2xxx: Update license.
Quoted 28 lines · Arjan van de Ven
Quoted 26 lines · Andrew Vasquez
Signed-off-by Andrew Vasquez <[email protected]>+++ b/Documentation/scsi/LICENSE.qla2xxx
Documentation/scsi/LICENSE.qla2xxx new file +21
-0@@ -0,0 +1,59 @@ +Copyright (c) 2003-2005 QLogic Corporation +QLogic Linux Fibre Channel HBA Driver + +This program includes a device driver for Linux 2.6 that may be +distributed with QLogic hardware specific firmware binary file. +You may modify and redistribute the device driver code under the +GNU General Public License as published by the Free Software +Foundation (version 2 or a later version) and/or under the +following terms, as applicable: + + 1. Redistribution of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + + 2. Redistribution in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + + 3. The name of QLogic Corporation may not be used to + endorse or promote products derived from this software
Quoted 8 lines
Review line 23
Quoted 2 lines
(quoted diff) +2
-0+ without specific prior written permission. +as one of the people who made significant changes to the qlogic driver I object to this license change, especially because it was a one sided change without consultation beforehand.
Arjan,
Apart from not being consulted beforehand, what precisely is objectionable in the above?
Quoted 4 lines
James: please do not apply this.
Andrew: you can't do this. You just CANNOT change the license of code you don't own fully without consent of ALL contributors.
Often wondered about that. Someone sends me a bug fix, I accept it, credit them and then at some later stage want to broaden the license on that code from GPL to BSD (say). Do I need the bug fixer's permission?
Doug Gilbert
Re: [PATCH 4/12] qla2xxx: Update license.
Quoted 3 lines · Douglas Gilbert
Arjan,
Apart from not being consulted beforehand, what precisely is objectionable in the above?
It allows people to make binary only linux modules (in so far binary kernel modules are allowed at all, eg not that far, but still, this text would give people the impression that it would be allowed and even approved/OK to do so from this driver), or binary only <ANYTHING> modules from this driver, including the bits I worked on.
Quoted 7 lines
Quoted 2 lines
Andrew: you can't do this. You just CANNOT change the license of code you don't own fully without consent of ALL contributors.
Often wondered about that. Someone sends me a bug fix, I accept it, credit them and then at some later stage want to broaden the license on that code from GPL to BSD (say). Do I need the bug fixer's permission?
I think the lawyers will say "depends on the size of the contribution"; for a single one liner it's "probably not" although politeness certainly would require it; for anything substantially bigger, you do need that.
(and "substantially" is obviously subject to interpretation, and that's the bit where you need to talk to lawyers realistically if you want to know the exact boundary)
Re: [PATCH 4/12] qla2xxx: Update license.
In reply to Arjan van de VenQuoted 34 lines · Arjan van de Ven
Quoted 17 lines · Andrew Vasquez
Signed-off-by Andrew Vasquez <[email protected]>+++ b/Documentation/scsi/LICENSE.qla2xxx
Documentation/scsi/LICENSE.qla2xxx new file +13
-0@@ -0,0 +1,59 @@ +Copyright (c) 2003-2005 QLogic Corporation +QLogic Linux Fibre Channel HBA Driver + +This program includes a device driver for Linux 2.6 that may be +distributed with QLogic hardware specific firmware binary file. +You may modify and redistribute the device driver code under the +GNU General Public License as published by the Free Software +Foundation (version 2 or a later version) and/or under the +following terms, as applicable: + + 1. Redistribution of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer.Documentation/scsi/LICENSE.qla2xxx line 23
Quoted 10 lines
Documentation/scsi/LICENSE.qla2xxx new file +10
-0+ + 2. Redistribution in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + + 3. The name of QLogic Corporation may not be used to + endorse or promote products derived from this software + without specific prior written permission. +as one of the people who made significant changes to the qlogic driver I object to this license change, especially because it was a one sided change without consultation beforehand.
Quoted 4 lines
James: please do not apply this.
Andrew: you can't do this. You just CANNOT change the license of code you don't own fully without consent of ALL contributors.
During my talk at OLS, I had mentioned that QLogic Legal was investigating solutions to the firmware-blob licensing issue with respect to the qla2xxx driver. Several folks after the talk asked for specific verbaige (which I did not have), I only knew it was going to be a dual GPL/BSD (type) license. Later in the day I received a preliminary copy from Legal and forwarded it to inquirying individuals.
Since then, the license was was working its way through the slow-moving pipelines of Legal. During this time, it was my understanding that the document had been vetted my several OEMs and major distros. Granted, I can understand that this would certainly not get the broad exposure of the linux-kerne|scsi ditributions (which if I'm reading correctly is one of your major concerns). For this I apologize, as it ultimately was my responsibility to insure this license change proceeded smoothly.
I've since forwarded your email to our engineering VP and would also like to solicit any others on these mailing lists for their concerns with the license verbaige. Given the heritage of the qla2xxx driver, one concerns is -- at what point does one claim that total contributors acceptance has been achieved given a proposed licensing change.
Regards,
Andrew Vasquez
---
Copyright (c) 2003-2005 QLogic Corporation
QLogic Linux Fibre Channel HBA Driver
This program includes a device driver for Linux 2.6 that may be distributed with QLogic hardware specific firmware binary file. You may modify and redistribute the device driver code under the GNU General Public License as published by the Free Software Foundation (version 2 or a later version) and/or under the following terms, as applicable:
1. Redistribution of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistribution in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. The name of QLogic Corporation may not be used to endorse or promote products derived from this software without specific prior written permission.
You may redistribute the hardware specific firmware binary file under the following terms:
1. Redistribution of source code (only if applicable), must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistribution in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. The name of QLogic Corporation may not be used to endorse or promote products derived from this software without specific prior written permission
REGARDLESS OF WHAT LICENSING MECHANISM IS USED OR APPLICABLE, THIS PROGRAM IS PROVIDED BY QLOGIC CORPORATION "AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
USER ACKNOWLEDGES AND AGREES THAT USE OF THIS PROGRAM WILL NOT CREATE OR GIVE GROUNDS FOR A LICENSE BY IMPLICATION, ESTOPPEL, OR OTHERWISE IN ANY INTELLECTUAL PROPERTY RIGHTS (PATENT, COPYRIGHT, TRADE SECRET, MASK WORK, OR OTHER PROPRIETARY RIGHT) EMBODIED IN ANY OTHER QLOGIC HARDWARE OR SOFTWARE EITHER SOLELY OR IN COMBINATION WITH THIS PROGRAM.
Re: [PATCH 4/12] qla2xxx: Update license.
Quoted 6 lines
Quoted 6 lines
as one of the people who made significant changes to the qlogic driver I object to this license change, especially because it was a one sided change without consultation beforehand.
Quoted 8 lines
Quoted 4 lines
James: please do not apply this.
Andrew: you can't do this. You just CANNOT change the license of code you don't own fully without consent of ALL contributors.
During my talk at OLS, I had mentioned that QLogic Legal was investigating solutions to the firmware-blob licensing issue with respect to the qla2xxx driver.
this is a really odd way to "solve" this, simply because by being part of the kernel tarbal, the GPL clause is the only one that matters (see the GPL text for collective works) and the BSD part of it is "dormant" until someone takes the driver outside the linux kernel context. So that isn't solving anything with respect to the firmware licensing issue/non-issue (depending from what angle you look at it)
Quoted 4 lines
Since then, the license was was working its way through the slow-moving pipelines of Legal. During this time, it was my understanding that the document had been vetted my several OEMs and major distros
this is all irrelevant :)
Quoted 3 lines
. Granted, I can understand that this would certainly
not get the broad exposure of the linux-kerne|scsi ditributions (which if I'm reading correctly is one of your major concerns).
no my concern is that you failed to get consent from all people who contributed to the driver.
Quoted 4 lines
Given the heritage of the qla2xxx driver,
one concerns is -- at what point does one claim that total contributors acceptance has been achieved given a proposed licensing change.
you need 100% of the people who contributed substantial changes. And even then it's a questionable change, given that the driver clearly is a derived work of the linux kernel (and that's fine, it's GPL) and is shipped with the linux kernel (see clause 2 of the GPL). Other licenses are not relevant as long as the driver is a linux kernel driver like this.
You need 100% because you are giving 3rd parties more rights the code than that the contributors have given you. That just can't be done without consent.
If you want the firmware issue improved, make the *firmware* BSD licensed. And only the firmware. But leave the driver GPL. And probably make it optional and allow a request_firmware() interface as well, so that people/distributions who don't want the built in one can use the request_firmware() option instead.
Re: [PATCH 4/12] qla2xxx: Update license.
Quoted 5 lines · Arjan van de Ven
If you want the firmware issue improved, make the *firmware* BSD licensed. And only the firmware. But leave the driver GPL. And probably make it optional and allow a
request_firmware()interface as well, so that people/distributions who don't want the built in one can use therequest_firmware()option instead.
Here's the updated license we'd like to propose. Please note the verbiage regarding the questionable relicensing of the driver codes has been removed.
On ACK, I'll re-diff my original patch and submit.
Regards,
Andrew Vasquez
---
Copyright (c) 2003-2005 QLogic Corporation
QLogic Linux Fibre Channel HBA Driver
This program includes a device driver for Linux 2.6 that may be distributed with QLogic hardware specific firmware binary file. You may modify and redistribute the device driver code under the GNU General Public License as published by the Free Software Foundation (version 2 or a later version).
You may redistribute the hardware specific firmware binary file under the following terms:
1. Redistribution of source code (only if applicable), must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistribution in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. The name of QLogic Corporation may not be used to endorse or promote products derived from this software without specific prior written permission
REGARDLESS OF WHAT LICENSING MECHANISM IS USED OR APPLICABLE, THIS PROGRAM IS PROVIDED BY QLOGIC CORPORATION "AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
USER ACKNOWLEDGES AND AGREES THAT USE OF THIS PROGRAM WILL NOT CREATE OR GIVE GROUNDS FOR A LICENSE BY IMPLICATION, ESTOPPEL, OR OTHERWISE IN ANY INTELLECTUAL PROPERTY RIGHTS (PATENT, COPYRIGHT, TRADE SECRET, MASK WORK, OR OTHER PROPRIETARY RIGHT) EMBODIED IN ANY OTHER QLOGIC HARDWARE OR SOFTWARE EITHER SOLELY OR IN COMBINATION WITH THIS PROGRAM.
Re: [PATCH 4/12] qla2xxx: Update license.
Quoted 3 lines · Andrew Vasquez
Here's the updated license we'd like to propose. Please note the verbiage regarding the questionable relicensing of the driver codes has been removed.
please don't hard-code qlogic in the license, you're not the only copytight holder and adding everyone gets to long. The only license I'd be willing to dual-license my code under is the extremly simple mit-style license used by the openbsd project:
I'll also send you a list of the files that have singnificant contributions from me so you can add me to the copyright lines. I though that wasn't nessecary, but who knows what odd ideas legal departments will come up with next.
Re: [PATCH 4/12] qla2xxx: Update license.
Quoted 10 lines · Christoph Hellwig
Quoted 3 lines · Andrew Vasquez
Here's the updated license we'd like to propose. Please note the verbiage regarding the questionable relicensing of the driver codes has been removed.
please don't hard-code qlogic in the license, you're not the only copytight holder and adding everyone gets to long. The only license I'd be willing to dual-license my code under is the extremly simple mit-style license used by the openbsd project:
Quoted 6 lines
I'll also send you a list of the files that have singnificant contributions from me so you can add me to the copyright lines.I though that wasn't nessecary, but who knows what odd ideas legal departments will come up with next.
Sorry, but QLogic is not requesting that the driver codes be dual-licensed. The license explcitely states the codes are under the GPL and the firmware blobs are under the BSD style license.
Where's the disconnect?
Signature · 1 line
Andrew Vasquez
Re: [PATCH 4/12] qla2xxx: Update license.
Quoted 5 lines · Andrew Vasquez
Sorry, but QLogic is not requesting that the driver codes be dual-licensed. The license explcitely states the codes are under the GPL and the firmware blobs are under the BSD style license.
Where's the disconnect?
sorry, I mis-read the sentence before the BSD-style license. This approach is fine with me, and still required with external firmware aswell so that the distributions have a chance to ship it. It would be nice to just add a the BSD boilerplate to each of the firmware files directly instead of adding a LICENSE file to avoid confusion like mine :)
Re: [PATCH 4/12] qla2xxx: Update license.
In reply to Andrew VasquezQuoted 11 lines · Andrew Vasquez
Quoted 5 lines · Arjan van de Ven
If you want the firmware issue improved, make the *firmware* BSD licensed. And only the firmware. But leave the driver GPL. And probably make it optional and allow a
request_firmware()interface as well, so that people/distributions who don't want the built in one can use therequest_firmware()option instead.Here's the updated license we'd like to propose. Please note the verbiage regarding the questionable relicensing of the driver codes has been removed.
I'm fine with this "license the driver GPL as before, license the firmware BSD" approach.
Re: [PATCH 4/12] qla2xxx: Update license.
In reply to Andrew VasquezQuoted 1 line · Andrew Vasquez
Signed-off-by Andrew Vasquez <[email protected]>
NACK. My contributions won't be relicensed under such an odd license. The real fix is to allow userspace firmware loading for all HBA types (as done in one of the later patches) and eventually remove the firmware completely.
Re: [PATCH 4/12] qla2xxx: Update license.
Quoted 9 lines · Christoph Hellwig
Quoted 1 line · Andrew Vasquez
Signed-off-by Andrew Vasquez <[email protected]>NACK. My contributions won't be relicensed under such an odd license. The real fix is to allow userspace firmware loading for all HBA types (as done in one of the later patches) and eventually remove the firmware completely.
Andrew,
Another approach is to separate out changes made
by Christoph and Arjan into a separate file (or
files) and leave the GPL on that file.
Doug Gilbert
Re: [PATCH 4/12] qla2xxx: Update license.
Quoted 11 lines · Douglas Gilbert
Quoted 9 lines · Christoph Hellwig
Quoted 1 line · Andrew Vasquez
Signed-off-by Andrew Vasquez <[email protected]>NACK. My contributions won't be relicensed under such an odd license. The real fix is to allow userspace firmware loading for all HBA types (as done in one of the later patches) and eventually remove the firmware completely.
Quoted 4 lines
Andrew,
Another approach is to separate out changes made
by Christoph and Arjan into a separate file (or
files) and leave the GPL on that file.
..as well as any other contributor that isn't qlogic...
to be honest I suspect there will be nothing left for that though. It also voids the goal of this license change as far as I can see.. (and also I think that is legally iffy as well; one could argue that half the driver is a derived work of the other half (as well as probably a derived work of linux) and as such it needs to be GPL as well)
PATCH 5/12 qla2xxx: Add support for embedded ISP24xx firmware.
In reply to Andrew Vasquez---
drivers/scsi/qla2xxx/Makefile | 3 + drivers/scsi/qla2xxx/ql2400.c | 113 +++++++++++++++++++++++++++++++++++++++ drivers/scsi/qla2xxx/qla_def.h | 2 - drivers/scsi/qla2xxx/qla_gbl.h | 1 drivers/scsi/qla2xxx/qla_init.c | 63 ++++++++++++++++++++++ drivers/scsi/qla2xxx/qla_os.c | 85 ++++++----------------------- 6 files changed, 196 insertions(+), 71 deletions(-) create mode 100644 drivers/scsi/qla2xxx/ql2400.c
applies-to: fd35977ee7de3602087def1d4b490e31c9a383d2 84910304aeb3d5db54db9e975309e21791b9baca
drivers/scsi/qla2xxx/Makefile +2 -1
@@ -8,10 +8,11 @@ qla2200-y := ql2200.o ql2200_fw.o qla2300-y := ql2300.o ql2300_fw.o qla2322-y := ql2322.o ql2322_fw.o qla6312-y := ql6312.o ql6312_fw.o +qla2400-y := ql2400.o ql2400_fw.o obj-$(CONFIG_SCSI_QLA21XX) += qla2xxx.o qla2100.o obj-$(CONFIG_SCSI_QLA22XX) += qla2xxx.o qla2200.o obj-$(CONFIG_SCSI_QLA2300) += qla2xxx.o qla2300.o obj-$(CONFIG_SCSI_QLA2322) += qla2xxx.o qla2322.o obj-$(CONFIG_SCSI_QLA6312) += qla2xxx.o qla6312.o -obj-$(CONFIG_SCSI_QLA24XX) += qla2xxx.o +obj-$(CONFIG_SCSI_QLA24XX) += qla2xxx.o qla2400.o
drivers/scsi/qla2xxx/ql2400.c new file +113 -0
113 lines not on this page · raw message
drivers/scsi/qla2xxx/qla_def.h +1 -1
@@ -2118,7 +2118,7 @@ struct qla_board_info {char isp_name[8 ];struct qla_fw_info *fw_info;char *fw_fname; -struct scsi_host_template *sht; +int alternate_sht; };/* Return data from MBC_GET_ID_LIST call. */
drivers/scsi/qla2xxx/qla_gbl.h +1 -0
@@ -35,6 +35,7 @@ extern void qla24xx_update_fw_options(scextern int qla2x00_load_risc (struct scsi_qla_host *,uint32_t *);extern int qla24xx_load_risc_flash (scsi_qla_host_t *,uint32_t *);extern int qla24xx_load_risc_hotplug (scsi_qla_host_t *,uint32_t *); +extern int qla24xx_load_risc (scsi_qla_host_t *,uint32_t *);extern fc_port_t *qla2x00_alloc_fcport (scsi_qla_host_t *,int );
drivers/scsi/qla2xxx/qla_init.c +63 -0
66 lines not on this page · raw message
drivers/scsi/qla2xxx/qla_os.c +16 -69
130 lines not on this page · raw message
---
0.99.8.GIT
Signature · 1 line
Andrew Vasquez
Re: [PATCH 5/12] qla2xxx: Add support for embedded ISP24xx firmware.
Quoted 1 line · Andrew Vasquez
Signed-off-by Andrew Vasquez <[email protected]>
NACK. No more embedded firmware.
Re: [PATCH 5/12] qla2xxx: Add support for embedded ISP24xx firmware.
Quoted 4 lines · Christoph Hellwig
Quoted 1 line · Andrew Vasquez
Signed-off-by Andrew Vasquez <[email protected]>NACK. No more embedded firmware.
Unfortunately, since OLS, it has been decided that for 24xx HBAs, firmware will *not* be present on the board during manufacturing time and thus, similarly to all our previous products, firmware will have to be embedded within the driver. Yes, this is a complete 180 from my previous statements before and during OLS.
The additional patch:
[PATCH 7/12] qla2xxx: Add hotplug firmware-load support for all ISP types.
http://marc.theaimsgroup.com/?l=linux-scsi&m=112924541603555&w=2
as part of this patchset moves us one-step closer to having complete firmware-blob independence (and hell, perhaps some final resolution wrt this whole licensing issue) from the driver, but it is certainly not a panacea. There is still the major issue of those users who depend on a root-boot across the SAN. As it currently stands, I don't believe distros are currently at a state where the request-firmware interface is fully supported at boot-time (please correct me if I'm wrong).
There's also an additional detail I'm trying to work out locally -- distribution of these .bin files, this is entirely within my court, but as it stands, without an firmware image present, these 24xx users will have no way of initialising their cards.
I believe we spoke about this during OLS as well, and agreed that adding the request-firmware interface for all ISP types, waiting a year or so for distro infrastructure to mature now, then discarding the embedded blobs was the way to go. Given that, embedded 24xx support will need to be present throughout that year.
--
Andrew
Re: [PATCH 5/12] qla2xxx: Add support for embedded ISP24xx firmware.
Quoted 32 lines · Andrew Vasquez
Quoted 4 lines · Christoph Hellwig
Quoted 1 line · Andrew Vasquez
Signed-off-by Andrew Vasquez <[email protected]>NACK. No more embedded firmware.
Unfortunately, since OLS, it has been decided that for 24xx HBAs, firmware will *not* be present on the board during manufacturing time and thus, similarly to all our previous products, firmware will have to be embedded within the driver. Yes, this is a complete 180 from my previous statements before and during OLS.
The additional patch:
[PATCH 7/12] qla2xxx: Add hotplug firmware-load support for all ISP types.
http://marc.theaimsgroup.com/?l=linux-scsi&m=112924541603555&w=2as part of this patchset moves us one-step closer to having complete firmware-blob independence (and hell, perhaps some final resolution wrt this whole licensing issue) from the driver, but it is certainly not a panacea. There is still the major issue of those users who depend on a root-boot across the SAN. As it currently stands, I don't believe distros are currently at a state where the request-firmware interface is fully supported at boot-time (please correct me if I'm wrong).
There's also an additional detail I'm trying to work out locally -- distribution of these .bin files, this is entirely within my court, but as it stands, without an firmware image present, these 24xx users will have no way of initialising their cards.
Quoted 5 lines
I believe we spoke about this during OLS as well, and agreed that adding the request-firmware interface for all ISP types, waiting a year or so for distro infrastructure to mature now, then discarding the embedded blobs was the way to go. Given that, embedded 24xx support will need to be present throughout that year.
No, we shouldn't add more firmware. I think we need to play out you against the distros here so that they finally fix their infrastructure ;-)
Re: [PATCH 5/12] qla2xxx: Add support for embedded ISP24xx firmware.
Quoted 10 lines · Christoph Hellwig
Quoted 6 lines · Andrew Vasquez
I believe we spoke about this during OLS as well, and agreed that adding the request-firmware interface for all ISP types, waiting a year or so for distro infrastructure to mature now, then discarding the embedded blobs was the way to go. Given that, embedded 24xx support will need to be present throughout that year.
No, we shouldn't add more firmware. I think we need to play out you against the distros here so that they finally fix their infrastructure ;-)
Ok, so what's going to be the policy regarding firmware updates:
http://marc.theaimsgroup.com/?l=linux-scsi&m=112924541725072&w=2
--
av
Re: [PATCH 5/12] qla2xxx: Add support for embedded ISP24xx firmware.
Quoted 1 line · Andrew Vasquez
Ok, so what's going to be the policy regarding firmware updates:
Updates for existing drivers are fine mid-term, just please avoid adding new ones.
PATCH 6/12 qla2xxx: Resync with latest released firmware -- 4.00.12.
In reply to Andrew Vasquez---
This patch is too large for an inline patch, please download the bzip'd patch from:
ftp://ftp.qlogic.com/outgoing/linux/patches/8.x/8.01.02k/0006-Resync-with-latest-released-firmware-4.00.12.diff.bz2
Signature · 1 line
Andrew Vasquez
PATCH 7/12 qla2xxx: Add hotplug firmware-load support for all ISP types.
In reply to Andrew VasquezOriginal implementation only supported ISP24xx types. The driver requests a specific file name based on ISP type:
ISP Filename ---------- ------------- 21xx ql2100_fw.bin 22xx ql2200_fw.bin 2300, 2312 ql2300_fw.bin 2322 ql2322_fw.bin 6312, 6322 ql6312_fw.bin 24xx ql2400_fw.bin
so the user should insure that the appropriate .bin file is hotplug accessible. Upon request, the driver caches the firmware image until the core qla2xxx driver is unloaded.
Also collapse essentially duplicate code in qla2x00_load_ram_ext() into a qla2x00_load_ram().
---
drivers/scsi/qla2xxx/ql2322.c | 12 +-- drivers/scsi/qla2xxx/qla_def.h | 7 ++ drivers/scsi/qla2xxx/qla_gbl.h | 8 +- drivers/scsi/qla2xxx/qla_init.c | 176 +++++++++++++++++++++++++++++---------- drivers/scsi/qla2xxx/qla_mbx.c | 103 ++--------------------- drivers/scsi/qla2xxx/qla_os.c | 77 +++++++++++++++++ 6 files changed, 233 insertions(+), 150 deletions(-)
applies-to: 62666c48a7115b6d16b8db7a511f89042b10cc8c c0f04d85eb3657e1b08c3b5426e4cf56cd2e9e48
drivers/scsi/qla2xxx/ql2322.c +5 -7
@@ -46,12 +46,10 @@ static struct qla_fw_info qla_fw_tbl[] = { FW_INFO_ADDR_NOMORE, }, }; -static struct qla_board_info qla_board_tbl[] = { - { - .drv_name = qla_driver_name, - .isp_name ="ISP2322" , - .fw_info = qla_fw_tbl, - }, +static struct qla_board_info qla_board_tbl = { + .drv_name = qla_driver_name, + .isp_name ="ISP2322" , + .fw_info = qla_fw_tbl, };static struct pci_device_id qla2322_pci_tbl[] = {
@@ -60,7 +58,7 @@ static struct pci_device_id qla2322_pci_ .device = PCI_DEVICE_ID_QLOGIC_ISP2322, .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID, - .driver_data = (unsigned long)&qla_board_tbl[0], + .driver_data = (unsigned long)&qla_board_tbl, }, {0, 0}, };
drivers/scsi/qla2xxx/qla_def.h +7 -0
@@ -21,6 +21,7 @@#include <linux/spinlock.h> #include <linux/completion.h> #include <linux/interrupt.h> +#include <linux/firmware.h> #include <asm/semaphore.h> #include <scsi/scsi.h>
@@ -2121,6 +2122,12 @@ struct qla_board_info {int alternate_sht; }; +struct fw_blob { +char *name; +uint32_t segs[4 ]; +const struct firmware *fw; +}; +/* Return data from MBC_GET_ID_LIST call. */ struct gid_list_info {uint8_t al_pa;
drivers/scsi/qla2xxx/qla_gbl.h +4 -4
@@ -33,6 +33,7 @@ extern int qla24xx_nvram_config(struct sextern void qla2x00_update_fw_options (struct scsi_qla_host *);extern void qla24xx_update_fw_options (scsi_qla_host_t *);extern int qla2x00_load_risc (struct scsi_qla_host *,uint32_t *); +extern int qla2x00_load_risc_hotplug (scsi_qla_host_t *,uint32_t *);extern int qla24xx_load_risc_flash (scsi_qla_host_t *,uint32_t *);extern int qla24xx_load_risc_hotplug (scsi_qla_host_t *,uint32_t *);extern int qla24xx_load_risc (scsi_qla_host_t *,uint32_t *);
@@ -77,6 +78,8 @@ extern void qla2x00_blink_led(scsi_qla_hextern int qla2x00_down_timeout (struct semaphore *,unsigned long ); +extern struct fw_blob *qla2x00_request_firmware (scsi_qla_host_t *); +/* * Global Function Prototypes in qla_iocb.c source file. */
@@ -95,10 +98,7 @@ int __qla2x00_marker(scsi_qla_host_t *,* Global Function Prototypes in qla_mbx.c source file. */ extern int -qla2x00_load_ram (scsi_qla_host_t *,dma_addr_t ,uint16_t ,uint16_t ); - -extern int -qla2x00_load_ram_ext (scsi_qla_host_t *,dma_addr_t ,uint32_t ,uint32_t ); +qla2x00_load_ram (scsi_qla_host_t *,dma_addr_t ,uint32_t ,uint32_t );extern int qla2x00_execute_fw (scsi_qla_host_t *,uint32_t );
drivers/scsi/qla2xxx/qla_init.c +131 -45
281 lines not on this page · raw message
drivers/scsi/qla2xxx/qla_mbx.c +10 -93
123 lines not on this page · raw message
drivers/scsi/qla2xxx/qla_os.c +76 -1
95 lines not on this page · raw message
---
0.99.8.GIT
Signature · 1 line
Andrew Vasquez
PATCH 8/12 qla2xxx: Resync with latest released ISP23xx/63xx firmware -- 3.03.18.
In reply to Andrew Vasquez---
This patch is too large for an inline patch, please download the bzip'd patch from:
ftp://ftp.qlogic.com/outgoing/linux/patches/8.x/8.01.02k/0008-Resync-with-latest-released-ISP23xx-63xx-firmware-3.03.18.diff.bz2
Signature · 1 line
Andrew Vasquez
PATCH 9/12 qla2xxx: Use midlayer's int_to_scsilun() function.
In reply to Andrew VasquezWhile populating command type 6 and 7 IOCBs.
---
drivers/scsi/qla2xxx/qla_iocb.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-)
applies-to: fe8002ebcdf0c4c12e193b17cd64cc67b5a01bf5 95b166d4587c82ed5e261d9e7e8c7675ef808fff
drivers/scsi/qla2xxx/qla_iocb.c +1 -2
@@ -826,8 +826,7 @@ qla24xx_start_scsi(srb_t *sp) cmd_pkt->port_id[1 ] = sp->fcport->d_id.b.area; cmd_pkt->port_id[2 ] = sp->fcport->d_id.b.domain; - cmd_pkt->lun[1 ] =LSB (sp->cmd->device->lun); - cmd_pkt->lun[2 ] =MSB (sp->cmd->device->lun); +int_to_scsilun (sp->cmd->device->lun, (struct scsi_lun *)cmd_pkt->lun);/* Update tagged queuing modifier -- default is TSK_SIMPLE (0). */ if (scsi_populate_tag_msg (cmd, tag)) {
---
0.99.8.GIT
Signature · 1 line
Andrew Vasquez
Re: [PATCH 9/12] qla2xxx: Use midlayer's int_to_scsilun() function.
drivers/scsi/qla2xxx/qla_iocb.c qla24xx_start_scsi(srb_t *sp) · line 829
Quoted 3 lines
drivers/scsi/qla2xxx/qla_iocb.c +1
-2- cmd_pkt->lun[1 ] =LSB (sp->cmd->device->lun); - cmd_pkt->lun[2 ] =MSB (sp->cmd->device->lun); +int_to_scsilun (sp->cmd->device->lun, (struct scsi_lun *)cmd_pkt->lun);
Please make the field of type struct scsi_lun instead of the cast.
PATCH 10/12 qla2xxx: Correct fw-loader module-use referencing.
In reply to Andrew VasquezSubject: Correct fw-loader module-use referencing.
Original implementation would allow a firmware-loader module to be removed during I/O.
---
drivers/scsi/qla2xxx/ql2100.c | 5 ++ drivers/scsi/qla2xxx/ql2200.c | 5 ++ drivers/scsi/qla2xxx/ql2300.c | 6 +++ drivers/scsi/qla2xxx/ql2322.c | 5 ++ drivers/scsi/qla2xxx/ql2400.c | 8 +++- drivers/scsi/qla2xxx/ql6312.c | 6 +++ drivers/scsi/qla2xxx/qla_def.h | 2 - drivers/scsi/qla2xxx/qla_os.c | 85 ++++++++++++++-------------------------- 8 files changed, 63 insertions(+), 59 deletions(-)
applies-to: 5b9c41f9a7562c87e6dbaa6a602b0842d9694896 efa63354c35d8eccf0a7a30a0a9902dd9c461843
drivers/scsi/qla2xxx/ql2100.c +5 -0
@@ -30,11 +30,16 @@ static struct qla_fw_info qla_fw_tbl[] = { FW_INFO_ADDR_NOMORE, }, }; +static struct scsi_host_template qla_driver_template = { + .module =THIS_MODULE , +}; +static struct qla_board_info qla_board_tbl = { .drv_name = qla_driver_name, .isp_name ="ISP2100" , .fw_info = qla_fw_tbl, + .sht = &qla_driver_template, };static struct pci_device_id qla2100_pci_tbl[] = {
drivers/scsi/qla2xxx/ql2200.c +5 -0
@@ -30,11 +30,16 @@ static struct qla_fw_info qla_fw_tbl[] = { FW_INFO_ADDR_NOMORE, }, }; +static struct scsi_host_template qla_driver_template = { + .module =THIS_MODULE , +}; +static struct qla_board_info qla_board_tbl = { .drv_name = qla_driver_name, .isp_name ="ISP2200" , .fw_info = qla_fw_tbl, + .sht = &qla_driver_template, };static struct pci_device_id qla2200_pci_tbl[] = {
drivers/scsi/qla2xxx/ql2300.c +6 -0
@@ -29,16 +29,22 @@ static struct qla_fw_info qla_fw_tbl[] = { FW_INFO_ADDR_NOMORE, }, }; +static struct scsi_host_template qla_driver_template = { + .module =THIS_MODULE , +}; +static struct qla_board_info qla_board_tbl[] = { { .drv_name = qla_driver_name, .isp_name ="ISP2300" , .fw_info = qla_fw_tbl, + .sht = &qla_driver_template, }, { .drv_name = qla_driver_name, .isp_name ="ISP2312" , .fw_info = qla_fw_tbl, + .sht = &qla_driver_template, }, };
drivers/scsi/qla2xxx/ql2322.c +5 -0
@@ -46,10 +46,15 @@ static struct qla_fw_info qla_fw_tbl[] = { FW_INFO_ADDR_NOMORE, }, }; +static struct scsi_host_template qla_driver_template = { + .module =THIS_MODULE , +}; +static struct qla_board_info qla_board_tbl = { .drv_name = qla_driver_name, .isp_name ="ISP2322" , .fw_info = qla_fw_tbl, + .sht = &qla_driver_template, };static struct pci_device_id qla2322_pci_tbl[] = {
drivers/scsi/qla2xxx/ql2400.c +6 -2
@@ -36,20 +36,24 @@ static struct qla_fw_info qla_fw_tbl[] = { FW_INFO_ADDR_NOMORE, }, }; +static struct scsi_host_template qla_driver_template = { + .module =THIS_MODULE , +}; +static struct qla_board_info qla_board_tbl[] = { { .drv_name = qla_driver_name, .isp_name ="ISP2422" , .fw_info = qla_fw_tbl, .fw_fname ="ql2400_fw.bin" , - .alternate_sht =1 , + .sht = &qla_driver_template, }, { .drv_name = qla_driver_name, .isp_name ="ISP2432" , .fw_info = qla_fw_tbl, .fw_fname ="ql2400_fw.bin" , - .alternate_sht =1 , + .sht = &qla_driver_template, }, };
drivers/scsi/qla2xxx/ql6312.c +6 -0
@@ -28,16 +28,22 @@ static struct qla_fw_info qla_fw_tbl[] = { FW_INFO_ADDR_NOMORE, }, }; +static struct scsi_host_template qla_driver_template = { + .module =THIS_MODULE , +}; +static struct qla_board_info qla_board_tbl[] = { { .drv_name = qla_driver_name, .isp_name ="ISP6312" , .fw_info = qla_fw_tbl, + .sht = &qla_driver_template, }, { .drv_name = qla_driver_name, .isp_name ="ISP6322" , .fw_info = qla_fw_tbl, + .sht = &qla_driver_template, }, };
drivers/scsi/qla2xxx/qla_def.h +1 -1
@@ -2119,7 +2119,7 @@ struct qla_board_info {char isp_name[8 ];struct qla_fw_info *fw_info;char *fw_fname; -int alternate_sht; +struct scsi_host_template *sht; };struct fw_blob {
drivers/scsi/qla2xxx/qla_os.c +29 -56
103 lines not on this page · raw message
---
0.99.8.GIT
Signature · 1 line
Andrew Vasquez
PATCH 11/12 qla2xxx: Add an 'Issue LIP' device attribute.
In reply to Andrew VasquezSubject: Add an 'Issue LIP' device attribute.
Add a scsi_host device attribute to allow a user to initiate a LIP.
---
drivers/scsi/qla2xxx/qla_attr.c | 16 ++++++++++++++++ drivers/scsi/qla2xxx/qla_os.c | 8 ++++++++ 2 files changed, 24 insertions(+), 0 deletions(-)
applies-to: a66456df428081210a3b7117c57f277e69484bce e3f47b3b40d29beb69223d2b479d34a5bc76c518
drivers/scsi/qla2xxx/qla_attr.c +16 -0
@@ -384,6 +384,20 @@ qla2x00_zio_timer_store(struct class_devreturn strlen (buf); } +static ssize_t +qla2x00_issue_lip (struct class_device *cdev,const char *buf,size_t count) +{ +scsi_qla_host_t *ha =to_qla_host (class_to_shost (cdev)); +int val =0 ; + +if ((sscanf (buf,"%d" , &val) !=1 ) || val !=1 ) +return -EINVAL ; + +set_bit (LOOP_RESET_NEEDED , &ha->dpc_flags); + +return strlen (buf); +} + static CLASS_DEVICE_ATTR(driver_version, S_IRUGO, qla2x00_drvr_version_show, NULL); static CLASS_DEVICE_ATTR(fw_version, S_IRUGO, qla2x00_fw_version_show, NULL);
@@ -398,6 +412,7 @@ static CLASS_DEVICE_ATTR(zio, S_IRUGO | qla2x00_zio_store); static CLASS_DEVICE_ATTR(zio_timer, S_IRUGO | S_IWUSR, qla2x00_zio_timer_show, qla2x00_zio_timer_store); +static CLASS_DEVICE_ATTR(issue_lip, S_IWUSR, NULL, qla2x00_issue_lip);struct class_device_attribute *qla2x00_host_attrs[] = { &class_device_attr_driver_version,
@@ -411,6 +426,7 @@ struct class_device_attribute *qla2x00_h &class_device_attr_state, &class_device_attr_zio, &class_device_attr_zio_timer, + &class_device_attr_issue_lip, NULL, };
drivers/scsi/qla2xxx/qla_os.c +8 -0
@@ -2074,6 +2074,13 @@ qla2x00_do_dpc(void *data) ha->host_no)); } +if (test_and_clear_bit (LOOP_RESET_NEEDED , &ha->dpc_flags)) { +DEBUG (printk ("scsi(%ld): dpc: sched loop_reset()\n" , + ha->host_no)); + +qla2x00_loop_reset (ha); + } +if (test_and_clear_bit (RESET_MARKER_NEEDED , &ha->dpc_flags) && (!(test_and_set_bit (RESET_ACTIVE , &ha->dpc_flags)))) {
@@ -2375,6 +2382,7 @@ qla2x00_timer(scsi_qla_host_t *ha)/* Schedule the DPC routine if needed */ if ((test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags) || test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags) || + test_bit(LOOP_RESET_NEEDED, &ha->dpc_flags) || start_dpc || test_bit(LOGIN_RETRY_NEEDED, &ha->dpc_flags) || test_bit(RESET_MARKER_NEEDED, &ha->dpc_flags) ||
---
0.99.8.GIT
Signature · 1 line
Andrew Vasquez
Re: [PATCH 11/12] qla2xxx: Add an 'Issue LIP' device attribute.
Quoted 4 lines · Andrew Vasquez
Subject: Add an 'Issue LIP' device attribute.
Add a
scsi_hostdevice attribute to allow a user to initiate a LIP.
This kind of thing belongs into the transport class so that we have a common API over all HBA drivers.
Re: [PATCH 11/12] qla2xxx: Add an 'Issue LIP' device attribute.
Quoted 8 lines · Christoph Hellwig
Quoted 4 lines · Andrew Vasquez
Subject: Add an 'Issue LIP' device attribute.
Add a
scsi_hostdevice attribute to allow a user to initiate a LIP.This kind of thing belongs into the transport class so that we have a common API over all HBA drivers.
Makes sense. I'll get something posted on Monday.
Thanks,
Andrew
Re: [PATCH 11/12] qla2xxx: Add an 'Issue LIP' device attribute.
In reply to Christoph HellwigQuoted 8 lines · Christoph Hellwig
Quoted 4 lines · Andrew Vasquez
Subject: Add an 'Issue LIP' device attribute.
Add a
scsi_hostdevice attribute to allow a user to initiate a LIP.This kind of thing belongs into the transport class so that we have a common API over all HBA drivers.
Ok, here's a patch to add such a common API for fc transport users. Relevant LLD changes (lpfc and qla2xxx) also present.
Reasonable?
--
AV
---
drivers/scsi/scsi_transport_fc.c +26 -2
@@ -222,7 +222,7 @@ static void fc_rport_terminate(struct fc*/ #define FC_STARGET_NUM_ATTRS 3#define FC_RPORT_NUM_ATTRS 9 -#define FC_HOST_NUM_ATTRS 15 +#define FC_HOST_NUM_ATTRS 16struct fc_internal {struct scsi_transport_template t;
@@ -715,9 +715,11 @@ static FC_CLASS_DEVICE_ATTR(host, field, count++#define SETUP_PRIVATE_HOST_ATTRIBUTE_RW (field) \ +{ \ i->private_host_attrs[count] = class_device_attr_host_##field; \ i->host_attrs[count] = &i->private_host_attrs[count]; \ - count++ + count++; \ +}/* Fixed Host Attributes */
@@ -848,6 +850,26 @@ static FC_CLASS_DEVICE_ATTR(host, tgtid_ show_fc_private_host_tgtid_bind_type, store_fc_private_host_tgtid_bind_type); +static ssize_t +store_fc_private_host_issue_lip (struct class_device *cdev, +const char *buf,size_t count) +{ +struct Scsi_Host *shost =transport_class_to_shost (cdev); +struct fc_internal *i =to_fc_internal (shost->transportt); +int ret; + +/* ignore any data value written to the attribute */ +if (i->f->issue_fc_host_lip) { + ret = i->f->issue_fc_host_lip (shost); +return ret ? ret: count; + } + +return -ENOENT ; +} + +static FC_CLASS_DEVICE_ATTR(host, issue_lip, S_IWUSR, NULL, + store_fc_private_host_issue_lip); +/* * Host Statistics Management */
@@ -1114,6 +1136,8 @@ fc_attach_transport(struct fc_function_t/* Transport-managed attributes */ SETUP_PRIVATE_HOST_ATTRIBUTE_RW (tgtid_bind_type); +if (ft->issue_fc_host_lip) +SETUP_PRIVATE_HOST_ATTRIBUTE_RW (issue_lip);BUG_ON (count >FC_HOST_NUM_ATTRS );
include/scsi/scsi_transport_fc.h +2 -0
@@ -384,6 +384,8 @@ struct fc_function_template {struct fc_host_statistics * (*get_fc_host_stats)(struct Scsi_Host *);void (*reset_fc_host_stats)(struct Scsi_Host *); +int (*issue_fc_host_lip)(struct Scsi_Host *); +/* allocation lengths for host-specific data */ u32 dd_fcrport_size;
drivers/scsi/lpfc/lpfc_attr.c +5 -11
@@ -200,19 +200,13 @@ lpfc_num_discovered_ports_show(struct cl } -static ssize_t -lpfc_issue_lip (struct class_device *cdev,const char *buf,size_t count) +static int +lpfc_issue_lip (struct Scsi_Host *host) { -struct Scsi_Host *host =class_to_shost (cdev);struct lpfc_hba *phba = (struct lpfc_hba *) host->hostdata[0 ]; -int val =0 ;LPFC_MBOXQ_t *pmboxq;int mbxstatus =MBXERR_ERROR ; -if ((sscanf (buf,"%d" , &val) !=1 ) || - (val !=1 )) -return -EINVAL ; -if ((phba->fc_flag &FC_OFFLINE_MODE ) || (phba->hba_state !=LPFC_HBA_READY ))return -EPERM ;
@@ -234,7 +228,7 @@ lpfc_issue_lip (struct class_device *cdeif (mbxstatus ==MBXERR_ERROR )return -EIO ; -return strlen (buf); +return 0 ; } static ssize_t
@@ -364,7 +358,6 @@ static CLASS_DEVICE_ATTR(lpfc_drvr_versi NULL); static CLASS_DEVICE_ATTR(management_version, S_IRUGO, management_version_show, NULL); -static CLASS_DEVICE_ATTR(issue_lip, S_IWUSR, NULL, lpfc_issue_lip); static CLASS_DEVICE_ATTR(board_online, S_IRUGO | S_IWUSR, lpfc_board_online_show, lpfc_board_online_store);
@@ -537,7 +530,6 @@ struct class_device_attribute *lpfc_host &class_device_attr_lpfc_max_luns, &class_device_attr_nport_evt_cnt, &class_device_attr_management_version, - &class_device_attr_issue_lip, &class_device_attr_board_online, NULL, };
@@ -1234,6 +1226,8 @@ struct fc_function_template lpfc_transpo .get_starget_port_name = lpfc_get_starget_port_name, .show_starget_port_name = 1, + + .issue_fc_host_lip = lpfc_issue_lip, };void
drivers/scsi/qla2xxx/qla_attr.c +10 -0
@@ -432,6 +432,15 @@ qla2x00_set_rport_loss_tmo(struct fc_rpo rport->dev_loss_tmo = ha->port_down_retry_count +5 ; } +static int +qla2x00_issue_lip (struct Scsi_Host *shost) +{ +scsi_qla_host_t *ha =to_qla_host (shost); + +set_bit (LOOP_RESET_NEEDED , &ha->dpc_flags); +return 0 ; +} +struct fc_function_template qla2xxx_transport_functions = { .show_host_node_name =1 ,
@@ -455,6 +464,7 @@ struct fc_function_template qla2xxx_tran .set_rport_dev_loss_tmo = qla2x00_set_rport_loss_tmo, .show_rport_dev_loss_tmo = 1, + .issue_fc_host_lip = qla2x00_issue_lip, };void
drivers/scsi/qla2xxx/qla_os.c +7 -0
@@ -2186,6 +2186,12 @@ qla2x00_do_dpc(void *data) ha->host_no)); } +if (test_and_clear_bit (LOOP_RESET_NEEDED , &ha->dpc_flags)) { +DEBUG (printk ("scsi(%ld): dpc: sched loop_reset()\n" , + ha->host_no)); +qla2x00_loop_reset (ha); + } +if (test_and_clear_bit (RESET_MARKER_NEEDED , &ha->dpc_flags) && (!(test_and_set_bit (RESET_ACTIVE , &ha->dpc_flags)))) {
@@ -2487,6 +2493,7 @@ qla2x00_timer(scsi_qla_host_t *ha)/* Schedule the DPC routine if needed */ if ((test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags) || test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags) || + test_bit(LOOP_RESET_NEEDED, &ha->dpc_flags) || start_dpc || test_bit(LOGIN_RETRY_NEEDED, &ha->dpc_flags) || test_bit(RESET_MARKER_NEEDED, &ha->dpc_flags) ||
Re: [PATCH 11/12] qla2xxx: Add an 'Issue LIP' device attribute.
Quoted 4 lines · Andrew Vasquez
Ok, here's a patch to add such a common API for fc transport users. Relevant LLD changes (lpfc and qla2xxx) also present.
Reasonable?
Looks good, thanks.
And sorry for not noticing that lpfc sneaked it in already, otherwise I would have made Emulex do this :)
PATCH 12/12 qla2xxx: Update version number to 8.01.02-k.
In reply to Andrew VasquezSubject: Update version number to 8.01.02-k.
---
drivers/scsi/qla2xxx/qla_version.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
applies-to: f44b3c5228b9cfb0393117daae32056473bae8eb 056de35b9be3bd58c4e6760f0629a1a931405e38
drivers/scsi/qla2xxx/qla_version.h +2 -2
@@ -7,9 +7,9 @@/* * Driver version */ -#define QLA2XXX_VERSION "8.01.00-k" +#define QLA2XXX_VERSION "8.01.02-k"#define QLA_DRIVER_MAJOR_VER 8#define QLA_DRIVER_MINOR_VER 1 -#define QLA_DRIVER_PATCH_VER 0 +#define QLA_DRIVER_PATCH_VER 2#define QLA_DRIVER_BETA_VER 0
---
0.99.8.GIT
Signature · 1 line
Andrew Vasquez
Quoted 4 lines · Andrew Vasquez
James,
Here's a set of patches which add a handful of features to the qla2xxx driver. Please queue for post-2.6.14 inclusion.
Given all the activity promted with this patchset, could you provide some insight on which patches you have queued for inclusion into scsi-misc?
The scsi-misc-2.6 GIT tree has been dormant for some time and I would like to have some direction on which patches I should cherrypick and rebase given a number of updates to linux-2.6.git for the qla2xxx driver as well as the rport interface updates proposed by James S.
Thanks,
AV
Quoted 8 lines · Andrew Vasquez
Given all the activity promted with this patchset, could you provide some insight on which patches you have queued for inclusion into scsi-misc?
The scsi-misc-2.6 GIT tree has been dormant for some time and I would like to have some direction on which patches I should cherrypick and rebase given a number of updates to linux-2.6.git for the qla2xxx driver as well as the rport interface updates proposed by James S.
Actually, none at the moment. When a patch set comes as a list of patches, I generally tend to assume that they are all interdependent (although sometimes if there's objection to only a single component patch, I will pull that out if possible).
So for the monolithic set, I'll put them in when all the objections are worked out on the list. If there are pieces I can apply now which everyone's happy with, tell me what they are.
James
Quoted 10 lines · James Bottomley
Quoted 8 lines · Andrew Vasquez
Given all the activity promted with this patchset, could you provide some insight on which patches you have queued for inclusion into scsi-misc?
The scsi-misc-2.6 GIT tree has been dormant for some time and I would like to have some direction on which patches I should cherrypick and rebase given a number of updates to linux-2.6.git for the qla2xxx driver as well as the rport interface updates proposed by James S.
Quoted 8 lines
Actually, none at the moment. When a patch set comes as a list of patches, I generally tend to assume that they are all interdependent (although sometimes if there's objection to only a single component patch, I will pull that out if possible).
So for the monolithic set, I'll put them in when all the objections are worked out on the list. If there are pieces I can apply now which everyone's happy with, tell me what they are.
Ok, how about I rework my patchset based off linux-2.6.git with scsi-misc-2.6.git merged and the rport interface updates proposed by James S:
[PATCH - repost] update fc_transport for removal of block/unblock functions
http://marc.theaimsgroup.com/?l=linux-scsi&m=112965152011520&w=2
that would seem like a reasonable base to begin with, no?
--
Andrew Vasquez