cnic: Put rx/tx ring allocation in separate function.
Subsystems (2)
PATCH 1/2 cnic: Put rx/tx ring allocation in separate function.
This will allow the 10G iSCSI code to reuse the function.
Signed-off-by Michael Chan <[email protected]>
--- drivers/net/cnic.c | 33 ++++++++++++++++++++++----------- 1 files changed, 22 insertions(+), 11 deletions(-)
drivers/net/cnic.c +22 -11
@@ -742,6 +742,26 @@ static int cnic_alloc_context(struct cnic_dev *dev)return 0 ; } +static int cnic_alloc_l2_rings (struct cnic_dev *dev,int pages) +{ +struct cnic_local *cp = dev->cnic_priv; + + cp->l2_ring_size = pages *BCM_PAGE_SIZE ; + cp->l2_ring =pci_alloc_consistent (dev->pcidev, cp->l2_ring_size, + &cp->l2_ring_map); +if (!cp->l2_ring) +return -ENOMEM ; + + cp->l2_buf_size = (cp->l2_rx_ring_size +1 ) * cp->l2_single_buf_size; + cp->l2_buf_size =PAGE_ALIGN (cp->l2_buf_size); + cp->l2_buf =pci_alloc_consistent (dev->pcidev, cp->l2_buf_size, + &cp->l2_buf_map); +if (!cp->l2_buf) +return -ENOMEM ; + +return 0 ; +} +static int cnic_alloc_bnx2_resc (struct cnic_dev *dev) {struct cnic_local *cp = dev->cnic_priv;
@@ -762,17 +782,8 @@ static int cnic_alloc_bnx2_resc(struct cnic_dev *dev)if (ret) goto error; - cp->l2_ring_size =2 *BCM_PAGE_SIZE ; - cp->l2_ring =pci_alloc_consistent (dev->pcidev, cp->l2_ring_size, - &cp->l2_ring_map); -if (!cp->l2_ring) - goto error; - - cp->l2_buf_size = (cp->l2_rx_ring_size +1 ) * cp->l2_single_buf_size; - cp->l2_buf_size =PAGE_ALIGN (cp->l2_buf_size); - cp->l2_buf =pci_alloc_consistent (dev->pcidev, cp->l2_buf_size, - &cp->l2_buf_map); -if (!cp->l2_buf) + ret =cnic_alloc_l2_rings (dev,2 ); +if (ret) goto error; uinfo =kzalloc (sizeof (*uinfo),GFP_ATOMIC );
Signature · 1 line
1.6.4.GIT
PATCH 2/2 cnic: Put uio init in separate function.
This will allow the 10G iSCSI code to reuse the function.
Signed-off-by Michael Chan <[email protected]>
--- drivers/net/cnic.c | 68 +++++++++++++++++++++++++++++++-------------------- 1 files changed, 41 insertions(+), 27 deletions(-)
drivers/net/cnic.c +41 -27
@@ -762,33 +762,14 @@ static int cnic_alloc_l2_rings(struct cnic_dev *dev, int pages)return 0 ; } -static int cnic_alloc_bnx2_resc (struct cnic_dev *dev) -{ +static int cnic_alloc_uio (struct cnic_dev *dev) {struct cnic_local *cp = dev->cnic_priv;struct uio_info *uinfo;int ret; - ret =cnic_alloc_dma (dev, &cp->kwq_info,KWQ_PAGE_CNT ,1 ); -if (ret) - goto error; - cp->kwq = (struct kwqe **) cp->kwq_info.pg_arr; - - ret =cnic_alloc_dma (dev, &cp->kcq_info,KCQ_PAGE_CNT ,1 ); -if (ret) - goto error; - cp->kcq = (struct kcqe **) cp->kcq_info.pg_arr; - - ret =cnic_alloc_context (dev); -if (ret) - goto error; - - ret =cnic_alloc_l2_rings (dev,2 ); -if (ret) - goto error; - uinfo =kzalloc (sizeof (*uinfo),GFP_ATOMIC );if (!uinfo) - goto error; +return -ENOMEM ; uinfo->mem[0 ].addr = dev->netdev->base_addr; uinfo->mem[0 ].internal_addr = dev->regview;
@@ -796,10 +777,15 @@ static int cnic_alloc_bnx2_resc(struct cnic_dev *dev) uinfo->mem[0 ].memtype =UIO_MEM_PHYS ; uinfo->mem[1 ].addr = (unsigned long ) cp->status_blk &PAGE_MASK ; -if (cp->ethdev->drv_state &CNIC_DRV_STATE_USING_MSIX ) - uinfo->mem[1 ].size =BNX2_SBLK_MSIX_ALIGN_SIZE *9 ; -else - uinfo->mem[1 ].size =BNX2_SBLK_MSIX_ALIGN_SIZE ; +if (test_bit (CNIC_F_BNX2_CLASS , &dev->flags)) { +if (cp->ethdev->drv_state &CNIC_DRV_STATE_USING_MSIX ) + uinfo->mem[1 ].size =BNX2_SBLK_MSIX_ALIGN_SIZE *9 ; +else + uinfo->mem[1 ].size =BNX2_SBLK_MSIX_ALIGN_SIZE ; + + uinfo->name ="bnx2_cnic" ; + } + uinfo->mem[1 ].memtype =UIO_MEM_LOGICAL ; uinfo->mem[2 ].addr = (unsigned long ) cp->l2_ring;
@@ -810,7 +796,6 @@ static int cnic_alloc_bnx2_resc(struct cnic_dev *dev) uinfo->mem[3 ].size = cp->l2_buf_size; uinfo->mem[3 ].memtype =UIO_MEM_LOGICAL ; - uinfo->name ="bnx2_cnic" ; uinfo->version =CNIC_MODULE_VERSION ; uinfo->irq =UIO_IRQ_CUSTOM ;
@@ -822,10 +807,39 @@ static int cnic_alloc_bnx2_resc(struct cnic_dev *dev) ret =uio_register_device (&dev->pcidev->dev, uinfo);if (ret) {kfree (uinfo); - goto error; +return ret; } cp->cnic_uinfo = uinfo; +return 0 ; +} + +static int cnic_alloc_bnx2_resc (struct cnic_dev *dev) +{ +struct cnic_local *cp = dev->cnic_priv; +int ret; + + ret =cnic_alloc_dma (dev, &cp->kwq_info,KWQ_PAGE_CNT ,1 ); +if (ret) + goto error; + cp->kwq = (struct kwqe **) cp->kwq_info.pg_arr; + + ret =cnic_alloc_dma (dev, &cp->kcq_info,KCQ_PAGE_CNT ,1 ); +if (ret) + goto error; + cp->kcq = (struct kcqe **) cp->kcq_info.pg_arr; + + ret =cnic_alloc_context (dev); +if (ret) + goto error; + + ret =cnic_alloc_l2_rings (dev,2 ); +if (ret) + goto error; + + ret =cnic_alloc_uio (dev); +if (ret) + goto error;return 0 ;
Signature · 1 line
1.6.4.GIT
Re: [PATCH net-next 2/2] cnic: Put uio init in separate function.
From: "Michael Chan" <[email protected]>
Date: Wed, 26 Aug 2009 12:49:23 -0700
Quoted 3 lines
This will allow the 10G iSCSI code to reuse the function.
Signed-off-by Michael Chan <[email protected]>
Applied.
From: "Michael Chan" <[email protected]>
Date: Wed, 26 Aug 2009 12:49:22 -0700
Quoted 3 lines
This will allow the 10G iSCSI code to reuse the function.
Signed-off-by Michael Chan <[email protected]>
Applied.