Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 170685
b: refs/heads/master
c: f03b0eb
h: refs/heads/master
i:
  170683: 4eec2a3
v: v3
  • Loading branch information
Dhananjay Phadke authored and David S. Miller committed Oct 13, 2009
1 parent 8d4a22a commit 778b7bc
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 43 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 907fa1201c76f426a13bdff5be2747fb62c2353f
refs/heads/master: f03b0ebd8e7132bd9adb41348070813feb280300
5 changes: 3 additions & 2 deletions trunk/drivers/net/netxen/netxen_nic.h
Original file line number Diff line number Diff line change
Expand Up @@ -551,6 +551,9 @@ struct netxen_hardware_context {
u32 ocm_win;
u32 crb_win;

rwlock_t crb_lock;
spinlock_t mem_lock;

u8 cut_through;
u8 revision_id;
u8 pci_func;
Expand Down Expand Up @@ -1115,8 +1118,6 @@ struct netxen_adapter {
struct pci_dev *pdev;
struct list_head mac_list;

rwlock_t adapter_lock;

spinlock_t tx_clean_lock;

u16 num_txd;
Expand Down
2 changes: 0 additions & 2 deletions trunk/drivers/net/netxen/netxen_nic_ethtool.c
Original file line number Diff line number Diff line change
Expand Up @@ -85,11 +85,9 @@ netxen_nic_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *drvinfo)

strncpy(drvinfo->driver, netxen_nic_driver_name, 32);
strncpy(drvinfo->version, NETXEN_NIC_LINUX_VERSIONID, 32);
read_lock(&adapter->adapter_lock);
fw_major = NXRD32(adapter, NETXEN_FW_VERSION_MAJOR);
fw_minor = NXRD32(adapter, NETXEN_FW_VERSION_MINOR);
fw_build = NXRD32(adapter, NETXEN_FW_VERSION_SUB);
read_unlock(&adapter->adapter_lock);
sprintf(drvinfo->fw_version, "%d.%d.%d", fw_major, fw_minor, fw_build);

strncpy(drvinfo->bus_info, pci_name(adapter->pdev), 32);
Expand Down
63 changes: 30 additions & 33 deletions trunk/drivers/net/netxen/netxen_nic_hw.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,11 @@
#define CRB_HI(off) ((crb_hub_agt[CRB_BLK(off)] << 20) | ((off) & 0xf0000))
#define CRB_INDIRECT_2M (0x1e0000UL)

static void netxen_nic_io_write_128M(struct netxen_adapter *adapter,
void __iomem *addr, u32 data);
static u32 netxen_nic_io_read_128M(struct netxen_adapter *adapter,
void __iomem *addr);

#ifndef readq
static inline u64 readq(void __iomem *addr)
{
Expand Down Expand Up @@ -1164,17 +1169,15 @@ netxen_nic_hw_write_wx_128M(struct netxen_adapter *adapter, ulong off, u32 data)
BUG_ON(!addr);

if (ADDR_IN_WINDOW1(off)) { /* Window 1 */
read_lock(&adapter->adapter_lock);
writel(data, addr);
read_unlock(&adapter->adapter_lock);
netxen_nic_io_write_128M(adapter, addr, data);
} else { /* Window 0 */
write_lock_irqsave(&adapter->adapter_lock, flags);
write_lock_irqsave(&adapter->ahw.crb_lock, flags);
addr = pci_base_offset(adapter, off);
netxen_nic_pci_set_crbwindow_128M(adapter, 0);
writel(data, addr);
netxen_nic_pci_set_crbwindow_128M(adapter,
NETXEN_WINDOW_ONE);
write_unlock_irqrestore(&adapter->adapter_lock, flags);
write_unlock_irqrestore(&adapter->ahw.crb_lock, flags);
}

return 0;
Expand All @@ -1195,16 +1198,14 @@ netxen_nic_hw_read_wx_128M(struct netxen_adapter *adapter, ulong off)
BUG_ON(!addr);

if (ADDR_IN_WINDOW1(off)) { /* Window 1 */
read_lock(&adapter->adapter_lock);
data = readl(addr);
read_unlock(&adapter->adapter_lock);
data = netxen_nic_io_read_128M(adapter, addr);
} else { /* Window 0 */
write_lock_irqsave(&adapter->adapter_lock, flags);
write_lock_irqsave(&adapter->ahw.crb_lock, flags);
netxen_nic_pci_set_crbwindow_128M(adapter, 0);
data = readl(addr);
netxen_nic_pci_set_crbwindow_128M(adapter,
NETXEN_WINDOW_ONE);
write_unlock_irqrestore(&adapter->adapter_lock, flags);
write_unlock_irqrestore(&adapter->ahw.crb_lock, flags);
}

return data;
Expand All @@ -1226,12 +1227,12 @@ netxen_nic_hw_write_wx_2M(struct netxen_adapter *adapter, ulong off, u32 data)
}

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

Expand All @@ -1256,12 +1257,12 @@ netxen_nic_hw_read_wx_2M(struct netxen_adapter *adapter, ulong off)
}

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

