- 24 2月, 2016 2 次提交
-
-
由 Himanshu Madhani 提交于
Set bit 12 of additional firmware options 3 to let firmware hold status IOCB until ABTS response is received from Target. Signed-off-by: NHimanshu Madhani <himanshu.madhani@qlogic.com> Signed-off-by: NGiridhar Malavali <giridhar.malavali@qlogic.com> Reviewed-by: NJohannes Thumshirn <jthumshirn@suse.de> Reviewed-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Joe Carnuccio 提交于
Signed-off-by: NJoe Carnuccio <joe.carnuccio@qlogic.com> Signed-off-by: NHimanshu Madhani <himanshu.madhani@qlogic.com> Reviewed-by: NJohannes Thumshirn <jthumshirn@suse.de> Reviewed-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
- 07 2月, 2016 1 次提交
-
-
由 Quinn Tran 提交于
[ Upstream Commit 84e32a06 ] Commit 84e32a06 ("qla2xxx: Use pci_enable_msix_range() instead of pci_enable_msix()") introduced a regression when target mode is enabled. In qla24xx_enable_msix(), ha->max_rsp_queues was incorrectly set to a value higher than the number of response queues allocated causing an invalid dereference. Specifically here in qla2x00_init_rings(): *rsp->in_ptr = 0; Add additional check to make sure the pointer is valid. following call stack will be seen ---- 8< ---- RIP: 0010:[<ffffffffa02ccadc>] [<ffffffffa02ccadc>] qla2x00_init_rings+0xdc/0x320 [qla2xxx] RSP: 0018:ffff880429447dd8 EFLAGS: 00010082 .... Call Trace: [<ffffffffa02ceb40>] qla2x00_abort_isp+0x170/0x6b0 [qla2xxx] [<ffffffffa02c6f77>] qla2x00_do_dpc+0x357/0x7f0 [qla2xxx] [<ffffffffa02c6c20>] ? qla2x00_relogin+0x260/0x260 [qla2xxx] [<ffffffff8107d2c9>] kthread+0xc9/0xe0 [<ffffffff8107d200>] ? flush_kthread_worker+0x90/0x90 [<ffffffff8172cc6f>] ret_from_fork+0x3f/0x70 [<ffffffff8107d200>] ? flush_kthread_worker+0x90/0x90 ---- 8< ---- Cc: <stable@vger.kernel.org> Signed-off-by: NQuinn Tran <quinn.tran@qlogic.com> Signed-off-by: NHimanshu Madhani <himanshu.madhani@qlogic.com> Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
-
- 08 1月, 2016 5 次提交
-
-
由 Dilip Kumar Uppugandla 提交于
Driver has following initialization sequence for Target mode 1. Driver initialization starts 2. ISP Abort is scheduled when the target is enabled. qla2xxx [0000:04:00.0]-4807:25: ISP abort scheduled qla2xxx [0000:04:00.0]-00af:25: Performing ISP error recovery - ha=ffff880caa9e0000. 3. DPC thread starts the ISP Abort 4. While DPC is resetting the chip and initializing the firmware, we get async events from the firmware about P2P mode, LOOP UP and PORT UPDATE. 5. PRLI from a initiator is delivered to us followed by a PLOGI and then a SCSI command which creates a session. 6. If the SCSI command is a WRITE in this case, we issue XFR RDY and it gets dropped as can be seen with messages RESET-XFR because ISP Abort is still active qla2xxx [0000:04:00.0]-e902:25: RESET-XFR active/old-count/new-count = 1/1/1. 7. If the SCSI command is a READ, we issue RESPONSE and they get dropped as well because Abort is still active. qla2xxx [0000:04:00.0]-e901:25: RESET-RSP active/old-count/new-count = 1/1/1 8. Now eventually, ISP Abort finishes clearing the DPC flags. qla2xxx [0000:04:00.0]-8822:25: qla2x00_abort_isp succeeded. qla2xxx [0000:04:00.0]-4808:25: ISP abort end. 9. Since we dropped SCSI commands silently (without any responses sent to the initiator) initiator waits for a SCSI timeout (which is 60 seconds in our case), Sends an ABTS which fails since there no se_cmd found for the tag that ABTS is referencing as the commands were cleaned up in Step 6 and 7. 10. Initiator send an IO after the ABTS which succeed fine. To fix the above case, the following changes have been made: - To prevent target from dropping commands silently, use the online flag instead to check for an active chip reset. Once the port is online during a chip reset phase, we are good to process the commands. - Clean up qla2x00_restart_isp to not set the online flag and process ATIO as it is unnecessary. During a chip reset, interrupts are enabled only after setting the online flag to 1, so ATIO's won't be missed and hence no need to process ATIO's after setting the online flag. Signed-off-by: NDilip Kumar Uppugandla <dilip@purestorage.com> Signed-off-by: NHimanshu Madhani <himanshu.madhani@qlogic.com> Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
-
由 Quinn Tran 提交于
99% of the time the ATIOQ has SCSI command. The other 1% of time is something else. Most of the time this interrupt does not need to hold the hardware_lock. We're moving the ATIO interrupt thread to a different lock to reduce lock contention. Signed-off-by: NQuinn Tran <quinn.tran@qlogic.com> Signed-off-by: NHimanshu Madhani <himanshu.madhani@qlogic.com> Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
-
由 Quinn Tran 提交于
DebugFS now will show fw_resource_count node. FW Resource count Original TGT exchg count[0] current TGT exchg count[0] original Initiator Exchange count[2048] Current Initiator Exchange count[2048] Original IOCB count[2078] Current IOCB count[2067] MAX VP count[254] MAX FCF count[0] Signed-off-by: NQuinn Tran <quinn.tran@qlogic.com> Signed-off-by: NHimanshu Madhani <himanshu.madhani@qlogic.com> Reviewed-by: NHannes Reinecke <hare@suse.com> Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
-
由 Himanshu Madhani 提交于
This patch enables Exchange offload support in Qlogic ISP. To enable exchange offload with Qlogic ISP24XX/25XX/26XX, set module parameter ql2xexchoffld to any non-zero number. This will alow ISP firmware to store exchange data structures used by firmware to host memory provided by driver. ISP firmware can supports upto 32k total active exchanges. Signed-off-by: NHimanshu Madhani <himanshu.madhani@qlogic.com> Signed-off-by: NGiridhar Malavali <giridhar.malavali@qlogic.com> Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
-
由 Himanshu Madhani 提交于
This patch enables Extended Logins support in Qlogic ISP. To enable extended login with Qlogic ISP24XX/25XX/26XX, set module parameter ql2xexlogins to any non-zero number. This will alow ISP firmware to store port database structure information of remote login sessions to host memory provided by driver. ISP firmware supports upto 16k total logins. Signed-off-by: NHimanshu Madhani <himanshu.madhani@qlogic.com> Signed-off-by: NGiridhar Malavali <giridhar.malavali@qlogic.com> Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
-
- 27 8月, 2015 5 次提交
-
-
由 Joe Carnuccio 提交于
Signed-off-by: NJoe Carnuccio <joe.carnuccio@qlogic.com> Signed-off-by: NHimanshu Madhani <himanshu.madhani@qlogic.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Joe Carnuccio 提交于
Execute qla25xx_manipulate_risc_semaphore() only for ssdid 0x0175 and 0x0240. Signed-off-by: NJoe Carnuccio <joe.carnuccio@qlogic.com> Signed-off-by: NHimanshu Madhani <himanshu.madhani@qlogic.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Bart Van Assche 提交于
Signed-off-by: NBart Van Assche <bart.vanassche@sandisk.com> Acked-by: NHimanshu Madhani <himanshu.madhani@qlogic.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Bart Van Assche 提交于
Whether htonl() or __constant_htonl() is used, if the argument is a constant the conversion happens at compile time. Hence leave out the __constant_ prefix for this and other endianness conversion functions. This improves source code readability. [jejb: checkpatch fixes] Signed-off-by: NBart Van Assche <bart.vanassche@sandisk.com> Acked-by: NHimanshu Madhani <himanshu.madhani@qlogic.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Bart Van Assche 提交于
Detected these variables by building with W=1. Signed-off-by: NBart Van Assche <bart.vanassche@sandisk.com> Acked-by: NHimanshu Madhani <himanshu.madhani@qlogic.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
- 25 7月, 2015 6 次提交
-
-
由 Alexei Potashnik 提交于
There are multiple reasons for disabling this: 1. It provides no functional benefit. We pretty much only get a few more sysfs entries for each port, but all that information is already available from /sys/kernel/debug/target/qla-session-X 2. It already only works in private-loop mode. By disabling we'll be getting more uniform behavior with fabric mode. 3. It creates complications for the new PLOGI handling mechanism: scsi_transport_fc port deletion timer could race with new session from initiator and cause logout after successful login. Cc: <stable@vger.kernel.org> # v3.18+ Signed-off-by: NAlexei Potashnik <alexei@purestorage.com> Signed-off-by: NHimanshu Madhani <himanshu.madhani@qlogic.com> Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
-
由 Alexei Potashnik 提交于
RSCN processing in qla2xxx driver can run in parallel with ELS/IO processing. As such the decision to remove disappeared fc port's session could be stale, because a new login sequence has occurred since and created a brand new session. Previous mechanism of dealing with this by delaying deletion request was prone to erroneous deletions if the event that was supposed to cancel the deletion never arrived or has been delayed in processing. New mechanism relies on a time-like generation counter to serialize RSCN updates relative to ELS/IO updates. Cc: <stable@vger.kernel.org> # v3.18+ Signed-off-by: NAlexei Potashnik <alexei@purestorage.com> Signed-off-by: NHimanshu Madhani <himanshu.madhani@qlogic.com> Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
-
由 Alexei Potashnik 提交于
- keep qla_tgt_sess object on the session list until it's freed - modify use of sess->deleted flag to differentiate delayed session deletion that can be cancelled from irreversible one: QLA_SESS_DELETION_PENDING vs QLA_SESS_DELETION_IN_PROGRESS - during IN_PROGRESS deletion all newly arrived commands and TMRs will be rejected, existing commands and TMRs will be terminated when given by the core to the fabric or simply dropped if session logout has already happened (logout terminates all existing exchanges) - new PLOGI will initiate deletion of the following sessions (unless deletion is already IN_PROGRESS): - with the same port_name (with logout) - different port_name, different loop_id but the same port_id (with logout) - different port_name, different port_id, but the same loop_id (without logout) - additionally each new PLOGI will store imm notify iocb in the same port_name session being deleted. When deletion process completes this iocb will be acked. Only the most recent PLOGI iocb is stored. The older ones will be terminated when replaced. - new PRLI will initiate deletion of the following sessions (unless deletion is already IN_PROGRESS): - different port_name, different port_id, but the same loop_id (without logout) Cc: <stable@vger.kernel.org> # v3.18+ Signed-off-by: NAlexei Potashnik <alexei@purestorage.com> Acked-by: NQuinn Tran <quinn.tran@qlogic.com> Signed-off-by: NHimanshu Madhani <himanshu.madhani@qlogic.com> Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
-
由 Roland Dreier 提交于
To fix some issues talking to ESX, this patch modifies the qla2xxx driver so that it never logs into remote ports. This has the side effect of getting rid of the "rports" entirely, which means we never log out of initiators and never tear down sessions when an initiator goes away. This is mostly OK, except that we can run into trouble if we have initiator A assigned FC address X:Y:Z by the fabric talking to us, and then initiator A goes away. Some time (could be a long time) later, initiator B comes along and also gets FC address X:Y:Z (which is available again, because initiator A is gone). If initiator B starts talking to us, then we'll still have the session for initiator A, and since we look up incoming IO based on the FC address X:Y:Z, initiator B will end up using ACLs for initiator A. Fix this by: 1. Handling RSCN events somewhat differently; instead of completely skipping the processing of fcports, we look through the list, and if an fcport disappears, we tell the target code the tear down the session and tell the HBA FW to release the N_Port handle. 2. Handling "port down" events by flushing all of our sessions. The firmware was already releasing the N_Port handle but we want the target code to drop all the sessions too. Cc: <stable@vger.kernel.org> # v3.18+ Signed-off-by: NRoland Dreier <roland@purestorage.com> Signed-off-by: NAlexei Potashnik <alexei@purestorage.com> Acked-by: NQuinn Tran <quinn.tran@qlogic.com> Signed-off-by: NHimanshu Madhani <himanshu.madhani@qlogic.com> Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
-
由 Himanshu Madhani 提交于
Signed-off-by: NHimanshu Madhani <himanshu.madhani@qlogic.com> Signed-off-by: NGiridhar Malavali <giridhar.malavali@qlogic.com> Reviewed-by: NNicholas Bellinger <nab@linux-iscsi.org> Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
-
由 Saurav Kashyap 提交于
[ Upstream commit ef86cb20 ] This patch fixes a kernel panic for qla2xxx Target core Module driver introduced by a fix in the qla2xxx initiator code. Commit ef86cb20 ("qla2xxx: Mark port lost when we receive an RSCN for it.") introduced the regression for qla2xxx Target driver. Stack trace will have following signature --- <NMI exception stack> --- [ffff88081faa3cc8] _raw_spin_lock_irqsave at ffffffff815b1f03 [ffff88081faa3cd0] qlt_fc_port_deleted at ffffffffa096ccd0 [qla2xxx] [ffff88081faa3d20] qla2x00_schedule_rport_del at ffffffffa0913831[qla2xxx] [ffff88081faa3d50] qla2x00_mark_device_lost at ffffffffa09159c5[qla2xxx] [ffff88081faa3db0] qla2x00_async_event at ffffffffa0938d59 [qla2xxx] [ffff88081faa3e30] qla24xx_msix_default at ffffffffa093a326 [qla2xxx] [ffff88081faa3e90] handle_irq_event_percpu at ffffffff810a7b8d [ffff88081faa3ee0] handle_irq_event at ffffffff810a7d32 [ffff88081faa3f10] handle_edge_irq at ffffffff810ab6b9 [ffff88081faa3f30] handle_irq at ffffffff8100619c [ffff88081faa3f70] do_IRQ at ffffffff815b4b1c --- <IRQ stack> --- Cc: <stable@vger.kernel.org> # v3.18+ Signed-off-by: NSaurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: NHimanshu Madhani <himanshu.madhani@qlogic.com> Reviewed-by: NNicholas Bellinger <nab@linux-iscsi.org> Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
-
- 13 6月, 2015 1 次提交
-
-
由 Bart Van Assche 提交于
Detected by smatch. Signed-off-by: NBart Van Assche <bvanassche@acm.org> Acked-by: NHimanshu Madhani <himanshu.madhani@qlogic.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
- 10 4月, 2015 2 次提交
-
-
由 Himanshu Madhani 提交于
Signed-off-by: NGiridhar Malavali <giridhar.malavali@qlogic.com> Signed-off-by: NHimanshu Madhani <himanshu.madhani@qlogic.com> Reviewed-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Chad Dupuis 提交于
Signed-off-by: NChad Dupuis <chad.dupuis@qlogic.com> Signed-off-by: NHimanshu Madhani <himanshu.madhani@qlogic.com> Reviewed-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
- 07 3月, 2015 1 次提交
-
-
由 Yannick Guerrini 提交于
Change 'Fimware' to 'Firmware' Change 'enalbled' to 'enabled' Signed-off-by: NYannick Guerrini <yguerrini@tomshardware.fr> Acked-by: NSaurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: NJiri Kosina <jkosina@suse.cz>
-
- 15 12月, 2014 1 次提交
-
-
由 Laurence Oberman 提交于
When we have an rport disconnect we race during rport deletion and re-connection resulting in a panic. When we do this, we call fc_remote_port_del() just before we do the calls to re-establish the session with the FC transport with fc_remote_port_add() and then fc_remote_port_rolechg(). If we remove the call to fc_remote_port_del() before re-establishing the connection this prevents the race. This patch has resolved this for multiple customers via test kernels. Suggested by Chad Dupuis, implemented and tested by Laurence Oberman. Signed-off-by: NLaurence Oberman <loberman@redhat.com> Acked-by: NChad Dupuis <chad.dupuis@qlogic.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
- 25 9月, 2014 8 次提交
-
-
由 Arun Easi 提交于
A chip reset can occur after driver submits command to the stack. Abort command processing if a chip reset has occurred or in progress when you get a follow up for a command. Signed-off-by: NArun Easi <arun.easi@qlogic.com> Signed-off-by: NSaurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Chad Dupuis 提交于
If we fail to load one of the segments of firmware fail the operation instead of trying to continue which will lead to a system crash since the pointers to the next segment will not be updated correctly. Signed-off-by: NChad Dupuis <chad.dupuis@qlogic.com> Signed-off-by: NSaurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Himanshu Madhani 提交于
For FA-WWPN capable device, ISP2031 and ISP27XX, when loop dead is detected by a driver, restore WWPN from NVRAM. Signed-off-by: NHimanshu Madhani <himanshu.madhani@qlogic.com> Signed-off-by: NSaurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Chad Dupuis 提交于
Signed-off-by: NChad Dupuis <chad.dupuis@qlogic.com> Signed-off-by: NSaurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Himanshu Madhani 提交于
Signed-off-by: NHimanshu Madhani <himanshu.madhani@qlogic.com> Signed-off-by: NSaurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Quinn Tran 提交于
Declaration error of mb array in qla2x00_iidma_fcport cause data to be written beyond the array. This ends up causing stack corruption. Signed-off-by: NQuinn Tran <quinn.tran@qlogic.com> Signed-off-by: NSaurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Joe Carnuccio 提交于
Add support for the D-port (diagnostic port) fabric switch feature. (Fabric Switch initiates loopback style port testing) Signed-off-by: NJoe Carnuccio <joe.carnuccio@qlogic.com> Signed-off-by: NSaurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Joe Carnuccio 提交于
Signed-off-by: NJoe Carnuccio <joe.carnuccio@qlogic.com> Signed-off-by: NSaurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
- 26 7月, 2014 1 次提交
-
-
由 Joe Perches 提交于
Use the zeroing function instead of dma_alloc_coherent & memset(,0,) Signed-off-by: NJoe Perches <joe@perches.com> Acked-by: NSaurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
- 19 5月, 2014 5 次提交
-
-
由 Chad Dupuis 提交于
Attempting to do any logins from the SCSI reset handler can lead to a deadlock scenario if a rport times out and the FC transport layer. Move doing any port logins to the DPC thread so as not to impede the progress of the SCSI error handler thread and avoid deadlock situations. Signed-off-by: NChad Dupuis <chad.dupuis@qlogic.com> Signed-off-by: NSaurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Joe Carnuccio 提交于
For ISP27xx use the request/response queue index shadow registers to avoid directly access them on the PCI bus. Signed-off-by: NJoe Carnuccio <joe.carnuccio@qlogic.com> Signed-off-by: NSaurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Chad Dupuis 提交于
Signed-off-by: NChad Dupuis <chad.dupuis@qlogic.com> Signed-off-by: NSaurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Armen Baloyan 提交于
Signed-off-by: NArmen Baloyan <armen.baloyan@qlogic.com> Signed-off-by: NSaurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Hiral Patel 提交于
Signed-off-by: NHiral Patel <hiral.patel@qlogic.com> Signed-off-by: NSaurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
- 20 3月, 2014 1 次提交
-
-
由 Chad Dupuis 提交于
Fixes some build warnings such as: drivers/scsi/qla2xxx/qla_attr.c:162:6: warning: format '%lx' expects argument of type 'long unsigned int', but argument 6 has type 'size_t'" and drivers/scsi/qla2xxx/qla_init.c:5198:7: warning: format '%lx' expects argument of type 'long unsigned int', but argument 5 has type 'uint32_t' [-Wformat] Signed-off-by: NChad Dupuis <chad.dupuis@qlogic.com> Signed-off-by: NSaurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
- 16 3月, 2014 1 次提交
-
-
由 Armen Baloyan 提交于
Send aborts to the firmware via the request/response queue mechanism. Signed-off-by: NArmen Baloyan <armen.baloyan@qlogic.com> Signed-off-by: NSaurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-