summaryrefslogtreecommitdiffstats
path: root/sys/dev/ic/qla.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* Almost-working QLA2100 support. This appears to be the best I can do forjmatthew2014-02-061-10/+57
| | | | | | now. The one 2100 card I have doesn't work at all with isp(4). I can get it to see devices on the fabric, but it can't log in to them, and it can't see loop devices at all.
* Avoid calling delay(9) between checking and clearing the interrupt status bits.kettenis2014-02-051-4/+3
| | | | ok jmatthew@
* Punt on handling responses if we haven't allocated the response queue yet.kettenis2014-02-051-1/+4
| | | | | | | | | Otherwise a spurious interrupt might make us dereference a null-pointer. This is especially important for ISP2200 cards with Open Firmware, where the card is running a full firmware and the response queue "in" pointer is non-zero when we take over. ok jmatthew@
* use the same option as isp(4) to build without firmware.jmatthew2014-02-031-2/+21
| | | | | stub out the firmware loading code and don't include the firmware files when ISP_NOFIRMWARE is defined.
* carve up qla_attach() into bits we can use to process loop and fabric changesjmatthew2014-02-021-272/+346
| | | | later on.
* Rearrange interrupt register processing for 2200s. The mailbox semaphorejmatthew2014-02-021-6/+5
| | | | | | | | seems to be disconnected from the interrupt status register, so we shouldn't wait until the interrupt status is nonzero to check it. This makes onboard FC controllers in Sun systems work better. tested on a blade1k (by kettenis@) and a v880.
* On sparc64, use the WWNs from Open Firmware, as the onboard ISP2200 that cankettenis2014-02-011-15/+15
| | | | | | be found on some Sun hardware doesn't have an NVRAM. ok jmatthew@
* the option bit for controlling fast posting is in icb_fw_options, notjmatthew2014-01-301-2/+2
| | | | | icb_xfwoptions. one of my qla2200 cards seems to have this enabled in its nvram, so it wasn't getting io completions.
* don't do a register test mailbox command before resetting the chip.jmatthew2014-01-301-15/+1
| | | | | kettenis@ found that this causes problems on sparc64 machines that boot off isp2200s.
* Set port and node WWN in scsi_link structure when we successfully probe akettenis2014-01-301-1/+5
| | | | | | target. ok jmatthew@, dlg@
* fix endianness for FC4 type registrationjmatthew2014-01-221-2/+2
|
* add a missing printf argumentjsg2014-01-211-2/+2
| | | | ok jmatthew@
* Add support for ISP2200 based adapters.jmatthew2014-01-211-44/+155
| | | | | | | | This involves a bit of a hack in the interrupt processing path, where we ignore the interrupt status if we're expecting a mailbox command to complete, but we don't have the mailbox semaphore and the response ring hasn't moved. Typically next time through, the interrupt status is the same and we have the semaphore so we can read the results.
* The semaphore register does need to be cleared when clearing interrupts,jmatthew2014-01-211-7/+14
| | | | but only for interrupts that return information through mailbox registers.
* Stop using 23xx-specific interrupt status codes everywhere. Instead, classifyjmatthew2014-01-211-15/+26
| | | | into one of 4 types in qla_read_isr.
* With 2K login firmware, the login option bits are in mbox register 10.jmatthew2014-01-201-2/+5
| | | | | These need to be explicitly set to 0, otherwise the firmware might not do the process login and so leave us unable to talk to the device.
* Better interrupt handler return values. 1 if the chip said it wanted anjmatthew2014-01-191-14/+8
| | | | | | interrupt, 0 if it didn't. "makes sense" dlg@
* Introduce qla(4), a new driver for Qlogic fibre channel HBAs (only ISP23xxjmatthew2014-01-191-0/+1900
so far). Works reasonably well now, so it's going in the tree so others can try it out. with some help and fixes from dlg@, general encouragement from basically everyone