提交 cad454b1 编写于 作者: S Santosh Vernekar 提交者: James Bottomley

[SCSI] qla2xxx: Honour "Extended BB credits" bit for CNAs.

We now enable/disable "Additional Receive Credits" in f/w based on nvram
parameter "Extended_BB_Credits" bit (i.e. Enhanced-Features: at offset 0x196).
This is applicable only for GEN2 CNAs.
Signed-off-by: NSantosh Vernekar <santosh.vernekar@qlogic.com>
Signed-off-by: NGiridhar Malavali <giridhar.malavali@qlogic.com>
Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
上级 d88a714b
...@@ -1592,10 +1592,22 @@ struct nvram_81xx { ...@@ -1592,10 +1592,22 @@ struct nvram_81xx {
/* Offset 384. */ /* Offset 384. */
uint8_t reserved_21[16]; uint8_t reserved_21[16];
uint16_t reserved_22[8]; uint16_t reserved_22[3];
/*
* BIT 0 = Extended BB credits for LR
* BIT 1 = Virtual Fabric Enable
* BIT 2 = Enhanced Features Unused
* BIT 3-7 = Enhanced Features Reserved
*/
/* Enhanced Features */
uint8_t enhanced_features;
uint8_t reserved_23;
uint16_t reserved_24[4];
/* Offset 416. */ /* Offset 416. */
uint16_t reserved_23[32]; uint16_t reserved_25[32];
/* Offset 480. */ /* Offset 480. */
uint8_t model_name[16]; uint8_t model_name[16];
...@@ -1603,7 +1615,7 @@ struct nvram_81xx { ...@@ -1603,7 +1615,7 @@ struct nvram_81xx {
/* Offset 496. */ /* Offset 496. */
uint16_t feature_mask_l; uint16_t feature_mask_l;
uint16_t feature_mask_h; uint16_t feature_mask_h;
uint16_t reserved_24[2]; uint16_t reserved_26[2];
uint16_t subsystem_vendor_id; uint16_t subsystem_vendor_id;
uint16_t subsystem_device_id; uint16_t subsystem_device_id;
......
...@@ -339,6 +339,7 @@ qla2x00_load_ram(scsi_qla_host_t *vha, dma_addr_t req_dma, uint32_t risc_addr, ...@@ -339,6 +339,7 @@ qla2x00_load_ram(scsi_qla_host_t *vha, dma_addr_t req_dma, uint32_t risc_addr,
return rval; return rval;
} }
#define EXTENDED_BB_CREDITS BIT_0
/* /*
* qla2x00_execute_fw * qla2x00_execute_fw
* Start adapter firmware. * Start adapter firmware.
...@@ -371,7 +372,12 @@ qla2x00_execute_fw(scsi_qla_host_t *vha, uint32_t risc_addr) ...@@ -371,7 +372,12 @@ qla2x00_execute_fw(scsi_qla_host_t *vha, uint32_t risc_addr)
mcp->mb[1] = MSW(risc_addr); mcp->mb[1] = MSW(risc_addr);
mcp->mb[2] = LSW(risc_addr); mcp->mb[2] = LSW(risc_addr);
mcp->mb[3] = 0; mcp->mb[3] = 0;
mcp->mb[4] = 0; if (IS_QLA81XX(ha)) {
struct nvram_81xx *nv = ha->nvram;
mcp->mb[4] = (nv->enhanced_features &
EXTENDED_BB_CREDITS);
} else
mcp->mb[4] = 0;
mcp->out_mb |= MBX_4|MBX_3|MBX_2|MBX_1; mcp->out_mb |= MBX_4|MBX_3|MBX_2|MBX_1;
mcp->in_mb |= MBX_1; mcp->in_mb |= MBX_1;
} else { } else {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册