Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cad454b1 authored by Santosh Vernekar's avatar Santosh Vernekar Committed by James Bottomley
Browse files

[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: default avatarSantosh Vernekar <santosh.vernekar@qlogic.com>
Signed-off-by: default avatarGiridhar Malavali <giridhar.malavali@qlogic.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
parent d88a714b
Loading
Loading
Loading
Loading
+15 −3
Original line number Diff line number Diff line
@@ -1592,10 +1592,22 @@ struct nvram_81xx {

	/* Offset 384. */
	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. */
	uint16_t reserved_23[32];
	uint16_t reserved_25[32];

	/* Offset 480. */
	uint8_t model_name[16];
@@ -1603,7 +1615,7 @@ struct nvram_81xx {
	/* Offset 496. */
	uint16_t feature_mask_l;
	uint16_t feature_mask_h;
	uint16_t reserved_24[2];
	uint16_t reserved_26[2];

	uint16_t subsystem_vendor_id;
	uint16_t subsystem_device_id;
+7 −1
Original line number Diff line number Diff line
@@ -339,6 +339,7 @@ qla2x00_load_ram(scsi_qla_host_t *vha, dma_addr_t req_dma, uint32_t risc_addr,
	return rval;
}

#define	EXTENDED_BB_CREDITS	BIT_0
/*
 * qla2x00_execute_fw
 *     Start adapter firmware.
@@ -371,6 +372,11 @@ qla2x00_execute_fw(scsi_qla_host_t *vha, uint32_t risc_addr)
		mcp->mb[1] = MSW(risc_addr);
		mcp->mb[2] = LSW(risc_addr);
		mcp->mb[3] = 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->in_mb |= MBX_1;