Subject: Re: [PATCH 1/6] netxen: cleanup unused variables/functions

From: Dhananjay Phadke <[email-masked]>
Date: Tue, 22 Jul 2008 14:53:29 -0700

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 <[email-masked]>
> ---
>  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
>
>