Expand All @@ -1272,19 +1273,19 @@ netxen_nic_hw_read_wx_2M(struct netxen_adapter *adapter, ulong off)
static void netxen_nic_io_write_128M(struct netxen_adapter *adapter,
void __iomem *addr, u32 data)
{
read_lock(&adapter->adapter_lock);
read_lock(&adapter->ahw.crb_lock);
writel(data, addr);
read_unlock(&adapter->adapter_lock);
read_unlock(&adapter->ahw.crb_lock);
}

static u32 netxen_nic_io_read_128M(struct netxen_adapter *adapter,
void __iomem *addr)
{
u32 val;

read_lock(&adapter->adapter_lock);
read_lock(&adapter->ahw.crb_lock);
val = readl(addr);
read_unlock(&adapter->adapter_lock);
read_unlock(&adapter->ahw.crb_lock);

return val;
}
Expand Down Expand Up @@ -1366,11 +1367,10 @@ netxen_nic_pci_mem_access_direct(struct netxen_adapter *adapter, u64 off,
{
void __iomem *addr, *mem_ptr = NULL;
resource_size_t mem_base;
unsigned long flags;
int ret = -EIO;
u32 start;

write_lock_irqsave(&adapter->adapter_lock, flags);
spin_lock(&adapter->ahw.mem_lock);

ret = adapter->pci_set_window(adapter, off, &start);
if (ret != 0)
Expand All @@ -1397,7 +1397,8 @@ netxen_nic_pci_mem_access_direct(struct netxen_adapter *adapter, u64 off,
writeq(*data, addr);

unlock:
write_unlock_irqrestore(&adapter->adapter_lock, flags);
spin_unlock(&adapter->ahw.mem_lock);

if (mem_ptr)
iounmap(mem_ptr);
return ret;
Expand All @@ -1409,7 +1410,6 @@ static int
netxen_nic_pci_mem_write_128M(struct netxen_adapter *adapter,
u64 off, u64 data)
{
unsigned long flags;
int j, ret;
u32 temp, off_lo, off_hi, addr_hi, data_hi, data_lo;
void __iomem *mem_crb;
Expand Down Expand Up @@ -1453,7 +1453,7 @@ netxen_nic_pci_mem_write_128M(struct netxen_adapter *adapter,
return -EIO;

correct:
write_lock_irqsave(&adapter->adapter_lock, flags);
spin_lock(&adapter->ahw.mem_lock);
netxen_nic_pci_set_crbwindow_128M(adapter, 0);

writel(off_lo, (mem_crb + MIU_TEST_AGT_ADDR_LO));
Expand All @@ -1479,15 +1479,14 @@ netxen_nic_pci_mem_write_128M(struct netxen_adapter *adapter,
ret = 0;

netxen_nic_pci_set_crbwindow_128M(adapter, NETXEN_WINDOW_ONE);
write_unlock_irqrestore(&adapter->adapter_lock, flags);
spin_unlock(&adapter->ahw.mem_lock);
return ret;
}

static int
netxen_nic_pci_mem_read_128M(struct netxen_adapter *adapter,
u64 off, u64 *data)
{
unsigned long flags;
int j, ret;
u32 temp, off_lo, off_hi, addr_hi, data_hi, data_lo;
u64 val;
Expand Down Expand Up @@ -1532,7 +1531,7 @@ netxen_nic_pci_mem_read_128M(struct netxen_adapter *adapter,
return -EIO;

correct:
write_lock_irqsave(&adapter->adapter_lock, flags);
spin_lock(&adapter->ahw.mem_lock);
netxen_nic_pci_set_crbwindow_128M(adapter, 0);

writel(off_lo, (mem_crb + MIU_TEST_AGT_ADDR_LO));
Expand Down Expand Up @@ -1561,7 +1560,7 @@ netxen_nic_pci_mem_read_128M(struct netxen_adapter *adapter,
}

netxen_nic_pci_set_crbwindow_128M(adapter, NETXEN_WINDOW_ONE);
write_unlock_irqrestore(&adapter->adapter_lock, flags);
spin_unlock(&adapter->ahw.mem_lock);

return ret;
}
Expand All @@ -1570,7 +1569,6 @@ static int
netxen_nic_pci_mem_write_2M(struct netxen_adapter *adapter,
u64 off, u64 data)
{
unsigned long flags;
int j, ret;
u32 temp, off8;
void __iomem *mem_crb;
Expand Down Expand Up @@ -1601,7 +1599,7 @@ netxen_nic_pci_mem_write_2M(struct netxen_adapter *adapter,
correct:
off8 = off & MIU_TEST_AGT_ADDR_MASK;

write_lock_irqsave(&adapter->adapter_lock, flags);
spin_lock(&adapter->ahw.mem_lock);

writel(off8, (mem_crb + MIU_TEST_AGT_ADDR_LO));
writel(0, (mem_crb + MIU_TEST_AGT_ADDR_HI));
Expand All @@ -1625,7 +1623,7 @@ netxen_nic_pci_mem_write_2M(struct netxen_adapter *adapter,
} else
ret = 0;

write_unlock_irqrestore(&adapter->adapter_lock, flags);
spin_unlock(&adapter->ahw.mem_lock);

return ret;
}
Expand All @@ -1634,7 +1632,6 @@ static int
netxen_nic_pci_mem_read_2M(struct netxen_adapter *adapter,
u64 off, u64 *data)
{
unsigned long flags;
int j, ret;
u32 temp, off8;
u64 val;
Expand Down Expand Up @@ -1668,7 +1665,7 @@ netxen_nic_pci_mem_read_2M(struct netxen_adapter *adapter,
correct:
off8 = off & MIU_TEST_AGT_ADDR_MASK;

write_lock_irqsave(&adapter->adapter_lock, flags);
spin_lock(&adapter->ahw.mem_lock);

writel(off8, (mem_crb + MIU_TEST_AGT_ADDR_LO));
writel(0, (mem_crb + MIU_TEST_AGT_ADDR_HI));
Expand All @@ -1694,7 +1691,7 @@ netxen_nic_pci_mem_read_2M(struct netxen_adapter *adapter,
ret = 0;
}

write_unlock_irqrestore(&adapter->adapter_lock, flags);
spin_unlock(&adapter->ahw.mem_lock);

return ret;
}
Expand Down
6 changes: 2 additions & 4 deletions trunk/drivers/net/netxen/netxen_nic_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -1513,10 +1513,8 @@ netxen_post_rx_buffers(struct netxen_adapter *adapter, u32 ringid,
(rds_ring->num_desc - 1)));
netxen_set_msg_ctxid(msg, adapter->portnum);
netxen_set_msg_opcode(msg, NETXEN_RCV_PRODUCER(ringid));
read_lock(&adapter->adapter_lock);
writel(msg, DB_NORMALIZE(adapter,
NETXEN_RCV_PRODUCER_OFFSET));
read_unlock(&adapter->adapter_lock);
NXWRIO(adapter, DB_NORMALIZE(adapter,
NETXEN_RCV_PRODUCER_OFFSET), msg);
}
}
}
Expand Down
4 changes: 3 additions & 1 deletion trunk/drivers/net/netxen/netxen_nic_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1240,7 +1240,9 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
revision_id = pdev->revision;
adapter->ahw.revision_id = revision_id;

rwlock_init(&adapter->adapter_lock);
rwlock_init(&adapter->ahw.crb_lock);
spin_lock_init(&adapter->ahw.mem_lock);

spin_lock_init(&adapter->tx_clean_lock);
INIT_LIST_HEAD(&adapter->mac_list);

Expand Down

0 comments on commit 778b7bc

Please sign in to comment.