2009-04-01

[硬體] QLOGIC QLE2460

原文在:[硬體] QLOGIC QLE2460 @ PIXNET Lab

前陣子公司進了台 RAIDBOX,uplink是接光纖的,所以廠商拿 QLOGIC QLE2460 來給我們測試合不合用,上面的控制晶片型號是 ISP2432。



QLE2460 有兩種版本,右邊晶片上面標 SINGAPORE(亮的)是比較早期的版本,左邊比較近期標的就是 CHINA(黑的),目前用起來還沒發現有什麼差異,晶片的發熱也不會太強而有力,機殼內的空氣對流有弄好應該就不會過熱。

在 FreeBSD 上,device isp 在 6.3-RELEASE 以後開始有支援,而且還有 device ispfw 這個 firmware module 可以硬上韌體比較舊的卡。

我們家的機器是 7.1-RELEASE,用 /boot/loader.conf 的方式載入 isp 和 ispfw:
isp_load="YES"
ispfw_load="YES"

開機有顯示 ispfw 有提供以下 isp 的 firmware:
kernel: registered firmware set <isp_1040>
kernel: registered firmware set <isp_1040_it>
kernel: registered firmware set <isp_1080>
kernel: registered firmware set <isp_1080_it>
kernel: registered firmware set <isp_12160>
kernel: registered firmware set <isp_12160_it>
kernel: registered firmware set <isp_2100>
kernel: registered firmware set <isp_2200>
kernel: registered firmware set <isp_2300>
kernel: registered firmware set <isp_2322>
kernel: registered firmware set <isp_2400>

然後抓到卡片:
kernel: isp0: <Qlogic ISP 2432 PCI FC-AL Adapter> port 0xc800-0xc8ff mem 0xfdcfc000-0xfdcfffff irq 16 at device 0.0 on pci5
kernel: isp0: [ITHREAD]
kernel: isp0: Board Type 2422, Chip Revision 0x2, loaded F/W Revision 4.0.20

因為我們拿到的卡上面的韌體是 4.00.30,不需要 ispfw 來蓋掉,所以在 /boot/device.hints 加上:
hint.isp.0.fwload_disable="1"
(直接拿掉 ispfw_load="YES" 會看到 isp 叫找不到 ispfw 的訊息)

所以重開機抓到的訊息就變成:
kernel: isp0: Board Type 2422, Chip Revision 0x2, resident F/W Revision 4.0.30

之後也順利抓到 RAIDBOX:
kernel: pass0 at isp0 bus 0 target 0 lun 0
kernel: pass0: <STORAGE RAID 1.0> Fixed Direct Access SCSI-5 device
kernel: pass0: 400.000MB/s transfers
kernel: pass0: Command Queueing Enabled
kernel: GEOM: new disk da0
kernel: da0 at isp0 bus 0 target 0 lun 0
kernel: da0: <STORAGE RAID 1.0> Fixed Direct Access SCSI-5 device
kernel: da0: 400.000MB/s transfers
kernel: da0: Command Queueing Enabled
kernel: da0: 8566784MB (17544774528 512 byte sectors: 255H 63S/T 1092111C)

不過,開始把 da0 卯上來用之後,就會一直噴訊息出來:
kernel: (da0:isp0:0:0:0): SYNCHRONIZE CACHE. CDB: 35 0 0 0 0 0 0 0 0 0
kernel: (da0:isp0:0:0:0): CAM Status: SCSI Status Error
kernel: (da0:isp0:0:0:0): SCSI Status: Check Condition
kernel: (da0:isp0:0:0:0): ILLEGAL REQUEST asc:20,0
kernel: (da0:isp0:0:0:0): Invalid command operation code: Command byte 0 bit 0 is invalid
kernel: (da0:isp0:0:0:0): (da0:isp0:0:0:0): SYNCHRONIZE CACHE. CDB: 35 0 0 0 0 0 0 0 0 0
kernel: (da0:isp0:0:0:0): ILLEGAL REQUEST asc:20,0
kernel: (da0:isp0:0:0:0): Invalid command operation code: Command byte 0 bit 0 is invalid
kernel: Unretryable error

翻了幾下 mailing list,看來是這個 RAIDBOX 不支援 SYNCHRONIZE CACHE 的指令,不是卡片的問題,只好等廠商升級 RAIDBOX 的韌體,看看能不能改善這個狀況。

--
其實我們總共拿到三張卡在做測試,除了一張韌體是 4.03.01 以外,其他都是 4.00.0x 的版本。

初步測試的時候,有一張 4.00.0x 是開機就偵測不到 RAIDBOX,先放棄,然後發現 4.03.01 不會噴上面那一堆 ILLEGAL REQUEST 的訊息!當時還不確定 RAIDBOX 不支援 SYNCHRONIZE CACHE 的指令,以為這一張是完美的解藥,就進行詳細測試。

可是在詳細測試 4.03.01 後,發現這張卡不正常:(開機用 verbose mode 才看到下面這些訊息)
kernel: isp0: Port Database Changed
kernel: isp0: Firmware State <Config Wait->Ready>
kernel: isp0: 2Gb link speed/s
kernel: isp0: HBA PortID 0x0000ef N-Port Handle 0, Connection Topology 'Private Loop'

明明是 4Gb 的卡,怎麼會抓成 2Gb,而且 HBA PortID 也是錯的,其他卡的正常訊息像這樣:
kernel: isp0: Port Database Changed
kernel: isp0: Firmware State <Config Wait->Ready>
kernel: isp0: 4Gb link speed/s
kernel: isp0: HBA PortID 0x000001 N-Port Handle 125, Connection Topology 'Private Loop'

而且其他卡都能正確抓到 RAIDBOX,只有 4.03.01 的不會回報 pass0/da0 出來用,初步認為是 4.03.01 的韌體有問題,所以就請廠商把這三張卡都更新韌體到 4.00.30 版本。

再次測試,原本有一張 4.00.0x 偵測不到 RAIDBOX 的卡恢復正常運作,連 pass0/da0 都有回報出來,而 4.03.01 降成 4.00.30 的卡還是一樣的錯誤訊息,後來判定這張卡應該是哪邊有故障,完全不能使用。

所以現在上線跑的卡是 4.00.30 版本的韌體,依然努力地噴著訊息運作著。