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

Commit 529e7a62 authored by Ed Lin's avatar Ed Lin Committed by James Bottomley
Browse files

[SCSI] stex: adjust default queue length



Firmware of new version may adjust default queue length. It is
backward compatible.

Signed-off-by: default avatarEd Lin <ed.lin@promise.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent 47c4f997
Loading
Loading
Loading
Loading
+10 −1
Original line number Original line Diff line number Diff line
@@ -78,6 +78,7 @@ enum {


	MU_MAX_DELAY_TIME			= 240000,
	MU_MAX_DELAY_TIME			= 240000,
	MU_HANDSHAKE_SIGNATURE			= 0x55aaaa55,
	MU_HANDSHAKE_SIGNATURE			= 0x55aaaa55,
	MU_HANDSHAKE_SIGNATURE_HALF		= 0x5a5a0000,
	HMU_PARTNER_TYPE			= 2,
	HMU_PARTNER_TYPE			= 2,


	/* firmware returned values */
	/* firmware returned values */
@@ -902,6 +903,7 @@ static int stex_handshake(struct st_hba *hba)
	void __iomem *base = hba->mmio_base;
	void __iomem *base = hba->mmio_base;
	struct handshake_frame *h;
	struct handshake_frame *h;
	dma_addr_t status_phys;
	dma_addr_t status_phys;
	u32 data;
	int i;
	int i;


	if (readl(base + OMR0) != MU_HANDSHAKE_SIGNATURE) {
	if (readl(base + OMR0) != MU_HANDSHAKE_SIGNATURE) {
@@ -923,6 +925,13 @@ static int stex_handshake(struct st_hba *hba)


	udelay(10);
	udelay(10);


	data = readl(base + OMR1);
	if ((data & 0xffff0000) == MU_HANDSHAKE_SIGNATURE_HALF) {
		data &= 0x0000ffff;
		if (hba->host->can_queue > data)
			hba->host->can_queue = data;
	}

	h = (struct handshake_frame *)(hba->dma_mem + MU_REQ_BUFFER_SIZE);
	h = (struct handshake_frame *)(hba->dma_mem + MU_REQ_BUFFER_SIZE);
	h->rb_phy = cpu_to_le32(hba->dma_handle);
	h->rb_phy = cpu_to_le32(hba->dma_handle);
	h->rb_phy_hi = cpu_to_le32((hba->dma_handle >> 16) >> 16);
	h->rb_phy_hi = cpu_to_le32((hba->dma_handle >> 16) >> 16);
@@ -1234,7 +1243,7 @@ stex_probe(struct pci_dev *pdev, const struct pci_device_id *id)
	if (err)
	if (err)
		goto out_free_irq;
		goto out_free_irq;


	err = scsi_init_shared_tag_map(host, ST_CAN_QUEUE);
	err = scsi_init_shared_tag_map(host, host->can_queue);
	if (err) {
	if (err) {
		printk(KERN_ERR DRV_NAME "(%s): init shared queue failed\n",
		printk(KERN_ERR DRV_NAME "(%s): init shared queue failed\n",
			pci_name(pdev));
			pci_name(pdev));