netxen: add netxen_nic_ctx.c
[safe/jmp/linux-2.6] / drivers / net / netxen / netxen_nic_hw.c
index fde8c6f..d46b4df 100644 (file)
@@ -280,80 +280,6 @@ static unsigned crb_hub_agt[64] =
        0,
 };
 
-struct netxen_recv_crb recv_crb_registers[] = {
-       /*
-        * Instance 0.
-        */
-       {
-               /* 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,
-        */
-       {
-               /* 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: */
-               {
-                       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: */
-               {
-                       NETXEN_NIC_REG(0x22c),
-                       /* Jumbo frames */
-                       NETXEN_NIC_REG(0x23c),
-                       /* LRO */
-                       NETXEN_NIC_REG(0x24c)
-               },
-               /* crb_sts_consumer: */
-               NETXEN_NIC_REG(0x264),
-       },
-};
-
-static u64 ctx_addr_sig_regs[][3] = {
-       {NETXEN_NIC_REG(0x188), NETXEN_NIC_REG(0x18c), NETXEN_NIC_REG(0x1c0)},
-       {NETXEN_NIC_REG(0x190), NETXEN_NIC_REG(0x194), NETXEN_NIC_REG(0x1c4)},
-       {NETXEN_NIC_REG(0x198), NETXEN_NIC_REG(0x19c), NETXEN_NIC_REG(0x1c8)},
-       {NETXEN_NIC_REG(0x1a0), NETXEN_NIC_REG(0x1a4), NETXEN_NIC_REG(0x1cc)}
-};
-#define CRB_CTX_ADDR_REG_LO(FUNC_ID)           (ctx_addr_sig_regs[FUNC_ID][0])
-#define CRB_CTX_ADDR_REG_HI(FUNC_ID)           (ctx_addr_sig_regs[FUNC_ID][2])
-#define CRB_CTX_SIGNATURE_REG(FUNC_ID)         (ctx_addr_sig_regs[FUNC_ID][1])
-
-
 /*  PCI Windowing for DDR regions.  */
 
 #define ADDR_IN_RANGE(addr, low, high) \
@@ -368,10 +294,6 @@ static u64 ctx_addr_sig_regs[][3] = {
 #define NETXEN_NIU_HDRSIZE     (0x1 << 6)
 #define NETXEN_NIU_TLRSIZE     (0x1 << 5)
 
-#define lower32(x)             ((u32)((x) & 0xffffffff))
-#define upper32(x)                     \
-       ((u32)(((unsigned long long)(x) >> 32) & 0xffffffff))
-
 #define NETXEN_NIC_ZERO_PAUSE_ADDR     0ULL
 #define NETXEN_NIC_UNIT_PAUSE_ADDR     0x200ULL
 #define NETXEN_NIC_EPG_PAUSE_ADDR1     0x2200010000c28001ULL
@@ -556,171 +478,6 @@ int netxen_nic_change_mtu(struct net_device *netdev, int mtu)
        return 0;
 }
 
-/*
- * check if the firmware has been downloaded and ready to run  and
- * setup the address for the descriptors in the adapter
- */
-int netxen_alloc_hw_resources(struct netxen_adapter *adapter)
-{
-       struct netxen_hardware_context *hw = &adapter->ahw;
-       u32 state = 0;
-       void *addr;
-       int err = 0;
-       int ctx, ring;
-       struct netxen_recv_context *recv_ctx;
-       struct netxen_rcv_desc_ctx *rcv_desc;
-       int func_id = adapter->portnum;
-
-       err = netxen_receive_peg_ready(adapter);
-       if (err) {
-               printk(KERN_ERR "Rcv Peg initialization not complete:%x.\n",
-                               state);
-               return err;
-       }
-       adapter->intr_scheme = adapter->pci_read_normalize(adapter,
-                       CRB_NIC_CAPABILITIES_FW);
-       adapter->msi_mode = adapter->pci_read_normalize(adapter,
-                       CRB_NIC_MSI_MODE_FW);
-
-       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");
-               err = -ENOMEM;
-               return err;
-       }
-       memset(addr, 0, sizeof(struct netxen_ring_ctx));
-       adapter->ctx_desc = (struct netxen_ring_ctx *)addr;
-       adapter->ctx_desc->ctx_id = cpu_to_le32(adapter->portnum);
-       adapter->ctx_desc->cmd_consumer_offset =
-           cpu_to_le64(adapter->ctx_desc_phys_addr +
-                       sizeof(struct netxen_ring_ctx));
-       adapter->cmd_consumer = (__le32 *) (((char *)addr) +
-                                             sizeof(struct netxen_ring_ctx));
-
-       addr = pci_alloc_consistent(adapter->pdev,
-                           sizeof(struct cmd_desc_type0) *
-                           adapter->max_tx_desc_count,
-                           &hw->cmd_desc_phys_addr);
-
-       if (addr == NULL) {
-               DPRINTK(ERR, "bad return from pci_alloc_consistent\n");
-               netxen_free_hw_resources(adapter);
-               return -ENOMEM;
-       }
-
-       adapter->ctx_desc->cmd_ring_addr =
-               cpu_to_le64(hw->cmd_desc_phys_addr);
-       adapter->ctx_desc->cmd_ring_size =
-               cpu_to_le32(adapter->max_tx_desc_count);
-
-       hw->cmd_desc_head = (struct cmd_desc_type0 *)addr;
-
-       for (ctx = 0; ctx < MAX_RCV_CTX; ++ctx) {
-               recv_ctx = &adapter->recv_ctx[ctx];
-
-               for (ring = 0; ring < NUM_RCV_DESC_RINGS; ring++) {
-                       rcv_desc = &recv_ctx->rcv_desc[ring];
-                       addr = pci_alloc_consistent(adapter->pdev,
-                                           RCV_DESC_RINGSIZE,
-                                           &rcv_desc->phys_addr);
-                       if (addr == NULL) {
-                               DPRINTK(ERR, "bad return from "
-                                       "pci_alloc_consistent\n");
-                               netxen_free_hw_resources(adapter);
-                               err = -ENOMEM;
-                               return err;
-                       }
-                       rcv_desc->desc_head = (struct rcv_desc *)addr;
-                       adapter->ctx_desc->rcv_ctx[ring].rcv_ring_addr =
-                           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 = 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");
-                       netxen_free_hw_resources(adapter);
-                       err = -ENOMEM;
-                       return err;
-               }
-               recv_ctx->rcv_status_desc_head = (struct status_desc *)addr;
-               adapter->ctx_desc->sts_ring_addr =
-                   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 */
-
-       adapter->pci_write_normalize(adapter, CRB_CTX_ADDR_REG_LO(func_id),
-                       lower32(adapter->ctx_desc_phys_addr));
-       adapter->pci_write_normalize(adapter, CRB_CTX_ADDR_REG_HI(func_id),
-                       upper32(adapter->ctx_desc_phys_addr));
-       adapter->pci_write_normalize(adapter, CRB_CTX_SIGNATURE_REG(func_id),
-                       NETXEN_CTX_SIGNATURE | func_id);
-       return err;
-}
-
-void netxen_free_hw_resources(struct netxen_adapter *adapter)
-{
-       struct netxen_recv_context *recv_ctx;
-       struct netxen_rcv_desc_ctx *rcv_desc;
-       int ctx, ring;
-
-       if (adapter->ctx_desc != NULL) {
-               pci_free_consistent(adapter->pdev,
-                                   sizeof(struct netxen_ring_ctx) +
-                                   sizeof(uint32_t),
-                                   adapter->ctx_desc,
-                                   adapter->ctx_desc_phys_addr);
-               adapter->ctx_desc = NULL;
-       }
-
-       if (adapter->ahw.cmd_desc_head != NULL) {
-               pci_free_consistent(adapter->pdev,
-                                   sizeof(struct cmd_desc_type0) *
-                                   adapter->max_tx_desc_count,
-                                   adapter->ahw.cmd_desc_head,
-                                   adapter->ahw.cmd_desc_phys_addr);
-               adapter->ahw.cmd_desc_head = NULL;
-       }
-
-       for (ctx = 0; ctx < MAX_RCV_CTX; ++ctx) {
-               recv_ctx = &adapter->recv_ctx[ctx];
-               for (ring = 0; ring < NUM_RCV_DESC_RINGS; ring++) {
-                       rcv_desc = &recv_ctx->rcv_desc[ring];
-
-                       if (rcv_desc->desc_head != NULL) {
-                               pci_free_consistent(adapter->pdev,
-                                                   RCV_DESC_RINGSIZE,
-                                                   rcv_desc->desc_head,
-                                                   rcv_desc->phys_addr);
-                               rcv_desc->desc_head = NULL;
-                       }
-               }
-
-               if (recv_ctx->rcv_status_desc_head != NULL) {
-                       pci_free_consistent(adapter->pdev,
-                                           STATUS_DESC_RINGSIZE,
-                                           recv_ctx->rcv_status_desc_head,
-                                           recv_ctx->
-                                           rcv_status_desc_phys_addr);
-                       recv_ctx->rcv_status_desc_head = NULL;
-               }
-       }
-}
-
 void netxen_tso_check(struct netxen_adapter *adapter,
                      struct cmd_desc_type0 *desc, struct sk_buff *skb)
 {