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

Commit 7cecdca1 authored by Dhananjay Phadke's avatar Dhananjay Phadke Committed by David S. Miller
Browse files

netxen: fix error codes in for tools access



Use -EIO or -EINVAL as error codes, these can get passed up
to applications (tools).

Signed-off-by: default avatarDhananjay Phadke <dhananjay@netxen.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 6abb4b83
Loading
Loading
Loading
Loading
+25 −24
Original line number Original line Diff line number Diff line
@@ -332,7 +332,7 @@ netxen_pcie_sem_lock(struct netxen_adapter *adapter, int sem, u32 id_reg)
		if (done == 1)
		if (done == 1)
			break;
			break;
		if (++timeout >= NETXEN_PCIE_SEM_TIMEOUT)
		if (++timeout >= NETXEN_PCIE_SEM_TIMEOUT)
			return -1;
			return -EIO;
		msleep(1);
		msleep(1);
	}
	}


@@ -1083,7 +1083,7 @@ netxen_nic_pci_set_crbwindow_128M(struct netxen_adapter *adapter,
}
}


/*
/*
 * Return -1 if off is not valid,
 * Returns < 0 if off is not valid,
 *	 1 if window access is needed. 'off' is set to offset from
 *	 1 if window access is needed. 'off' is set to offset from
 *	   CRB space in 128M pci map
 *	   CRB space in 128M pci map
 *	 0 if no window access is needed. 'off' is set to 2M addr
 *	 0 if no window access is needed. 'off' is set to 2M addr
@@ -1096,7 +1096,7 @@ netxen_nic_pci_get_crb_addr_2M(struct netxen_adapter *adapter, ulong *off)




	if (*off >= NETXEN_CRB_MAX)
	if (*off >= NETXEN_CRB_MAX)
		return -1;
		return -EINVAL;


	if (*off >= NETXEN_PCI_CAMQM && (*off < NETXEN_PCI_CAMQM_2M_END)) {
	if (*off >= NETXEN_PCI_CAMQM && (*off < NETXEN_PCI_CAMQM_2M_END)) {
		*off = (*off - NETXEN_PCI_CAMQM) + NETXEN_PCI_CAMQM_2M_BASE +
		*off = (*off - NETXEN_PCI_CAMQM) + NETXEN_PCI_CAMQM_2M_BASE +
@@ -1105,7 +1105,7 @@ netxen_nic_pci_get_crb_addr_2M(struct netxen_adapter *adapter, ulong *off)
	}
	}


	if (*off < NETXEN_PCI_CRBSPACE)
	if (*off < NETXEN_PCI_CRBSPACE)
		return -1;
		return -EINVAL;


	*off -= NETXEN_PCI_CRBSPACE;
	*off -= NETXEN_PCI_CRBSPACE;


@@ -1220,27 +1220,28 @@ netxen_nic_hw_write_wx_2M(struct netxen_adapter *adapter, ulong off, u32 data)


	rv = netxen_nic_pci_get_crb_addr_2M(adapter, &off);
	rv = netxen_nic_pci_get_crb_addr_2M(adapter, &off);


	if (rv == -1) {
	if (rv == 0) {
		printk(KERN_ERR "%s: invalid offset: 0x%016lx\n",
		writel(data, (void __iomem *)off);
				__func__, off);
		return 0;
		dump_stack();
		return -1;
	}
	}


	if (rv == 1) {
	if (rv > 0) {
		/* indirect access */
		write_lock_irqsave(&adapter->ahw.crb_lock, flags);
		write_lock_irqsave(&adapter->ahw.crb_lock, flags);
		crb_win_lock(adapter);
		crb_win_lock(adapter);
		netxen_nic_pci_set_crbwindow_2M(adapter, &off);
		netxen_nic_pci_set_crbwindow_2M(adapter, &off);
		writel(data, (void __iomem *)off);
		writel(data, (void __iomem *)off);
		crb_win_unlock(adapter);
		crb_win_unlock(adapter);
		write_unlock_irqrestore(&adapter->ahw.crb_lock, flags);
		write_unlock_irqrestore(&adapter->ahw.crb_lock, flags);
	} else
		writel(data, (void __iomem *)off);


		return 0;
		return 0;
	}
	}


	dev_err(&adapter->pdev->dev,
			"%s: invalid offset: 0x%016lx\n", __func__, off);
	dump_stack();
	return -EIO;
}

static u32
static u32
netxen_nic_hw_read_wx_2M(struct netxen_adapter *adapter, ulong off)
netxen_nic_hw_read_wx_2M(struct netxen_adapter *adapter, ulong off)
{
{
@@ -1250,26 +1251,26 @@ netxen_nic_hw_read_wx_2M(struct netxen_adapter *adapter, ulong off)


	rv = netxen_nic_pci_get_crb_addr_2M(adapter, &off);
	rv = netxen_nic_pci_get_crb_addr_2M(adapter, &off);


	if (rv == -1) {
	if (rv == 0)
		printk(KERN_ERR "%s: invalid offset: 0x%016lx\n",
		return readl((void __iomem *)off);
				__func__, off);
		dump_stack();
		return -1;
	}


	if (rv == 1) {
	if (rv > 0) {
		/* indirect access */
		write_lock_irqsave(&adapter->ahw.crb_lock, flags);
		write_lock_irqsave(&adapter->ahw.crb_lock, flags);
		crb_win_lock(adapter);
		crb_win_lock(adapter);
		netxen_nic_pci_set_crbwindow_2M(adapter, &off);
		netxen_nic_pci_set_crbwindow_2M(adapter, &off);
		data = readl((void __iomem *)off);
		data = readl((void __iomem *)off);
		crb_win_unlock(adapter);
		crb_win_unlock(adapter);
		write_unlock_irqrestore(&adapter->ahw.crb_lock, flags);
		write_unlock_irqrestore(&adapter->ahw.crb_lock, flags);
	} else
		data = readl((void __iomem *)off);

		return data;
		return data;
	}
	}


	dev_err(&adapter->pdev->dev,
			"%s: invalid offset: 0x%016lx\n", __func__, off);
	dump_stack();
	return -1;
}

/* window 1 registers only */
/* window 1 registers only */
static void netxen_nic_io_write_128M(struct netxen_adapter *adapter,
static void netxen_nic_io_write_128M(struct netxen_adapter *adapter,
		void __iomem *addr, u32 data)
		void __iomem *addr, u32 data)
+6 −0
Original line number Original line Diff line number Diff line
@@ -832,6 +832,12 @@ void netxen_request_firmware(struct netxen_adapter *adapter)
		goto request_fw;
		goto request_fw;
	}
	}


	if (NX_IS_REVISION_P3P(adapter->ahw.revision_id)) {
		/* No file firmware for the time being */
		fw_type = NX_FLASH_ROMIMAGE;
		goto done;
	}

	fw_type = netxen_p3_has_mn(adapter) ?
	fw_type = netxen_p3_has_mn(adapter) ?
		NX_P3_MN_ROMIMAGE : NX_P3_CT_ROMIMAGE;
		NX_P3_MN_ROMIMAGE : NX_P3_CT_ROMIMAGE;