* [PATCH 1/6] netxen: cleanup unused variables/functions
@ 2008-07-12 19:25 Dhananjay Phadke
2008-07-22 21:53 ` Dhananjay Phadke
0 siblings, 1 reply; 2+ messages in thread
From: Dhananjay Phadke @ 2008-07-12 19:25 UTC (permalink / raw)
To: netdev; +Cc: jeff
o Reduce access to global arrays in data path.
o Remove duplicate/unused variables, unecessary alignment constraints.
o Use correct pci_dev instead of fallback device for consistent
allocations.
o Disable ethtool set_eeprom functionality for now, it was only used
for flashing firmware.
Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>
---
drivers/net/netxen/netxen_nic.h | 19 +--
drivers/net/netxen/netxen_nic_ethtool.c | 5 +-
drivers/net/netxen/netxen_nic_hw.c | 270 +++++++-----------------------
drivers/net/netxen/netxen_nic_init.c | 88 +++-------
drivers/net/netxen/netxen_nic_main.c | 74 ++-------
drivers/net/netxen/netxen_nic_phan_reg.h | 17 +--
6 files changed, 113 insertions(+), 360 deletions(-)
diff --git a/drivers/net/netxen/netxen_nic.h b/drivers/net/netxen/netxen_nic.h
index da4c4fb..149bb60 100644
--- a/drivers/net/netxen/netxen_nic.h
+++ b/drivers/net/netxen/netxen_nic.h
@@ -132,7 +132,6 @@
#define RX_JUMBO_DMA_MAP_LEN \
(MAX_RX_JUMBO_BUFFER_LENGTH - 2)
#define RX_LRO_DMA_MAP_LEN (MAX_RX_LRO_BUFFER_LENGTH - 2)
-#define NETXEN_ROM_ROUNDUP 0x80000000ULL
/*
* Maximum number of ring contexts
@@ -219,8 +218,6 @@ enum {
#define MPORT_MULTI_FUNCTION_MODE 0x2222
#include "netxen_nic_phan_reg.h"
-extern unsigned long long netxen_dma_mask;
-extern unsigned long last_schedule_time;
/*
* NetXen host-peg signal message structure
@@ -765,7 +762,6 @@ struct netxen_rx_buffer {
* contains interrupt info as well shared hardware info.
*/
struct netxen_hardware_context {
- struct pci_dev *pdev;
void __iomem *pci_base0;
void __iomem *pci_base1;
void __iomem *pci_base2;
@@ -781,7 +777,6 @@ struct netxen_hardware_context {
u32 qg_linksup;
/* Address of cmd ring in Phantom */
struct cmd_desc_type0 *cmd_desc_head;
- struct pci_dev *cmd_desc_pdev;
dma_addr_t cmd_desc_phys_addr;
struct netxen_adapter *adapter;
int pci_func;
@@ -816,9 +811,8 @@ struct netxen_adapter_stats {
struct netxen_rcv_desc_ctx {
u32 flags;
u32 producer;
- u32 rcv_pending; /* Num of bufs posted in phantom */
dma_addr_t phys_addr;
- struct pci_dev *phys_pdev;
+ u32 crb_rcv_producer; /* reg offset */
struct rcv_desc *desc_head; /* address of rx ring in Phantom */
u32 max_rx_desc_count;
u32 dma_size;
@@ -835,10 +829,9 @@ struct netxen_rcv_desc_ctx {
*/
struct netxen_recv_context {
struct netxen_rcv_desc_ctx rcv_desc[NUM_RCV_DESC_RINGS];
- u32 status_rx_producer;
u32 status_rx_consumer;
+ u32 crb_sts_consumer; /* reg offset */
dma_addr_t rcv_status_desc_phys_addr;
- struct pci_dev *rcv_status_desc_pdev;
struct status_desc *rcv_status_desc_head;
};
@@ -854,7 +847,6 @@ struct netxen_dummy_dma {
struct netxen_adapter {
struct netxen_hardware_context ahw;
- struct netxen_adapter *master;
struct net_device *netdev;
struct pci_dev *pdev;
struct napi_struct napi;
@@ -873,6 +865,8 @@ struct netxen_adapter {
u32 cmd_producer;
__le32 *cmd_consumer;
u32 last_cmd_consumer;
+ u32 crb_addr_cmd_producer;
+ u32 crb_addr_cmd_consumer;
u32 max_tx_desc_count;
u32 max_rx_desc_count;
@@ -886,14 +880,12 @@ struct netxen_adapter {
struct netxen_adapter_stats stats;
- u16 portno;
u16 link_speed;
u16 link_duplex;
u16 state;
u16 link_autoneg;
int rx_csum;
int status;
- spinlock_t stats_lock;
struct netxen_cmd_buffer *cmd_buf_arr; /* Command buffers for xmit */
@@ -908,7 +900,6 @@ struct netxen_adapter {
/* Context interface shared between card and host */
struct netxen_ring_ctx *ctx_desc;
- struct pci_dev *ctx_desc_pdev;
dma_addr_t ctx_desc_phys_addr;
int intr_scheme;
int msi_mode;
@@ -1034,8 +1025,6 @@ int netxen_rom_se(struct netxen_adapter *adapter, int addr);
/* Functions from netxen_nic_isr.c */
void netxen_initialize_adapter_sw(struct netxen_adapter *adapter);
-void *netxen_alloc(struct pci_dev *pdev, size_t sz, dma_addr_t * ptr,
- struct pci_dev **used_dev);
void netxen_initialize_adapter_ops(struct netxen_adapter *adapter);
int netxen_init_firmware(struct netxen_adapter *adapter);
void netxen_free_hw_resources(struct netxen_adapter *adapter);
diff --git a/drivers/net/netxen/netxen_nic_ethtool.c b/drivers/net/netxen/netxen_nic_ethtool.c
index 723487b..99071c2 100644
--- a/drivers/net/netxen/netxen_nic_ethtool.c
+++ b/drivers/net/netxen/netxen_nic_ethtool.c
@@ -427,6 +427,7 @@ netxen_nic_get_eeprom(struct net_device *dev, struct ethtool_eeprom *eeprom,
return 0;
}
+#if 0
static int
netxen_nic_set_eeprom(struct net_device *dev, struct ethtool_eeprom *eeprom,
u8 * bytes)
@@ -447,7 +448,6 @@ netxen_nic_set_eeprom(struct net_device *dev, struct ethtool_eeprom *eeprom,
}
printk(KERN_INFO "%s: flash unlocked. \n",
netxen_nic_driver_name);
- last_schedule_time = jiffies;
ret = netxen_flash_erase_secondary(adapter);
if (ret != FLASH_SUCCESS) {
printk(KERN_ERR "%s: Flash erase failed.\n",
@@ -497,6 +497,7 @@ netxen_nic_set_eeprom(struct net_device *dev, struct ethtool_eeprom *eeprom,
return netxen_rom_fast_write_words(adapter, offset, bytes, eeprom->len);
}
+#endif /* 0 */
static void
netxen_nic_get_ringparam(struct net_device *dev, struct ethtool_ringparam *ring)
@@ -745,7 +746,9 @@ struct ethtool_ops netxen_nic_ethtool_ops = {
.get_link = ethtool_op_get_link,
.get_eeprom_len = netxen_nic_get_eeprom_len,
.get_eeprom = netxen_nic_get_eeprom,
+#if 0
.set_eeprom = netxen_nic_set_eeprom,
+#endif
.get_ringparam = netxen_nic_get_ringparam,
.get_pauseparam = netxen_nic_get_pauseparam,
.set_pauseparam = netxen_nic_set_pauseparam,
diff --git a/drivers/net/netxen/netxen_nic_hw.c b/drivers/net/netxen/netxen_nic_hw.c
index c43d06b..fa6d034 100644
--- a/drivers/net/netxen/netxen_nic_hw.c
+++ b/drivers/net/netxen/netxen_nic_hw.c
@@ -43,203 +43,61 @@ struct netxen_recv_crb recv_crb_registers[] = {
* Instance 0.
*/
{
- /* rcv_desc_crb: */
- {
- {
- /* crb_rcv_producer_offset: */
- NETXEN_NIC_REG(0x100),
- /* crb_rcv_consumer_offset: */
- NETXEN_NIC_REG(0x104),
- /* crb_gloablrcv_ring: */
- NETXEN_NIC_REG(0x108),
- /* crb_rcv_ring_size */
- NETXEN_NIC_REG(0x10c),
-
- },
- /* Jumbo frames */
- {
- /* crb_rcv_producer_offset: */
- NETXEN_NIC_REG(0x110),
- /* crb_rcv_consumer_offset: */
- NETXEN_NIC_REG(0x114),
- /* crb_gloablrcv_ring: */
- NETXEN_NIC_REG(0x118),
- /* crb_rcv_ring_size */
- NETXEN_NIC_REG(0x11c),
- },
- /* LRO */
- {
- /* crb_rcv_producer_offset: */
- NETXEN_NIC_REG(0x120),
- /* crb_rcv_consumer_offset: */
- NETXEN_NIC_REG(0x124),
- /* crb_gloablrcv_ring: */
- NETXEN_NIC_REG(0x128),
- /* crb_rcv_ring_size */
- NETXEN_NIC_REG(0x12c),
- }
- },
- /* crb_rcvstatus_ring: */
- NETXEN_NIC_REG(0x130),
- /* crb_rcv_status_producer: */
- NETXEN_NIC_REG(0x134),
- /* crb_rcv_status_consumer: */
- NETXEN_NIC_REG(0x138),
- /* crb_rcvpeg_state: */
- NETXEN_NIC_REG(0x13c),
- /* crb_status_ring_size */
- NETXEN_NIC_REG(0x140),
-
- },
+ /* crb_rcv_producer: */
+ {
+ NETXEN_NIC_REG(0x100),
+ /* Jumbo frames */
+ NETXEN_NIC_REG(0x110),
+ /* LRO */
+ NETXEN_NIC_REG(0x120)
+ },
+ /* crb_sts_consumer: */
+ NETXEN_NIC_REG(0x138),
+ },
/*
* Instance 1,
*/
{
- /* rcv_desc_crb: */
- {
- {
- /* crb_rcv_producer_offset: */
- NETXEN_NIC_REG(0x144),
- /* crb_rcv_consumer_offset: */
- NETXEN_NIC_REG(0x148),
- /* crb_globalrcv_ring: */
- NETXEN_NIC_REG(0x14c),
- /* crb_rcv_ring_size */
- NETXEN_NIC_REG(0x150),
-
- },
- /* Jumbo frames */
- {
- /* crb_rcv_producer_offset: */
- NETXEN_NIC_REG(0x154),
- /* crb_rcv_consumer_offset: */
- NETXEN_NIC_REG(0x158),
- /* crb_globalrcv_ring: */
- NETXEN_NIC_REG(0x15c),
- /* crb_rcv_ring_size */
- NETXEN_NIC_REG(0x160),
- },
- /* LRO */
- {
- /* crb_rcv_producer_offset: */
- NETXEN_NIC_REG(0x164),
- /* crb_rcv_consumer_offset: */
- NETXEN_NIC_REG(0x168),
- /* crb_globalrcv_ring: */
- NETXEN_NIC_REG(0x16c),
- /* crb_rcv_ring_size */
- NETXEN_NIC_REG(0x170),
- }
-
- },
- /* crb_rcvstatus_ring: */
- NETXEN_NIC_REG(0x174),
- /* crb_rcv_status_producer: */
- NETXEN_NIC_REG(0x178),
- /* crb_rcv_status_consumer: */
- NETXEN_NIC_REG(0x17c),
- /* crb_rcvpeg_state: */
- NETXEN_NIC_REG(0x180),
- /* crb_status_ring_size */
- NETXEN_NIC_REG(0x184),
- },
+ /* crb_rcv_producer: */
+ {
+ NETXEN_NIC_REG(0x144),
+ /* Jumbo frames */
+ NETXEN_NIC_REG(0x154),
+ /* LRO */
+ NETXEN_NIC_REG(0x164)
+ },
+ /* crb_sts_consumer: */
+ NETXEN_NIC_REG(0x17c),
+ },
/*
* Instance 2,
*/
{
- {
- {
- /* crb_rcv_producer_offset: */
- NETXEN_NIC_REG(0x1d8),
- /* crb_rcv_consumer_offset: */
- NETXEN_NIC_REG(0x1dc),
- /* crb_gloablrcv_ring: */
- NETXEN_NIC_REG(0x1f0),
- /* crb_rcv_ring_size */
- NETXEN_NIC_REG(0x1f4),
- },
- /* Jumbo frames */
- {
- /* crb_rcv_producer_offset: */
- NETXEN_NIC_REG(0x1f8),
- /* crb_rcv_consumer_offset: */
- NETXEN_NIC_REG(0x1fc),
- /* crb_gloablrcv_ring: */
- NETXEN_NIC_REG(0x200),
- /* crb_rcv_ring_size */
- NETXEN_NIC_REG(0x204),
- },
- /* LRO */
- {
- /* crb_rcv_producer_offset: */
- NETXEN_NIC_REG(0x208),
- /* crb_rcv_consumer_offset: */
- NETXEN_NIC_REG(0x20c),
- /* crb_gloablrcv_ring: */
- NETXEN_NIC_REG(0x210),
- /* crb_rcv_ring_size */
- NETXEN_NIC_REG(0x214),
- }
- },
- /* crb_rcvstatus_ring: */
- NETXEN_NIC_REG(0x218),
- /* crb_rcv_status_producer: */
- NETXEN_NIC_REG(0x21c),
- /* crb_rcv_status_consumer: */
- NETXEN_NIC_REG(0x220),
- /* crb_rcvpeg_state: */
- NETXEN_NIC_REG(0x224),
- /* crb_status_ring_size */
- NETXEN_NIC_REG(0x228),
+ /* crb_rcv_producer: */
+ {
+ NETXEN_NIC_REG(0x1d8),
+ /* Jumbo frames */
+ NETXEN_NIC_REG(0x1f8),
+ /* LRO */
+ NETXEN_NIC_REG(0x208)
+ },
+ /* crb_sts_consumer: */
+ NETXEN_NIC_REG(0x220),
},
/*
* Instance 3,
*/
{
- {
- {
- /* crb_rcv_producer_offset: */
- NETXEN_NIC_REG(0x22c),
- /* crb_rcv_consumer_offset: */
- NETXEN_NIC_REG(0x230),
- /* crb_gloablrcv_ring: */
- NETXEN_NIC_REG(0x234),
- /* crb_rcv_ring_size */
- NETXEN_NIC_REG(0x238),
- },
- /* Jumbo frames */
- {
- /* crb_rcv_producer_offset: */
- NETXEN_NIC_REG(0x23c),
- /* crb_rcv_consumer_offset: */
- NETXEN_NIC_REG(0x240),
- /* crb_gloablrcv_ring: */
- NETXEN_NIC_REG(0x244),
- /* crb_rcv_ring_size */
- NETXEN_NIC_REG(0x248),
- },
- /* LRO */
- {
- /* crb_rcv_producer_offset: */
- NETXEN_NIC_REG(0x24c),
- /* crb_rcv_consumer_offset: */
- NETXEN_NIC_REG(0x250),
- /* crb_gloablrcv_ring: */
- NETXEN_NIC_REG(0x254),
- /* crb_rcv_ring_size */
- NETXEN_NIC_REG(0x258),
- }
- },
- /* crb_rcvstatus_ring: */
- NETXEN_NIC_REG(0x25c),
- /* crb_rcv_status_producer: */
- NETXEN_NIC_REG(0x260),
- /* crb_rcv_status_consumer: */
- NETXEN_NIC_REG(0x264),
- /* crb_rcvpeg_state: */
- NETXEN_NIC_REG(0x268),
- /* crb_status_ring_size */
- NETXEN_NIC_REG(0x26c),
+ /* crb_rcv_producer: */
+ {
+ NETXEN_NIC_REG(0x22c),
+ /* Jumbo frames */
+ NETXEN_NIC_REG(0x23c),
+ /* LRO */
+ NETXEN_NIC_REG(0x24c)
+ },
+ /* crb_sts_consumer: */
+ NETXEN_NIC_REG(0x264),
},
};
@@ -375,16 +233,12 @@ int netxen_nic_hw_resources(struct netxen_adapter *adapter)
loops = 0;
state = 0;
/* Window 1 call */
- state = readl(NETXEN_CRB_NORMALIZE(adapter,
- recv_crb_registers[ctx].
- crb_rcvpeg_state));
+ state = readl(NETXEN_CRB_NORMALIZE(adapter, CRB_RCVPEG_STATE));
while (state != PHAN_PEG_RCV_INITIALIZED && loops < 20) {
msleep(1);
/* Window 1 call */
state = readl(NETXEN_CRB_NORMALIZE(adapter,
- recv_crb_registers
- [ctx].
- crb_rcvpeg_state));
+ CRB_RCVPEG_STATE));
loops++;
}
if (loops >= 20) {
@@ -399,11 +253,9 @@ int netxen_nic_hw_resources(struct netxen_adapter *adapter)
adapter->msi_mode = readl(
NETXEN_CRB_NORMALIZE(adapter, CRB_NIC_MSI_MODE_FW));
- addr = netxen_alloc(adapter->ahw.pdev,
- sizeof(struct netxen_ring_ctx) +
- sizeof(uint32_t),
- (dma_addr_t *) & adapter->ctx_desc_phys_addr,
- &adapter->ctx_desc_pdev);
+ addr = pci_alloc_consistent(adapter->pdev,
+ sizeof(struct netxen_ring_ctx) + sizeof(uint32_t),
+ &adapter->ctx_desc_phys_addr);
if (addr == NULL) {
DPRINTK(ERR, "bad return from pci_alloc_consistent\n");
@@ -419,11 +271,10 @@ int netxen_nic_hw_resources(struct netxen_adapter *adapter)
adapter->cmd_consumer = (__le32 *) (((char *)addr) +
sizeof(struct netxen_ring_ctx));
- addr = netxen_alloc(adapter->ahw.pdev,
+ addr = pci_alloc_consistent(adapter->pdev,
sizeof(struct cmd_desc_type0) *
adapter->max_tx_desc_count,
- (dma_addr_t *) & hw->cmd_desc_phys_addr,
- &adapter->ahw.cmd_desc_pdev);
+ &hw->cmd_desc_phys_addr);
if (addr == NULL) {
DPRINTK(ERR, "bad return from pci_alloc_consistent\n");
@@ -443,10 +294,9 @@ int netxen_nic_hw_resources(struct netxen_adapter *adapter)
for (ring = 0; ring < NUM_RCV_DESC_RINGS; ring++) {
rcv_desc = &recv_ctx->rcv_desc[ring];
- addr = netxen_alloc(adapter->ahw.pdev,
+ addr = pci_alloc_consistent(adapter->pdev,
RCV_DESC_RINGSIZE,
- &rcv_desc->phys_addr,
- &rcv_desc->phys_pdev);
+ &rcv_desc->phys_addr);
if (addr == NULL) {
DPRINTK(ERR, "bad return from "
"pci_alloc_consistent\n");
@@ -459,11 +309,13 @@ int netxen_nic_hw_resources(struct netxen_adapter *adapter)
cpu_to_le64(rcv_desc->phys_addr);
adapter->ctx_desc->rcv_ctx[ring].rcv_ring_size =
cpu_to_le32(rcv_desc->max_rx_desc_count);
+ rcv_desc->crb_rcv_producer =
+ recv_crb_registers[adapter->portnum].
+ crb_rcv_producer[ring];
}
- addr = netxen_alloc(adapter->ahw.pdev, STATUS_DESC_RINGSIZE,
- &recv_ctx->rcv_status_desc_phys_addr,
- &recv_ctx->rcv_status_desc_pdev);
+ addr = pci_alloc_consistent(adapter->pdev, STATUS_DESC_RINGSIZE,
+ &recv_ctx->rcv_status_desc_phys_addr);
if (addr == NULL) {
DPRINTK(ERR, "bad return from"
" pci_alloc_consistent\n");
@@ -476,6 +328,8 @@ int netxen_nic_hw_resources(struct netxen_adapter *adapter)
cpu_to_le64(recv_ctx->rcv_status_desc_phys_addr);
adapter->ctx_desc->sts_ring_size =
cpu_to_le32(adapter->max_rx_desc_count);
+ recv_ctx->crb_sts_consumer =
+ recv_crb_registers[adapter->portnum].crb_sts_consumer;
}
/* Window = 1 */
@@ -496,7 +350,7 @@ void netxen_free_hw_resources(struct netxen_adapter *adapter)
int ctx, ring;
if (adapter->ctx_desc != NULL) {
- pci_free_consistent(adapter->ctx_desc_pdev,
+ pci_free_consistent(adapter->pdev,
sizeof(struct netxen_ring_ctx) +
sizeof(uint32_t),
adapter->ctx_desc,
@@ -505,7 +359,7 @@ void netxen_free_hw_resources(struct netxen_adapter *adapter)
}
if (adapter->ahw.cmd_desc_head != NULL) {
- pci_free_consistent(adapter->ahw.cmd_desc_pdev,
+ pci_free_consistent(adapter->pdev,
sizeof(struct cmd_desc_type0) *
adapter->max_tx_desc_count,
adapter->ahw.cmd_desc_head,
@@ -519,7 +373,7 @@ void netxen_free_hw_resources(struct netxen_adapter *adapter)
rcv_desc = &recv_ctx->rcv_desc[ring];
if (rcv_desc->desc_head != NULL) {
- pci_free_consistent(rcv_desc->phys_pdev,
+ pci_free_consistent(adapter->pdev,
RCV_DESC_RINGSIZE,
rcv_desc->desc_head,
rcv_desc->phys_addr);
@@ -528,7 +382,7 @@ void netxen_free_hw_resources(struct netxen_adapter *adapter)
}
if (recv_ctx->rcv_status_desc_head != NULL) {
- pci_free_consistent(recv_ctx->rcv_status_desc_pdev,
+ pci_free_consistent(adapter->pdev,
STATUS_DESC_RINGSIZE,
recv_ctx->rcv_status_desc_head,
recv_ctx->
diff --git a/drivers/net/netxen/netxen_nic_init.c b/drivers/net/netxen/netxen_nic_init.c
index 70d1b22..37fd6bc 100644
--- a/drivers/net/netxen/netxen_nic_init.c
+++ b/drivers/net/netxen/netxen_nic_init.c
@@ -42,8 +42,6 @@ struct crb_addr_pair {
u32 data;
};
-unsigned long last_schedule_time;
-
#define NETXEN_MAX_CRB_XFORM 60
static unsigned int crb_addr_xform[NETXEN_MAX_CRB_XFORM];
#define NETXEN_ADDR_ERROR (0xffffffff)
@@ -155,24 +153,6 @@ int netxen_init_firmware(struct netxen_adapter *adapter)
return err;
}
-#define NETXEN_ADDR_LIMIT 0xffffffffULL
-
-void *netxen_alloc(struct pci_dev *pdev, size_t sz, dma_addr_t * ptr,
- struct pci_dev **used_dev)
-{
- void *addr;
-
- addr = pci_alloc_consistent(pdev, sz, ptr);
- if ((unsigned long long)(*ptr) < NETXEN_ADDR_LIMIT) {
- *used_dev = pdev;
- return addr;
- }
- pci_free_consistent(pdev, sz, addr, *ptr);
- addr = pci_alloc_consistent(NULL, sz, ptr);
- *used_dev = NULL;
- return addr;
-}
-
void netxen_initialize_adapter_sw(struct netxen_adapter *adapter)
{
int ctxid, ring;
@@ -270,7 +250,9 @@ static u32 netxen_decode_crb_addr(u32 addr)
static long rom_max_timeout = 100;
static long rom_lock_timeout = 10000;
+#if 0
static long rom_write_timeout = 700;
+#endif
static int rom_lock(struct netxen_adapter *adapter)
{
@@ -319,6 +301,7 @@ static int netxen_wait_rom_done(struct netxen_adapter *adapter)
return 0;
}
+#if 0
static int netxen_rom_wren(struct netxen_adapter *adapter)
{
/* Set write enable latch in ROM status register */
@@ -348,6 +331,7 @@ static int netxen_do_rom_rdsr(struct netxen_adapter *adapter)
}
return netxen_rdcrbreg(adapter, NETXEN_ROMUSB_ROM_RDATA);
}
+#endif
static void netxen_rom_unlock(struct netxen_adapter *adapter)
{
@@ -358,6 +342,7 @@ static void netxen_rom_unlock(struct netxen_adapter *adapter)
}
+#if 0
static int netxen_rom_wip_poll(struct netxen_adapter *adapter)
{
long timeout = 0;
@@ -393,6 +378,7 @@ static int do_rom_fast_write(struct netxen_adapter *adapter, int addr,
return netxen_rom_wip_poll(adapter);
}
+#endif
static int do_rom_fast_read(struct netxen_adapter *adapter,
int addr, int *valp)
@@ -475,7 +461,6 @@ int netxen_rom_fast_write(struct netxen_adapter *adapter, int addr, int data)
netxen_rom_unlock(adapter);
return ret;
}
-#endif /* 0 */
static int do_rom_fast_write_words(struct netxen_adapter *adapter,
int addr, u8 *bytes, size_t size)
@@ -740,13 +725,12 @@ int netxen_flash_unlock(struct netxen_adapter *adapter)
return ret;
}
+#endif /* 0 */
#define NETXEN_BOARDTYPE 0x4008
#define NETXEN_BOARDNUM 0x400c
#define NETXEN_CHIPNUM 0x4010
#define NETXEN_ROMBUS_RESET 0xFFFFFFFF
-#define NETXEN_ROM_FIRST_BARRIER 0x800000000ULL
-#define NETXEN_ROM_FOUND_INIT 0x400
int netxen_pinit_from_rom(struct netxen_adapter *adapter, int verbose)
{
@@ -776,10 +760,9 @@ int netxen_pinit_from_rom(struct netxen_adapter *adapter, int verbose)
printk("Could not read chip number\n");
}
- if (netxen_rom_fast_read(adapter, 0, &n) == 0
- && (n & NETXEN_ROM_FIRST_BARRIER)) {
- n &= ~NETXEN_ROM_ROUNDUP;
- if (n < NETXEN_ROM_FOUND_INIT) {
+ if (netxen_rom_fast_read(adapter, 0, &n) == 0 && (n & 0x80000000)) {
+ n &= ~0x80000000;
+ if (n < 0x400) {
if (verbose)
printk("%s: %d CRB init values found"
" in ROM.\n", netxen_nic_driver_name, n);
@@ -829,16 +812,8 @@ int netxen_pinit_from_rom(struct netxen_adapter *adapter, int verbose)
buf[i].data = NETXEN_NIC_XDMA_RESET;
}
- if (ADDR_IN_WINDOW1(off)) {
- writel(buf[i].data,
- NETXEN_CRB_NORMALIZE(adapter, off));
- } else {
- netxen_nic_pci_change_crbwindow(adapter, 0);
- writel(buf[i].data,
- pci_base_offset(adapter, off));
+ netxen_nic_hw_write_wx(adapter, off, &buf[i].data, 4);
- netxen_nic_pci_change_crbwindow(adapter, 1);
- }
if (init_delay == 1) {
msleep(1000);
init_delay = 0;
@@ -897,7 +872,7 @@ int netxen_initialize_adapter_offload(struct netxen_adapter *adapter)
uint32_t lo;
adapter->dummy_dma.addr =
- pci_alloc_consistent(adapter->ahw.pdev,
+ pci_alloc_consistent(adapter->pdev,
NETXEN_HOST_DUMMY_DMA_SIZE,
&adapter->dummy_dma.phys_addr);
if (adapter->dummy_dma.addr == NULL) {
@@ -931,7 +906,7 @@ void netxen_free_adapter_offload(struct netxen_adapter *adapter)
} while (--i);
if (i) {
- pci_free_consistent(adapter->ahw.pdev,
+ pci_free_consistent(adapter->pdev,
NETXEN_HOST_DUMMY_DMA_SIZE,
adapter->dummy_dma.addr,
adapter->dummy_dma.phys_addr);
@@ -1104,8 +1079,6 @@ static void netxen_process_rcv(struct netxen_adapter *adapter, int ctxid,
ret = netif_receive_skb(skb);
netdev->last_rx = jiffies;
- rcv_desc->rcv_pending--;
-
/*
* We just consumed one buffer so post a buffer.
*/
@@ -1125,7 +1098,6 @@ u32 netxen_process_rcv_ring(struct netxen_adapter *adapter, int ctxid, int max)
struct status_desc *desc_head = recv_ctx->rcv_status_desc_head;
struct status_desc *desc; /* used to read status desc here */
u32 consumer = recv_ctx->status_rx_consumer;
- u32 producer = 0;
int count = 0, ring;
while (count < max) {
@@ -1146,13 +1118,10 @@ u32 netxen_process_rcv_ring(struct netxen_adapter *adapter, int ctxid, int max)
/* update the consumer index in phantom */
if (count) {
recv_ctx->status_rx_consumer = consumer;
- recv_ctx->status_rx_producer = producer;
/* Window = 1 */
- writel(consumer,
- NETXEN_CRB_NORMALIZE(adapter,
- recv_crb_registers[adapter->portnum].
- crb_rcv_status_consumer));
+ writel(consumer, NETXEN_CRB_NORMALIZE(adapter,
+ recv_ctx->crb_sts_consumer));
}
return count;
@@ -1231,7 +1200,7 @@ int netxen_process_cmd_ring(struct netxen_adapter *adapter)
*/
void netxen_post_rx_buffers(struct netxen_adapter *adapter, u32 ctx, u32 ringid)
{
- struct pci_dev *pdev = adapter->ahw.pdev;
+ struct pci_dev *pdev = adapter->pdev;
struct sk_buff *skb;
struct netxen_recv_context *recv_ctx = &(adapter->recv_ctx[ctx]);
struct netxen_rcv_desc_ctx *rcv_desc = NULL;
@@ -1294,16 +1263,11 @@ void netxen_post_rx_buffers(struct netxen_adapter *adapter, u32 ctx, u32 ringid)
/* if we did allocate buffers, then write the count to Phantom */
if (count) {
rcv_desc->begin_alloc = index;
- rcv_desc->rcv_pending += count;
rcv_desc->producer = producer;
/* Window = 1 */
- writel((producer - 1) &
- (rcv_desc->max_rx_desc_count - 1),
- NETXEN_CRB_NORMALIZE(adapter,
- recv_crb_registers[
- adapter->portnum].
- rcv_desc_crb[ringid].
- crb_rcv_producer_offset));
+ writel((producer - 1) & (rcv_desc->max_rx_desc_count - 1),
+ NETXEN_CRB_NORMALIZE(adapter,
+ rcv_desc->crb_rcv_producer));
/*
* Write a doorbell msg to tell phanmon of change in
* receive ring producer
@@ -1325,7 +1289,7 @@ void netxen_post_rx_buffers(struct netxen_adapter *adapter, u32 ctx, u32 ringid)
static void netxen_post_rx_buffers_nodb(struct netxen_adapter *adapter,
uint32_t ctx, uint32_t ringid)
{
- struct pci_dev *pdev = adapter->ahw.pdev;
+ struct pci_dev *pdev = adapter->pdev;
struct sk_buff *skb;
struct netxen_recv_context *recv_ctx = &(adapter->recv_ctx[ctx]);
struct netxen_rcv_desc_ctx *rcv_desc = NULL;
@@ -1370,7 +1334,6 @@ static void netxen_post_rx_buffers_nodb(struct netxen_adapter *adapter,
pdesc->reference_handle = cpu_to_le16(buffer->ref_handle);
pdesc->buffer_length = cpu_to_le32(rcv_desc->dma_size);
pdesc->addr_buffer = cpu_to_le64(buffer->dma);
- DPRINTK(INFO, "done writing descripter\n");
producer =
get_next_index(producer, rcv_desc->max_rx_desc_count);
index = get_next_index(index, rcv_desc->max_rx_desc_count);
@@ -1380,16 +1343,11 @@ static void netxen_post_rx_buffers_nodb(struct netxen_adapter *adapter,
/* if we did allocate buffers, then write the count to Phantom */
if (count) {
rcv_desc->begin_alloc = index;
- rcv_desc->rcv_pending += count;
rcv_desc->producer = producer;
/* Window = 1 */
- writel((producer - 1) &
- (rcv_desc->max_rx_desc_count - 1),
- NETXEN_CRB_NORMALIZE(adapter,
- recv_crb_registers[
- adapter->portnum].
- rcv_desc_crb[ringid].
- crb_rcv_producer_offset));
+ writel((producer - 1) & (rcv_desc->max_rx_desc_count - 1),
+ NETXEN_CRB_NORMALIZE(adapter,
+ rcv_desc->crb_rcv_producer));
wmb();
}
}
diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c
index 63cd67b..91b02eb 100644
--- a/drivers/net/netxen/netxen_nic_main.c
+++ b/drivers/net/netxen/netxen_nic_main.c
@@ -108,66 +108,30 @@ static struct workqueue_struct *netxen_workq;
static void netxen_watchdog(unsigned long);
+static uint32_t crb_cmd_producer[4] = {
+ CRB_CMD_PRODUCER_OFFSET, CRB_CMD_PRODUCER_OFFSET_1,
+ CRB_CMD_PRODUCER_OFFSET_2, CRB_CMD_PRODUCER_OFFSET_3
+};
+
static void netxen_nic_update_cmd_producer(struct netxen_adapter *adapter,
uint32_t crb_producer)
{
- switch (adapter->portnum) {
- case 0:
- writel(crb_producer, NETXEN_CRB_NORMALIZE
- (adapter, CRB_CMD_PRODUCER_OFFSET));
- return;
- case 1:
- writel(crb_producer, NETXEN_CRB_NORMALIZE
- (adapter, CRB_CMD_PRODUCER_OFFSET_1));
- return;
- case 2:
- writel(crb_producer, NETXEN_CRB_NORMALIZE
- (adapter, CRB_CMD_PRODUCER_OFFSET_2));
- return;
- case 3:
- writel(crb_producer, NETXEN_CRB_NORMALIZE
- (adapter, CRB_CMD_PRODUCER_OFFSET_3));
- return;
- default:
- printk(KERN_WARNING "We tried to update "
- "CRB_CMD_PRODUCER_OFFSET for invalid "
- "PCI function id %d\n",
- adapter->portnum);
- return;
- }
+ writel(crb_producer, NETXEN_CRB_NORMALIZE(adapter,
+ adapter->crb_addr_cmd_producer));
}
+static uint32_t crb_cmd_consumer[4] = {
+ CRB_CMD_CONSUMER_OFFSET, CRB_CMD_CONSUMER_OFFSET_1,
+ CRB_CMD_CONSUMER_OFFSET_2, CRB_CMD_CONSUMER_OFFSET_3
+};
+
static void netxen_nic_update_cmd_consumer(struct netxen_adapter *adapter,
u32 crb_consumer)
{
- switch (adapter->portnum) {
- case 0:
- writel(crb_consumer, NETXEN_CRB_NORMALIZE
- (adapter, CRB_CMD_CONSUMER_OFFSET));
- return;
- case 1:
- writel(crb_consumer, NETXEN_CRB_NORMALIZE
- (adapter, CRB_CMD_CONSUMER_OFFSET_1));
- return;
- case 2:
- writel(crb_consumer, NETXEN_CRB_NORMALIZE
- (adapter, CRB_CMD_CONSUMER_OFFSET_2));
- return;
- case 3:
- writel(crb_consumer, NETXEN_CRB_NORMALIZE
- (adapter, CRB_CMD_CONSUMER_OFFSET_3));
- return;
- default:
- printk(KERN_WARNING "We tried to update "
- "CRB_CMD_PRODUCER_OFFSET for invalid "
- "PCI function id %d\n",
- adapter->portnum);
- return;
- }
+ writel(crb_consumer, NETXEN_CRB_NORMALIZE(adapter,
+ adapter->crb_addr_cmd_consumer));
}
-#define ADAPTER_LIST_SIZE 12
-
static uint32_t msi_tgt_status[4] = {
ISR_INT_TARGET_STATUS, ISR_INT_TARGET_STATUS_F1,
ISR_INT_TARGET_STATUS_F2, ISR_INT_TARGET_STATUS_F3
@@ -334,7 +298,6 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
adapter = netdev->priv;
- adapter->ahw.pdev = pdev;
adapter->ahw.pci_func = pci_func_id;
/* remap phys address */
@@ -552,12 +515,13 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
adapter->watchdog_timer.function = &netxen_watchdog;
adapter->watchdog_timer.data = (unsigned long)adapter;
INIT_WORK(&adapter->watchdog_task, netxen_watchdog_task);
- adapter->ahw.pdev = pdev;
adapter->ahw.revision_id = pdev->revision;
/* make sure Window == 1 */
netxen_nic_pci_change_crbwindow(adapter, 1);
+ adapter->crb_addr_cmd_producer = crb_cmd_producer[adapter->portnum];
+ adapter->crb_addr_cmd_consumer = crb_cmd_consumer[adapter->portnum];
netxen_nic_update_cmd_producer(adapter, 0);
netxen_nic_update_cmd_consumer(adapter, 0);
writel(0, NETXEN_CRB_NORMALIZE(adapter, CRB_HOST_CMD_ADDR_LO));
@@ -816,7 +780,7 @@ static int netxen_nic_open(struct net_device *netdev)
for (ring = 0; ring < NUM_RCV_DESC_RINGS; ring++)
netxen_post_rx_buffers(adapter, ctx, ring);
}
- adapter->irq = adapter->ahw.pdev->irq;
+ adapter->irq = adapter->pdev->irq;
if (adapter->flags & NETXEN_NIC_MSI_ENABLED)
handler = netxen_msi_intr;
else {
@@ -1220,10 +1184,6 @@ module_init(netxen_init_module);
static void __exit netxen_exit_module(void)
{
- /*
- * Wait for some time to allow the dma to drain, if any.
- */
- msleep(100);
pci_unregister_driver(&netxen_driver);
destroy_workqueue(netxen_workq);
}
diff --git a/drivers/net/netxen/netxen_nic_phan_reg.h b/drivers/net/netxen/netxen_nic_phan_reg.h
index a566b50..db2202a 100644
--- a/drivers/net/netxen/netxen_nic_phan_reg.h
+++ b/drivers/net/netxen/netxen_nic_phan_reg.h
@@ -98,6 +98,7 @@
#define CRB_JUMBO_BUFFER_PROD NETXEN_NIC_REG(0xf4)
#define CRB_JUMBO_BUFFER_CONS NETXEN_NIC_REG(0xf8)
+#define CRB_RCVPEG_STATE NETXEN_NIC_REG(0x13c)
#define CRB_CMD_PRODUCER_OFFSET_1 NETXEN_NIC_REG(0x1ac)
#define CRB_CMD_CONSUMER_OFFSET_1 NETXEN_NIC_REG(0x1b0)
#define CRB_CMD_PRODUCER_OFFSET_2 NETXEN_NIC_REG(0x1b8)
@@ -147,25 +148,13 @@
#define nx_get_temp_state(x) ((x) & 0xffff)
#define nx_encode_temp(val, state) (((val) << 16) | (state))
-/* CRB registers per Rcv Descriptor ring */
-struct netxen_rcv_desc_crb {
- u32 crb_rcv_producer_offset __attribute__ ((aligned(512)));
- u32 crb_rcv_consumer_offset;
- u32 crb_globalrcv_ring;
- u32 crb_rcv_ring_size;
-};
-
/*
* CRB registers used by the receive peg logic.
*/
struct netxen_recv_crb {
- struct netxen_rcv_desc_crb rcv_desc_crb[NUM_RCV_DESC_RINGS];
- u32 crb_rcvstatus_ring;
- u32 crb_rcv_status_producer;
- u32 crb_rcv_status_consumer;
- u32 crb_rcvpeg_state;
- u32 crb_status_ring_size;
+ u32 crb_rcv_producer[NUM_RCV_DESC_RINGS];
+ u32 crb_sts_consumer;
};
extern struct netxen_recv_crb recv_crb_registers[];
--
1.5.4.3
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH 1/6] netxen: cleanup unused variables/functions
2008-07-12 19:25 [PATCH 1/6] netxen: cleanup unused variables/functions Dhananjay Phadke
@ 2008-07-22 21:53 ` Dhananjay Phadke
0 siblings, 0 replies; 2+ messages in thread
From: Dhananjay Phadke @ 2008-07-22 21:53 UTC (permalink / raw)
To: netdev@vger.kernel.org; +Cc: jeff@garzik.org
Another marker to invalidate this 6 patch series. This is superseded by
11 patch series prefixed RESENDv2.
Thanks,
-Dhananjay
Dhananjay Phadke wrote:
> o Reduce access to global arrays in data path.
> o Remove duplicate/unused variables, unecessary alignment constraints.
> o Use correct pci_dev instead of fallback device for consistent
> allocations.
> o Disable ethtool set_eeprom functionality for now, it was only used
> for flashing firmware.
>
> Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>
> ---
> drivers/net/netxen/netxen_nic.h | 19 +--
> drivers/net/netxen/netxen_nic_ethtool.c | 5 +-
> drivers/net/netxen/netxen_nic_hw.c | 270 +++++++-----------------------
> drivers/net/netxen/netxen_nic_init.c | 88 +++-------
> drivers/net/netxen/netxen_nic_main.c | 74 ++-------
> drivers/net/netxen/netxen_nic_phan_reg.h | 17 +--
> 6 files changed, 113 insertions(+), 360 deletions(-)
>
> diff --git a/drivers/net/netxen/netxen_nic.h b/drivers/net/netxen/netxen_nic.h
> index da4c4fb..149bb60 100644
> --- a/drivers/net/netxen/netxen_nic.h
> +++ b/drivers/net/netxen/netxen_nic.h
> @@ -132,7 +132,6 @@
> #define RX_JUMBO_DMA_MAP_LEN \
> (MAX_RX_JUMBO_BUFFER_LENGTH - 2)
> #define RX_LRO_DMA_MAP_LEN (MAX_RX_LRO_BUFFER_LENGTH - 2)
> -#define NETXEN_ROM_ROUNDUP 0x80000000ULL
>
> /*
> * Maximum number of ring contexts
> @@ -219,8 +218,6 @@ enum {
> #define MPORT_MULTI_FUNCTION_MODE 0x2222
>
> #include "netxen_nic_phan_reg.h"
> -extern unsigned long long netxen_dma_mask;
> -extern unsigned long last_schedule_time;
>
> /*
> * NetXen host-peg signal message structure
> @@ -765,7 +762,6 @@ struct netxen_rx_buffer {
> * contains interrupt info as well shared hardware info.
> */
> struct netxen_hardware_context {
> - struct pci_dev *pdev;
> void __iomem *pci_base0;
> void __iomem *pci_base1;
> void __iomem *pci_base2;
> @@ -781,7 +777,6 @@ struct netxen_hardware_context {
> u32 qg_linksup;
> /* Address of cmd ring in Phantom */
> struct cmd_desc_type0 *cmd_desc_head;
> - struct pci_dev *cmd_desc_pdev;
> dma_addr_t cmd_desc_phys_addr;
> struct netxen_adapter *adapter;
> int pci_func;
> @@ -816,9 +811,8 @@ struct netxen_adapter_stats {
> struct netxen_rcv_desc_ctx {
> u32 flags;
> u32 producer;
> - u32 rcv_pending; /* Num of bufs posted in phantom */
> dma_addr_t phys_addr;
> - struct pci_dev *phys_pdev;
> + u32 crb_rcv_producer; /* reg offset */
> struct rcv_desc *desc_head; /* address of rx ring in Phantom */
> u32 max_rx_desc_count;
> u32 dma_size;
> @@ -835,10 +829,9 @@ struct netxen_rcv_desc_ctx {
> */
> struct netxen_recv_context {
> struct netxen_rcv_desc_ctx rcv_desc[NUM_RCV_DESC_RINGS];
> - u32 status_rx_producer;
> u32 status_rx_consumer;
> + u32 crb_sts_consumer; /* reg offset */
> dma_addr_t rcv_status_desc_phys_addr;
> - struct pci_dev *rcv_status_desc_pdev;
> struct status_desc *rcv_status_desc_head;
> };
>
> @@ -854,7 +847,6 @@ struct netxen_dummy_dma {
> struct netxen_adapter {
> struct netxen_hardware_context ahw;
>
> - struct netxen_adapter *master;
> struct net_device *netdev;
> struct pci_dev *pdev;
> struct napi_struct napi;
> @@ -873,6 +865,8 @@ struct netxen_adapter {
> u32 cmd_producer;
> __le32 *cmd_consumer;
> u32 last_cmd_consumer;
> + u32 crb_addr_cmd_producer;
> + u32 crb_addr_cmd_consumer;
>
> u32 max_tx_desc_count;
> u32 max_rx_desc_count;
> @@ -886,14 +880,12 @@ struct netxen_adapter {
>
> struct netxen_adapter_stats stats;
>
> - u16 portno;
> u16 link_speed;
> u16 link_duplex;
> u16 state;
> u16 link_autoneg;
> int rx_csum;
> int status;
> - spinlock_t stats_lock;
>
> struct netxen_cmd_buffer *cmd_buf_arr; /* Command buffers for xmit */
>
> @@ -908,7 +900,6 @@ struct netxen_adapter {
>
> /* Context interface shared between card and host */
> struct netxen_ring_ctx *ctx_desc;
> - struct pci_dev *ctx_desc_pdev;
> dma_addr_t ctx_desc_phys_addr;
> int intr_scheme;
> int msi_mode;
> @@ -1034,8 +1025,6 @@ int netxen_rom_se(struct netxen_adapter *adapter, int addr);
>
> /* Functions from netxen_nic_isr.c */
> void netxen_initialize_adapter_sw(struct netxen_adapter *adapter);
> -void *netxen_alloc(struct pci_dev *pdev, size_t sz, dma_addr_t * ptr,
> - struct pci_dev **used_dev);
> void netxen_initialize_adapter_ops(struct netxen_adapter *adapter);
> int netxen_init_firmware(struct netxen_adapter *adapter);
> void netxen_free_hw_resources(struct netxen_adapter *adapter);
> diff --git a/drivers/net/netxen/netxen_nic_ethtool.c b/drivers/net/netxen/netxen_nic_ethtool.c
> index 723487b..99071c2 100644
> --- a/drivers/net/netxen/netxen_nic_ethtool.c
> +++ b/drivers/net/netxen/netxen_nic_ethtool.c
> @@ -427,6 +427,7 @@ netxen_nic_get_eeprom(struct net_device *dev, struct ethtool_eeprom *eeprom,
> return 0;
> }
>
> +#if 0
> static int
> netxen_nic_set_eeprom(struct net_device *dev, struct ethtool_eeprom *eeprom,
> u8 * bytes)
> @@ -447,7 +448,6 @@ netxen_nic_set_eeprom(struct net_device *dev, struct ethtool_eeprom *eeprom,
> }
> printk(KERN_INFO "%s: flash unlocked. \n",
> netxen_nic_driver_name);
> - last_schedule_time = jiffies;
> ret = netxen_flash_erase_secondary(adapter);
> if (ret != FLASH_SUCCESS) {
> printk(KERN_ERR "%s: Flash erase failed.\n",
> @@ -497,6 +497,7 @@ netxen_nic_set_eeprom(struct net_device *dev, struct ethtool_eeprom *eeprom,
>
> return netxen_rom_fast_write_words(adapter, offset, bytes, eeprom->len);
> }
> +#endif /* 0 */
>
> static void
> netxen_nic_get_ringparam(struct net_device *dev, struct ethtool_ringparam *ring)
> @@ -745,7 +746,9 @@ struct ethtool_ops netxen_nic_ethtool_ops = {
> .get_link = ethtool_op_get_link,
> .get_eeprom_len = netxen_nic_get_eeprom_len,
> .get_eeprom = netxen_nic_get_eeprom,
> +#if 0
> .set_eeprom = netxen_nic_set_eeprom,
> +#endif
> .get_ringparam = netxen_nic_get_ringparam,
> .get_pauseparam = netxen_nic_get_pauseparam,
> .set_pauseparam = netxen_nic_set_pauseparam,
> diff --git a/drivers/net/netxen/netxen_nic_hw.c b/drivers/net/netxen/netxen_nic_hw.c
> index c43d06b..fa6d034 100644
> --- a/drivers/net/netxen/netxen_nic_hw.c
> +++ b/drivers/net/netxen/netxen_nic_hw.c
> @@ -43,203 +43,61 @@ struct netxen_recv_crb recv_crb_registers[] = {
> * Instance 0.
> */
> {
> - /* rcv_desc_crb: */
> - {
> - {
> - /* crb_rcv_producer_offset: */
> - NETXEN_NIC_REG(0x100),
> - /* crb_rcv_consumer_offset: */
> - NETXEN_NIC_REG(0x104),
> - /* crb_gloablrcv_ring: */
> - NETXEN_NIC_REG(0x108),
> - /* crb_rcv_ring_size */
> - NETXEN_NIC_REG(0x10c),
> -
> - },
> - /* Jumbo frames */
> - {
> - /* crb_rcv_producer_offset: */
> - NETXEN_NIC_REG(0x110),
> - /* crb_rcv_consumer_offset: */
> - NETXEN_NIC_REG(0x114),
> - /* crb_gloablrcv_ring: */
> - NETXEN_NIC_REG(0x118),
> - /* crb_rcv_ring_size */
> - NETXEN_NIC_REG(0x11c),
> - },
> - /* LRO */
> - {
> - /* crb_rcv_producer_offset: */
> - NETXEN_NIC_REG(0x120),
> - /* crb_rcv_consumer_offset: */
> - NETXEN_NIC_REG(0x124),
> - /* crb_gloablrcv_ring: */
> - NETXEN_NIC_REG(0x128),
> - /* crb_rcv_ring_size */
> - NETXEN_NIC_REG(0x12c),
> - }
> - },
> - /* crb_rcvstatus_ring: */
> - NETXEN_NIC_REG(0x130),
> - /* crb_rcv_status_producer: */
> - NETXEN_NIC_REG(0x134),
> - /* crb_rcv_status_consumer: */
> - NETXEN_NIC_REG(0x138),
> - /* crb_rcvpeg_state: */
> - NETXEN_NIC_REG(0x13c),
> - /* crb_status_ring_size */
> - NETXEN_NIC_REG(0x140),
> -
> - },
> + /* crb_rcv_producer: */
> + {
> + NETXEN_NIC_REG(0x100),
> + /* Jumbo frames */
> + NETXEN_NIC_REG(0x110),
> + /* LRO */
> + NETXEN_NIC_REG(0x120)
> + },
> + /* crb_sts_consumer: */
> + NETXEN_NIC_REG(0x138),
> + },
> /*
> * Instance 1,
> */
> {
> - /* rcv_desc_crb: */
> - {
> - {
> - /* crb_rcv_producer_offset: */
> - NETXEN_NIC_REG(0x144),
> - /* crb_rcv_consumer_offset: */
> - NETXEN_NIC_REG(0x148),
> - /* crb_globalrcv_ring: */
> - NETXEN_NIC_REG(0x14c),
> - /* crb_rcv_ring_size */
> - NETXEN_NIC_REG(0x150),
> -
> - },
> - /* Jumbo frames */
> - {
> - /* crb_rcv_producer_offset: */
> - NETXEN_NIC_REG(0x154),
> - /* crb_rcv_consumer_offset: */
> - NETXEN_NIC_REG(0x158),
> - /* crb_globalrcv_ring: */
> - NETXEN_NIC_REG(0x15c),
> - /* crb_rcv_ring_size */
> - NETXEN_NIC_REG(0x160),
> - },
> - /* LRO */
> - {
> - /* crb_rcv_producer_offset: */
> - NETXEN_NIC_REG(0x164),
> - /* crb_rcv_consumer_offset: */
> - NETXEN_NIC_REG(0x168),
> - /* crb_globalrcv_ring: */
> - NETXEN_NIC_REG(0x16c),
> - /* crb_rcv_ring_size */
> - NETXEN_NIC_REG(0x170),
> - }
> -
> - },
> - /* crb_rcvstatus_ring: */
> - NETXEN_NIC_REG(0x174),
> - /* crb_rcv_status_producer: */
> - NETXEN_NIC_REG(0x178),
> - /* crb_rcv_status_consumer: */
> - NETXEN_NIC_REG(0x17c),
> - /* crb_rcvpeg_state: */
> - NETXEN_NIC_REG(0x180),
> - /* crb_status_ring_size */
> - NETXEN_NIC_REG(0x184),
> - },
> + /* crb_rcv_producer: */
> + {
> + NETXEN_NIC_REG(0x144),
> + /* Jumbo frames */
> + NETXEN_NIC_REG(0x154),
> + /* LRO */
> + NETXEN_NIC_REG(0x164)
> + },
> + /* crb_sts_consumer: */
> + NETXEN_NIC_REG(0x17c),
> + },
> /*
> * Instance 2,
> */
> {
> - {
> - {
> - /* crb_rcv_producer_offset: */
> - NETXEN_NIC_REG(0x1d8),
> - /* crb_rcv_consumer_offset: */
> - NETXEN_NIC_REG(0x1dc),
> - /* crb_gloablrcv_ring: */
> - NETXEN_NIC_REG(0x1f0),
> - /* crb_rcv_ring_size */
> - NETXEN_NIC_REG(0x1f4),
> - },
> - /* Jumbo frames */
> - {
> - /* crb_rcv_producer_offset: */
> - NETXEN_NIC_REG(0x1f8),
> - /* crb_rcv_consumer_offset: */
> - NETXEN_NIC_REG(0x1fc),
> - /* crb_gloablrcv_ring: */
> - NETXEN_NIC_REG(0x200),
> - /* crb_rcv_ring_size */
> - NETXEN_NIC_REG(0x204),
> - },
> - /* LRO */
> - {
> - /* crb_rcv_producer_offset: */
> - NETXEN_NIC_REG(0x208),
> - /* crb_rcv_consumer_offset: */
> - NETXEN_NIC_REG(0x20c),
> - /* crb_gloablrcv_ring: */
> - NETXEN_NIC_REG(0x210),
> - /* crb_rcv_ring_size */
> - NETXEN_NIC_REG(0x214),
> - }
> - },
> - /* crb_rcvstatus_ring: */
> - NETXEN_NIC_REG(0x218),
> - /* crb_rcv_status_producer: */
> - NETXEN_NIC_REG(0x21c),
> - /* crb_rcv_status_consumer: */
> - NETXEN_NIC_REG(0x220),
> - /* crb_rcvpeg_state: */
> - NETXEN_NIC_REG(0x224),
> - /* crb_status_ring_size */
> - NETXEN_NIC_REG(0x228),
> + /* crb_rcv_producer: */
> + {
> + NETXEN_NIC_REG(0x1d8),
> + /* Jumbo frames */
> + NETXEN_NIC_REG(0x1f8),
> + /* LRO */
> + NETXEN_NIC_REG(0x208)
> + },
> + /* crb_sts_consumer: */
> + NETXEN_NIC_REG(0x220),
> },
> /*
> * Instance 3,
> */
> {
> - {
> - {
> - /* crb_rcv_producer_offset: */
> - NETXEN_NIC_REG(0x22c),
> - /* crb_rcv_consumer_offset: */
> - NETXEN_NIC_REG(0x230),
> - /* crb_gloablrcv_ring: */
> - NETXEN_NIC_REG(0x234),
> - /* crb_rcv_ring_size */
> - NETXEN_NIC_REG(0x238),
> - },
> - /* Jumbo frames */
> - {
> - /* crb_rcv_producer_offset: */
> - NETXEN_NIC_REG(0x23c),
> - /* crb_rcv_consumer_offset: */
> - NETXEN_NIC_REG(0x240),
> - /* crb_gloablrcv_ring: */
> - NETXEN_NIC_REG(0x244),
> - /* crb_rcv_ring_size */
> - NETXEN_NIC_REG(0x248),
> - },
> - /* LRO */
> - {
> - /* crb_rcv_producer_offset: */
> - NETXEN_NIC_REG(0x24c),
> - /* crb_rcv_consumer_offset: */
> - NETXEN_NIC_REG(0x250),
> - /* crb_gloablrcv_ring: */
> - NETXEN_NIC_REG(0x254),
> - /* crb_rcv_ring_size */
> - NETXEN_NIC_REG(0x258),
> - }
> - },
> - /* crb_rcvstatus_ring: */
> - NETXEN_NIC_REG(0x25c),
> - /* crb_rcv_status_producer: */
> - NETXEN_NIC_REG(0x260),
> - /* crb_rcv_status_consumer: */
> - NETXEN_NIC_REG(0x264),
> - /* crb_rcvpeg_state: */
> - NETXEN_NIC_REG(0x268),
> - /* crb_status_ring_size */
> - NETXEN_NIC_REG(0x26c),
> + /* crb_rcv_producer: */
> + {
> + NETXEN_NIC_REG(0x22c),
> + /* Jumbo frames */
> + NETXEN_NIC_REG(0x23c),
> + /* LRO */
> + NETXEN_NIC_REG(0x24c)
> + },
> + /* crb_sts_consumer: */
> + NETXEN_NIC_REG(0x264),
> },
> };
>
> @@ -375,16 +233,12 @@ int netxen_nic_hw_resources(struct netxen_adapter *adapter)
> loops = 0;
> state = 0;
> /* Window 1 call */
> - state = readl(NETXEN_CRB_NORMALIZE(adapter,
> - recv_crb_registers[ctx].
> - crb_rcvpeg_state));
> + state = readl(NETXEN_CRB_NORMALIZE(adapter, CRB_RCVPEG_STATE));
> while (state != PHAN_PEG_RCV_INITIALIZED && loops < 20) {
> msleep(1);
> /* Window 1 call */
> state = readl(NETXEN_CRB_NORMALIZE(adapter,
> - recv_crb_registers
> - [ctx].
> - crb_rcvpeg_state));
> + CRB_RCVPEG_STATE));
> loops++;
> }
> if (loops >= 20) {
> @@ -399,11 +253,9 @@ int netxen_nic_hw_resources(struct netxen_adapter *adapter)
> adapter->msi_mode = readl(
> NETXEN_CRB_NORMALIZE(adapter, CRB_NIC_MSI_MODE_FW));
>
> - addr = netxen_alloc(adapter->ahw.pdev,
> - sizeof(struct netxen_ring_ctx) +
> - sizeof(uint32_t),
> - (dma_addr_t *) & adapter->ctx_desc_phys_addr,
> - &adapter->ctx_desc_pdev);
> + addr = pci_alloc_consistent(adapter->pdev,
> + sizeof(struct netxen_ring_ctx) + sizeof(uint32_t),
> + &adapter->ctx_desc_phys_addr);
>
> if (addr == NULL) {
> DPRINTK(ERR, "bad return from pci_alloc_consistent\n");
> @@ -419,11 +271,10 @@ int netxen_nic_hw_resources(struct netxen_adapter *adapter)
> adapter->cmd_consumer = (__le32 *) (((char *)addr) +
> sizeof(struct netxen_ring_ctx));
>
> - addr = netxen_alloc(adapter->ahw.pdev,
> + addr = pci_alloc_consistent(adapter->pdev,
> sizeof(struct cmd_desc_type0) *
> adapter->max_tx_desc_count,
> - (dma_addr_t *) & hw->cmd_desc_phys_addr,
> - &adapter->ahw.cmd_desc_pdev);
> + &hw->cmd_desc_phys_addr);
>
> if (addr == NULL) {
> DPRINTK(ERR, "bad return from pci_alloc_consistent\n");
> @@ -443,10 +294,9 @@ int netxen_nic_hw_resources(struct netxen_adapter *adapter)
>
> for (ring = 0; ring < NUM_RCV_DESC_RINGS; ring++) {
> rcv_desc = &recv_ctx->rcv_desc[ring];
> - addr = netxen_alloc(adapter->ahw.pdev,
> + addr = pci_alloc_consistent(adapter->pdev,
> RCV_DESC_RINGSIZE,
> - &rcv_desc->phys_addr,
> - &rcv_desc->phys_pdev);
> + &rcv_desc->phys_addr);
> if (addr == NULL) {
> DPRINTK(ERR, "bad return from "
> "pci_alloc_consistent\n");
> @@ -459,11 +309,13 @@ int netxen_nic_hw_resources(struct netxen_adapter *adapter)
> cpu_to_le64(rcv_desc->phys_addr);
> adapter->ctx_desc->rcv_ctx[ring].rcv_ring_size =
> cpu_to_le32(rcv_desc->max_rx_desc_count);
> + rcv_desc->crb_rcv_producer =
> + recv_crb_registers[adapter->portnum].
> + crb_rcv_producer[ring];
> }
>
> - addr = netxen_alloc(adapter->ahw.pdev, STATUS_DESC_RINGSIZE,
> - &recv_ctx->rcv_status_desc_phys_addr,
> - &recv_ctx->rcv_status_desc_pdev);
> + addr = pci_alloc_consistent(adapter->pdev, STATUS_DESC_RINGSIZE,
> + &recv_ctx->rcv_status_desc_phys_addr);
> if (addr == NULL) {
> DPRINTK(ERR, "bad return from"
> " pci_alloc_consistent\n");
> @@ -476,6 +328,8 @@ int netxen_nic_hw_resources(struct netxen_adapter *adapter)
> cpu_to_le64(recv_ctx->rcv_status_desc_phys_addr);
> adapter->ctx_desc->sts_ring_size =
> cpu_to_le32(adapter->max_rx_desc_count);
> + recv_ctx->crb_sts_consumer =
> + recv_crb_registers[adapter->portnum].crb_sts_consumer;
>
> }
> /* Window = 1 */
> @@ -496,7 +350,7 @@ void netxen_free_hw_resources(struct netxen_adapter *adapter)
> int ctx, ring;
>
> if (adapter->ctx_desc != NULL) {
> - pci_free_consistent(adapter->ctx_desc_pdev,
> + pci_free_consistent(adapter->pdev,
> sizeof(struct netxen_ring_ctx) +
> sizeof(uint32_t),
> adapter->ctx_desc,
> @@ -505,7 +359,7 @@ void netxen_free_hw_resources(struct netxen_adapter *adapter)
> }
>
> if (adapter->ahw.cmd_desc_head != NULL) {
> - pci_free_consistent(adapter->ahw.cmd_desc_pdev,
> + pci_free_consistent(adapter->pdev,
> sizeof(struct cmd_desc_type0) *
> adapter->max_tx_desc_count,
> adapter->ahw.cmd_desc_head,
> @@ -519,7 +373,7 @@ void netxen_free_hw_resources(struct netxen_adapter *adapter)
> rcv_desc = &recv_ctx->rcv_desc[ring];
>
> if (rcv_desc->desc_head != NULL) {
> - pci_free_consistent(rcv_desc->phys_pdev,
> + pci_free_consistent(adapter->pdev,
> RCV_DESC_RINGSIZE,
> rcv_desc->desc_head,
> rcv_desc->phys_addr);
> @@ -528,7 +382,7 @@ void netxen_free_hw_resources(struct netxen_adapter *adapter)
> }
>
> if (recv_ctx->rcv_status_desc_head != NULL) {
> - pci_free_consistent(recv_ctx->rcv_status_desc_pdev,
> + pci_free_consistent(adapter->pdev,
> STATUS_DESC_RINGSIZE,
> recv_ctx->rcv_status_desc_head,
> recv_ctx->
> diff --git a/drivers/net/netxen/netxen_nic_init.c b/drivers/net/netxen/netxen_nic_init.c
> index 70d1b22..37fd6bc 100644
> --- a/drivers/net/netxen/netxen_nic_init.c
> +++ b/drivers/net/netxen/netxen_nic_init.c
> @@ -42,8 +42,6 @@ struct crb_addr_pair {
> u32 data;
> };
>
> -unsigned long last_schedule_time;
> -
> #define NETXEN_MAX_CRB_XFORM 60
> static unsigned int crb_addr_xform[NETXEN_MAX_CRB_XFORM];
> #define NETXEN_ADDR_ERROR (0xffffffff)
> @@ -155,24 +153,6 @@ int netxen_init_firmware(struct netxen_adapter *adapter)
> return err;
> }
>
> -#define NETXEN_ADDR_LIMIT 0xffffffffULL
> -
> -void *netxen_alloc(struct pci_dev *pdev, size_t sz, dma_addr_t * ptr,
> - struct pci_dev **used_dev)
> -{
> - void *addr;
> -
> - addr = pci_alloc_consistent(pdev, sz, ptr);
> - if ((unsigned long long)(*ptr) < NETXEN_ADDR_LIMIT) {
> - *used_dev = pdev;
> - return addr;
> - }
> - pci_free_consistent(pdev, sz, addr, *ptr);
> - addr = pci_alloc_consistent(NULL, sz, ptr);
> - *used_dev = NULL;
> - return addr;
> -}
> -
> void netxen_initialize_adapter_sw(struct netxen_adapter *adapter)
> {
> int ctxid, ring;
> @@ -270,7 +250,9 @@ static u32 netxen_decode_crb_addr(u32 addr)
>
> static long rom_max_timeout = 100;
> static long rom_lock_timeout = 10000;
> +#if 0
> static long rom_write_timeout = 700;
> +#endif
>
> static int rom_lock(struct netxen_adapter *adapter)
> {
> @@ -319,6 +301,7 @@ static int netxen_wait_rom_done(struct netxen_adapter *adapter)
> return 0;
> }
>
> +#if 0
> static int netxen_rom_wren(struct netxen_adapter *adapter)
> {
> /* Set write enable latch in ROM status register */
> @@ -348,6 +331,7 @@ static int netxen_do_rom_rdsr(struct netxen_adapter *adapter)
> }
> return netxen_rdcrbreg(adapter, NETXEN_ROMUSB_ROM_RDATA);
> }
> +#endif
>
> static void netxen_rom_unlock(struct netxen_adapter *adapter)
> {
> @@ -358,6 +342,7 @@ static void netxen_rom_unlock(struct netxen_adapter *adapter)
>
> }
>
> +#if 0
> static int netxen_rom_wip_poll(struct netxen_adapter *adapter)
> {
> long timeout = 0;
> @@ -393,6 +378,7 @@ static int do_rom_fast_write(struct netxen_adapter *adapter, int addr,
>
> return netxen_rom_wip_poll(adapter);
> }
> +#endif
>
> static int do_rom_fast_read(struct netxen_adapter *adapter,
> int addr, int *valp)
> @@ -475,7 +461,6 @@ int netxen_rom_fast_write(struct netxen_adapter *adapter, int addr, int data)
> netxen_rom_unlock(adapter);
> return ret;
> }
> -#endif /* 0 */
>
> static int do_rom_fast_write_words(struct netxen_adapter *adapter,
> int addr, u8 *bytes, size_t size)
> @@ -740,13 +725,12 @@ int netxen_flash_unlock(struct netxen_adapter *adapter)
>
> return ret;
> }
> +#endif /* 0 */
>
> #define NETXEN_BOARDTYPE 0x4008
> #define NETXEN_BOARDNUM 0x400c
> #define NETXEN_CHIPNUM 0x4010
> #define NETXEN_ROMBUS_RESET 0xFFFFFFFF
> -#define NETXEN_ROM_FIRST_BARRIER 0x800000000ULL
> -#define NETXEN_ROM_FOUND_INIT 0x400
>
> int netxen_pinit_from_rom(struct netxen_adapter *adapter, int verbose)
> {
> @@ -776,10 +760,9 @@ int netxen_pinit_from_rom(struct netxen_adapter *adapter, int verbose)
> printk("Could not read chip number\n");
> }
>
> - if (netxen_rom_fast_read(adapter, 0, &n) == 0
> - && (n & NETXEN_ROM_FIRST_BARRIER)) {
> - n &= ~NETXEN_ROM_ROUNDUP;
> - if (n < NETXEN_ROM_FOUND_INIT) {
> + if (netxen_rom_fast_read(adapter, 0, &n) == 0 && (n & 0x80000000)) {
> + n &= ~0x80000000;
> + if (n < 0x400) {
> if (verbose)
> printk("%s: %d CRB init values found"
> " in ROM.\n", netxen_nic_driver_name, n);
> @@ -829,16 +812,8 @@ int netxen_pinit_from_rom(struct netxen_adapter *adapter, int verbose)
> buf[i].data = NETXEN_NIC_XDMA_RESET;
> }
>
> - if (ADDR_IN_WINDOW1(off)) {
> - writel(buf[i].data,
> - NETXEN_CRB_NORMALIZE(adapter, off));
> - } else {
> - netxen_nic_pci_change_crbwindow(adapter, 0);
> - writel(buf[i].data,
> - pci_base_offset(adapter, off));
> + netxen_nic_hw_write_wx(adapter, off, &buf[i].data, 4);
>
> - netxen_nic_pci_change_crbwindow(adapter, 1);
> - }
> if (init_delay == 1) {
> msleep(1000);
> init_delay = 0;
> @@ -897,7 +872,7 @@ int netxen_initialize_adapter_offload(struct netxen_adapter *adapter)
> uint32_t lo;
>
> adapter->dummy_dma.addr =
> - pci_alloc_consistent(adapter->ahw.pdev,
> + pci_alloc_consistent(adapter->pdev,
> NETXEN_HOST_DUMMY_DMA_SIZE,
> &adapter->dummy_dma.phys_addr);
> if (adapter->dummy_dma.addr == NULL) {
> @@ -931,7 +906,7 @@ void netxen_free_adapter_offload(struct netxen_adapter *adapter)
> } while (--i);
>
> if (i) {
> - pci_free_consistent(adapter->ahw.pdev,
> + pci_free_consistent(adapter->pdev,
> NETXEN_HOST_DUMMY_DMA_SIZE,
> adapter->dummy_dma.addr,
> adapter->dummy_dma.phys_addr);
> @@ -1104,8 +1079,6 @@ static void netxen_process_rcv(struct netxen_adapter *adapter, int ctxid,
> ret = netif_receive_skb(skb);
> netdev->last_rx = jiffies;
>
> - rcv_desc->rcv_pending--;
> -
> /*
> * We just consumed one buffer so post a buffer.
> */
> @@ -1125,7 +1098,6 @@ u32 netxen_process_rcv_ring(struct netxen_adapter *adapter, int ctxid, int max)
> struct status_desc *desc_head = recv_ctx->rcv_status_desc_head;
> struct status_desc *desc; /* used to read status desc here */
> u32 consumer = recv_ctx->status_rx_consumer;
> - u32 producer = 0;
> int count = 0, ring;
>
> while (count < max) {
> @@ -1146,13 +1118,10 @@ u32 netxen_process_rcv_ring(struct netxen_adapter *adapter, int ctxid, int max)
> /* update the consumer index in phantom */
> if (count) {
> recv_ctx->status_rx_consumer = consumer;
> - recv_ctx->status_rx_producer = producer;
>
> /* Window = 1 */
> - writel(consumer,
> - NETXEN_CRB_NORMALIZE(adapter,
> - recv_crb_registers[adapter->portnum].
> - crb_rcv_status_consumer));
> + writel(consumer, NETXEN_CRB_NORMALIZE(adapter,
> + recv_ctx->crb_sts_consumer));
> }
>
> return count;
> @@ -1231,7 +1200,7 @@ int netxen_process_cmd_ring(struct netxen_adapter *adapter)
> */
> void netxen_post_rx_buffers(struct netxen_adapter *adapter, u32 ctx, u32 ringid)
> {
> - struct pci_dev *pdev = adapter->ahw.pdev;
> + struct pci_dev *pdev = adapter->pdev;
> struct sk_buff *skb;
> struct netxen_recv_context *recv_ctx = &(adapter->recv_ctx[ctx]);
> struct netxen_rcv_desc_ctx *rcv_desc = NULL;
> @@ -1294,16 +1263,11 @@ void netxen_post_rx_buffers(struct netxen_adapter *adapter, u32 ctx, u32 ringid)
> /* if we did allocate buffers, then write the count to Phantom */
> if (count) {
> rcv_desc->begin_alloc = index;
> - rcv_desc->rcv_pending += count;
> rcv_desc->producer = producer;
> /* Window = 1 */
> - writel((producer - 1) &
> - (rcv_desc->max_rx_desc_count - 1),
> - NETXEN_CRB_NORMALIZE(adapter,
> - recv_crb_registers[
> - adapter->portnum].
> - rcv_desc_crb[ringid].
> - crb_rcv_producer_offset));
> + writel((producer - 1) & (rcv_desc->max_rx_desc_count - 1),
> + NETXEN_CRB_NORMALIZE(adapter,
> + rcv_desc->crb_rcv_producer));
> /*
> * Write a doorbell msg to tell phanmon of change in
> * receive ring producer
> @@ -1325,7 +1289,7 @@ void netxen_post_rx_buffers(struct netxen_adapter *adapter, u32 ctx, u32 ringid)
> static void netxen_post_rx_buffers_nodb(struct netxen_adapter *adapter,
> uint32_t ctx, uint32_t ringid)
> {
> - struct pci_dev *pdev = adapter->ahw.pdev;
> + struct pci_dev *pdev = adapter->pdev;
> struct sk_buff *skb;
> struct netxen_recv_context *recv_ctx = &(adapter->recv_ctx[ctx]);
> struct netxen_rcv_desc_ctx *rcv_desc = NULL;
> @@ -1370,7 +1334,6 @@ static void netxen_post_rx_buffers_nodb(struct netxen_adapter *adapter,
> pdesc->reference_handle = cpu_to_le16(buffer->ref_handle);
> pdesc->buffer_length = cpu_to_le32(rcv_desc->dma_size);
> pdesc->addr_buffer = cpu_to_le64(buffer->dma);
> - DPRINTK(INFO, "done writing descripter\n");
> producer =
> get_next_index(producer, rcv_desc->max_rx_desc_count);
> index = get_next_index(index, rcv_desc->max_rx_desc_count);
> @@ -1380,16 +1343,11 @@ static void netxen_post_rx_buffers_nodb(struct netxen_adapter *adapter,
> /* if we did allocate buffers, then write the count to Phantom */
> if (count) {
> rcv_desc->begin_alloc = index;
> - rcv_desc->rcv_pending += count;
> rcv_desc->producer = producer;
> /* Window = 1 */
> - writel((producer - 1) &
> - (rcv_desc->max_rx_desc_count - 1),
> - NETXEN_CRB_NORMALIZE(adapter,
> - recv_crb_registers[
> - adapter->portnum].
> - rcv_desc_crb[ringid].
> - crb_rcv_producer_offset));
> + writel((producer - 1) & (rcv_desc->max_rx_desc_count - 1),
> + NETXEN_CRB_NORMALIZE(adapter,
> + rcv_desc->crb_rcv_producer));
> wmb();
> }
> }
> diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c
> index 63cd67b..91b02eb 100644
> --- a/drivers/net/netxen/netxen_nic_main.c
> +++ b/drivers/net/netxen/netxen_nic_main.c
> @@ -108,66 +108,30 @@ static struct workqueue_struct *netxen_workq;
>
> static void netxen_watchdog(unsigned long);
>
> +static uint32_t crb_cmd_producer[4] = {
> + CRB_CMD_PRODUCER_OFFSET, CRB_CMD_PRODUCER_OFFSET_1,
> + CRB_CMD_PRODUCER_OFFSET_2, CRB_CMD_PRODUCER_OFFSET_3
> +};
> +
> static void netxen_nic_update_cmd_producer(struct netxen_adapter *adapter,
> uint32_t crb_producer)
> {
> - switch (adapter->portnum) {
> - case 0:
> - writel(crb_producer, NETXEN_CRB_NORMALIZE
> - (adapter, CRB_CMD_PRODUCER_OFFSET));
> - return;
> - case 1:
> - writel(crb_producer, NETXEN_CRB_NORMALIZE
> - (adapter, CRB_CMD_PRODUCER_OFFSET_1));
> - return;
> - case 2:
> - writel(crb_producer, NETXEN_CRB_NORMALIZE
> - (adapter, CRB_CMD_PRODUCER_OFFSET_2));
> - return;
> - case 3:
> - writel(crb_producer, NETXEN_CRB_NORMALIZE
> - (adapter, CRB_CMD_PRODUCER_OFFSET_3));
> - return;
> - default:
> - printk(KERN_WARNING "We tried to update "
> - "CRB_CMD_PRODUCER_OFFSET for invalid "
> - "PCI function id %d\n",
> - adapter->portnum);
> - return;
> - }
> + writel(crb_producer, NETXEN_CRB_NORMALIZE(adapter,
> + adapter->crb_addr_cmd_producer));
> }
>
> +static uint32_t crb_cmd_consumer[4] = {
> + CRB_CMD_CONSUMER_OFFSET, CRB_CMD_CONSUMER_OFFSET_1,
> + CRB_CMD_CONSUMER_OFFSET_2, CRB_CMD_CONSUMER_OFFSET_3
> +};
> +
> static void netxen_nic_update_cmd_consumer(struct netxen_adapter *adapter,
> u32 crb_consumer)
> {
> - switch (adapter->portnum) {
> - case 0:
> - writel(crb_consumer, NETXEN_CRB_NORMALIZE
> - (adapter, CRB_CMD_CONSUMER_OFFSET));
> - return;
> - case 1:
> - writel(crb_consumer, NETXEN_CRB_NORMALIZE
> - (adapter, CRB_CMD_CONSUMER_OFFSET_1));
> - return;
> - case 2:
> - writel(crb_consumer, NETXEN_CRB_NORMALIZE
> - (adapter, CRB_CMD_CONSUMER_OFFSET_2));
> - return;
> - case 3:
> - writel(crb_consumer, NETXEN_CRB_NORMALIZE
> - (adapter, CRB_CMD_CONSUMER_OFFSET_3));
> - return;
> - default:
> - printk(KERN_WARNING "We tried to update "
> - "CRB_CMD_PRODUCER_OFFSET for invalid "
> - "PCI function id %d\n",
> - adapter->portnum);
> - return;
> - }
> + writel(crb_consumer, NETXEN_CRB_NORMALIZE(adapter,
> + adapter->crb_addr_cmd_consumer));
> }
>
> -#define ADAPTER_LIST_SIZE 12
> -
> static uint32_t msi_tgt_status[4] = {
> ISR_INT_TARGET_STATUS, ISR_INT_TARGET_STATUS_F1,
> ISR_INT_TARGET_STATUS_F2, ISR_INT_TARGET_STATUS_F3
> @@ -334,7 +298,6 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
>
> adapter = netdev->priv;
>
> - adapter->ahw.pdev = pdev;
> adapter->ahw.pci_func = pci_func_id;
>
> /* remap phys address */
> @@ -552,12 +515,13 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
> adapter->watchdog_timer.function = &netxen_watchdog;
> adapter->watchdog_timer.data = (unsigned long)adapter;
> INIT_WORK(&adapter->watchdog_task, netxen_watchdog_task);
> - adapter->ahw.pdev = pdev;
> adapter->ahw.revision_id = pdev->revision;
>
> /* make sure Window == 1 */
> netxen_nic_pci_change_crbwindow(adapter, 1);
>
> + adapter->crb_addr_cmd_producer = crb_cmd_producer[adapter->portnum];
> + adapter->crb_addr_cmd_consumer = crb_cmd_consumer[adapter->portnum];
> netxen_nic_update_cmd_producer(adapter, 0);
> netxen_nic_update_cmd_consumer(adapter, 0);
> writel(0, NETXEN_CRB_NORMALIZE(adapter, CRB_HOST_CMD_ADDR_LO));
> @@ -816,7 +780,7 @@ static int netxen_nic_open(struct net_device *netdev)
> for (ring = 0; ring < NUM_RCV_DESC_RINGS; ring++)
> netxen_post_rx_buffers(adapter, ctx, ring);
> }
> - adapter->irq = adapter->ahw.pdev->irq;
> + adapter->irq = adapter->pdev->irq;
> if (adapter->flags & NETXEN_NIC_MSI_ENABLED)
> handler = netxen_msi_intr;
> else {
> @@ -1220,10 +1184,6 @@ module_init(netxen_init_module);
>
> static void __exit netxen_exit_module(void)
> {
> - /*
> - * Wait for some time to allow the dma to drain, if any.
> - */
> - msleep(100);
> pci_unregister_driver(&netxen_driver);
> destroy_workqueue(netxen_workq);
> }
> diff --git a/drivers/net/netxen/netxen_nic_phan_reg.h b/drivers/net/netxen/netxen_nic_phan_reg.h
> index a566b50..db2202a 100644
> --- a/drivers/net/netxen/netxen_nic_phan_reg.h
> +++ b/drivers/net/netxen/netxen_nic_phan_reg.h
> @@ -98,6 +98,7 @@
> #define CRB_JUMBO_BUFFER_PROD NETXEN_NIC_REG(0xf4)
> #define CRB_JUMBO_BUFFER_CONS NETXEN_NIC_REG(0xf8)
>
> +#define CRB_RCVPEG_STATE NETXEN_NIC_REG(0x13c)
> #define CRB_CMD_PRODUCER_OFFSET_1 NETXEN_NIC_REG(0x1ac)
> #define CRB_CMD_CONSUMER_OFFSET_1 NETXEN_NIC_REG(0x1b0)
> #define CRB_CMD_PRODUCER_OFFSET_2 NETXEN_NIC_REG(0x1b8)
> @@ -147,25 +148,13 @@
> #define nx_get_temp_state(x) ((x) & 0xffff)
> #define nx_encode_temp(val, state) (((val) << 16) | (state))
>
> -/* CRB registers per Rcv Descriptor ring */
> -struct netxen_rcv_desc_crb {
> - u32 crb_rcv_producer_offset __attribute__ ((aligned(512)));
> - u32 crb_rcv_consumer_offset;
> - u32 crb_globalrcv_ring;
> - u32 crb_rcv_ring_size;
> -};
> -
> /*
> * CRB registers used by the receive peg logic.
> */
>
> struct netxen_recv_crb {
> - struct netxen_rcv_desc_crb rcv_desc_crb[NUM_RCV_DESC_RINGS];
> - u32 crb_rcvstatus_ring;
> - u32 crb_rcv_status_producer;
> - u32 crb_rcv_status_consumer;
> - u32 crb_rcvpeg_state;
> - u32 crb_status_ring_size;
> + u32 crb_rcv_producer[NUM_RCV_DESC_RINGS];
> + u32 crb_sts_consumer;
> };
>
> extern struct netxen_recv_crb recv_crb_registers[];
> --
> 1.5.4.3
>
>
> No virus found in this incoming message.
> Checked by AVG.
> Version: 7.5.526 / Virus Database: 270.4.9/1548 - Release Date: 7/12/2008 07:40
>
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2008-07-22 21:53 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-07-12 19:25 [PATCH 1/6] netxen: cleanup unused variables/functions Dhananjay Phadke
2008-07-22 21:53 ` Dhananjay Phadke
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).