]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - drivers/net/netxen/netxen_nic_ctx.c
netxen: refactor netxen_recv_context struct
[mirror_ubuntu-bionic-kernel.git] / drivers / net / netxen / netxen_nic_ctx.c
index fd82adf4f87637b8d7923cad68bda6c077171e87..4754f5cffad078ce53436b26330b6a0623ee4749 100644 (file)
@@ -323,7 +323,8 @@ nx_fw_cmd_create_tx_ctx(struct netxen_adapter *adapter)
        int     err = 0;
        u64     offset, phys_addr;
        dma_addr_t      rq_phys_addr, rsp_phys_addr;
-       struct nx_host_tx_ring *tx_ring = &adapter->tx_ring;
+       struct nx_host_tx_ring *tx_ring = adapter->tx_ring;
+       struct netxen_recv_context *recv_ctx = &adapter->recv_ctx;
 
        rq_size = SIZEOF_HOSTRQ_TX(nx_hostrq_tx_ctx_t);
        rq_addr = pci_alloc_consistent(adapter->pdev,
@@ -358,7 +359,7 @@ nx_fw_cmd_create_tx_ctx(struct netxen_adapter *adapter)
 
        prq->dummy_dma_addr = cpu_to_le64(adapter->dummy_dma.phys_addr);
 
-       offset = adapter->ctx_desc_phys_addr+sizeof(struct netxen_ring_ctx);
+       offset = recv_ctx->phys_addr + sizeof(struct netxen_ring_ctx);
        prq->cmd_cons_dma_addr = cpu_to_le64(offset);
 
        prq_cds = &prq->cds_ring;
@@ -541,14 +542,16 @@ netxen_init_old_ctx(struct netxen_adapter *adapter)
        struct nx_host_tx_ring *tx_ring;
        int ring;
        int port = adapter->portnum;
-       struct netxen_ring_ctx *hwctx = adapter->ctx_desc;
+       struct netxen_ring_ctx *hwctx;
        u32 signature;
 
-       tx_ring = &adapter->tx_ring;
+       tx_ring = adapter->tx_ring;
+       recv_ctx = &adapter->recv_ctx;
+       hwctx = recv_ctx->hwctx;
+
        hwctx->cmd_ring_addr = cpu_to_le64(tx_ring->phys_addr);
        hwctx->cmd_ring_size = cpu_to_le32(tx_ring->num_desc);
 
-       recv_ctx = &adapter->recv_ctx;
 
        for (ring = 0; ring < adapter->max_rds_rings; ring++) {
                rds_ring = &recv_ctx->rds_rings[ring];
@@ -576,9 +579,9 @@ netxen_init_old_ctx(struct netxen_adapter *adapter)
                NETXEN_CTX_SIGNATURE_V2 : NETXEN_CTX_SIGNATURE;
 
        NXWR32(adapter, CRB_CTX_ADDR_REG_LO(port),
-                       lower32(adapter->ctx_desc_phys_addr));
+                       lower32(recv_ctx->phys_addr));
        NXWR32(adapter, CRB_CTX_ADDR_REG_HI(port),
-                       upper32(adapter->ctx_desc_phys_addr));
+                       upper32(recv_ctx->phys_addr));
        NXWR32(adapter, CRB_CTX_SIGNATURE_REG(port),
                        signature | port);
        return 0;
@@ -592,25 +595,28 @@ int netxen_alloc_hw_resources(struct netxen_adapter *adapter)
        struct netxen_recv_context *recv_ctx;
        struct nx_host_rds_ring *rds_ring;
        struct nx_host_sds_ring *sds_ring;
-       struct nx_host_tx_ring *tx_ring = &adapter->tx_ring;
+       struct nx_host_tx_ring *tx_ring;
 
        struct pci_dev *pdev = adapter->pdev;
        struct net_device *netdev = adapter->netdev;
        int port = adapter->portnum;
 
+       recv_ctx = &adapter->recv_ctx;
+       tx_ring = adapter->tx_ring;
+
        addr = pci_alloc_consistent(pdev,
                        sizeof(struct netxen_ring_ctx) + sizeof(uint32_t),
-                       &adapter->ctx_desc_phys_addr);
-
+                       &recv_ctx->phys_addr);
        if (addr == NULL) {
                dev_err(&pdev->dev, "failed to allocate hw context\n");
                return -ENOMEM;
        }
+
        memset(addr, 0, sizeof(struct netxen_ring_ctx));
-       adapter->ctx_desc = (struct netxen_ring_ctx *)addr;
-       adapter->ctx_desc->ctx_id = cpu_to_le32(port);
-       adapter->ctx_desc->cmd_consumer_offset =
-               cpu_to_le64(adapter->ctx_desc_phys_addr +
+       recv_ctx->hwctx = (struct netxen_ring_ctx *)addr;
+       recv_ctx->hwctx->ctx_id = cpu_to_le32(port);
+       recv_ctx->hwctx->cmd_consumer_offset =
+               cpu_to_le64(recv_ctx->phys_addr +
                        sizeof(struct netxen_ring_ctx));
        tx_ring->hw_consumer =
                (__le32 *)(((char *)addr) + sizeof(struct netxen_ring_ctx));
@@ -627,8 +633,6 @@ int netxen_alloc_hw_resources(struct netxen_adapter *adapter)
 
        tx_ring->desc_head = (struct cmd_desc_type0 *)addr;
 
-       recv_ctx = &adapter->recv_ctx;
-
        for (ring = 0; ring < adapter->max_rds_rings; ring++) {
                rds_ring = &recv_ctx->rds_rings[ring];
                addr = pci_alloc_consistent(adapter->pdev,
@@ -713,16 +717,18 @@ void netxen_free_hw_resources(struct netxen_adapter *adapter)
                netxen_api_unlock(adapter);
        }
 
-       if (adapter->ctx_desc != NULL) {
+       recv_ctx = &adapter->recv_ctx;
+
+       if (recv_ctx->hwctx != 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;
+                               recv_ctx->hwctx,
+                               recv_ctx->phys_addr);
+               recv_ctx->hwctx = NULL;
        }
 
-       tx_ring = &adapter->tx_ring;
+       tx_ring = adapter->tx_ring;
        if (tx_ring->desc_head != NULL) {
                pci_free_consistent(adapter->pdev,
                                TX_DESC_RINGSIZE(tx_ring),
@@ -730,7 +736,6 @@ void netxen_free_hw_resources(struct netxen_adapter *adapter)
                tx_ring->desc_head = NULL;
        }
 
-       recv_ctx = &adapter->recv_ctx;
        for (ring = 0; ring < adapter->max_rds_rings; ring++) {
                rds_ring = &recv_ctx->rds_rings[ring];