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

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
...@@ -332,7 +332,7 @@ netxen_pcie_sem_lock(struct netxen_adapter *adapter, int sem, u32 id_reg) ...@@ -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, ...@@ -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) ...@@ -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) ...@@ -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,25 +1220,26 @@ netxen_nic_hw_write_wx_2M(struct netxen_adapter *adapter, ulong off, u32 data) ...@@ -1220,25 +1220,26 @@ 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 return 0;
writel(data, (void __iomem *)off); }
return 0; dev_err(&adapter->pdev->dev,
"%s: invalid offset: 0x%016lx\n", __func__, off);
dump_stack();
return -EIO;
} }
static u32 static u32
...@@ -1250,24 +1251,24 @@ netxen_nic_hw_read_wx_2M(struct netxen_adapter *adapter, ulong off) ...@@ -1250,24 +1251,24 @@ 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 return data;
data = readl((void __iomem *)off); }
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 */
......
...@@ -832,6 +832,12 @@ void netxen_request_firmware(struct netxen_adapter *adapter) ...@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment