diff options
| author | Michael Chan <mchan@broadcom.com> | 2009-12-02 10:15:39 -0500 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2009-12-02 22:57:22 -0500 |
| commit | 3248e1682035eef6774c280cd7be19984feb78bb (patch) | |
| tree | 1bf8b30825850d35ee0c386ed226e01b54925d8f | |
| parent | 15971c3ce3caf9a92b603a61b07e0be8c9b9d276 (diff) | |
cnic: Use dma_alloc_coherent().
Replace pci_alloc_consistent() with dma_alloc_coherent() so that
appropriate GFP flags can be used.
Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: Benjamin Li <benli@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
| -rw-r--r-- | drivers/net/cnic.c | 54 |
1 files changed, 30 insertions, 24 deletions
diff --git a/drivers/net/cnic.c b/drivers/net/cnic.c index d78e8033c954..d4c6e7fcff53 100644 --- a/drivers/net/cnic.c +++ b/drivers/net/cnic.c | |||
| @@ -667,14 +667,14 @@ static void cnic_free_dma(struct cnic_dev *dev, struct cnic_dma *dma) | |||
| 667 | 667 | ||
| 668 | for (i = 0; i < dma->num_pages; i++) { | 668 | for (i = 0; i < dma->num_pages; i++) { |
| 669 | if (dma->pg_arr[i]) { | 669 | if (dma->pg_arr[i]) { |
| 670 | pci_free_consistent(dev->pcidev, BCM_PAGE_SIZE, | 670 | dma_free_coherent(&dev->pcidev->dev, BCM_PAGE_SIZE, |
| 671 | dma->pg_arr[i], dma->pg_map_arr[i]); | 671 | dma->pg_arr[i], dma->pg_map_arr[i]); |
| 672 | dma->pg_arr[i] = NULL; | 672 | dma->pg_arr[i] = NULL; |
| 673 | } | 673 | } |
| 674 | } | 674 | } |
| 675 | if (dma->pgtbl) { | 675 | if (dma->pgtbl) { |
| 676 | pci_free_consistent(dev->pcidev, dma->pgtbl_size, | 676 | dma_free_coherent(&dev->pcidev->dev, dma->pgtbl_size, |
| 677 | dma->pgtbl, dma->pgtbl_map); | 677 | dma->pgtbl, dma->pgtbl_map); |
| 678 | dma->pgtbl = NULL; | 678 | dma->pgtbl = NULL; |
| 679 | } | 679 | } |
| 680 | kfree(dma->pg_arr); | 680 | kfree(dma->pg_arr); |
| @@ -725,9 +725,10 @@ static int cnic_alloc_dma(struct cnic_dev *dev, struct cnic_dma *dma, | |||
| 725 | dma->num_pages = pages; | 725 | dma->num_pages = pages; |
| 726 | 726 | ||
| 727 | for (i = 0; i < pages; i++) { | 727 | for (i = 0; i < pages; i++) { |
| 728 | dma->pg_arr[i] = pci_alloc_consistent(dev->pcidev, | 728 | dma->pg_arr[i] = dma_alloc_coherent(&dev->pcidev->dev, |
| 729 | BCM_PAGE_SIZE, | 729 | BCM_PAGE_SIZE, |
| 730 | &dma->pg_map_arr[i]); | 730 | &dma->pg_map_arr[i], |
| 731 | GFP_ATOMIC); | ||
| 731 | if (dma->pg_arr[i] == NULL) | 732 | if (dma->pg_arr[i] == NULL) |
| 732 | goto error; | 733 | goto error; |
| 733 | } | 734 | } |
| @@ -736,8 +737,8 @@ static int cnic_alloc_dma(struct cnic_dev *dev, struct cnic_dma *dma, | |||
| 736 | 737 | ||
| 737 | dma->pgtbl_size = ((pages * 8) + BCM_PAGE_SIZE - 1) & | 738 | dma->pgtbl_size = ((pages * 8) + BCM_PAGE_SIZE - 1) & |
| 738 | ~(BCM_PAGE_SIZE - 1); | 739 | ~(BCM_PAGE_SIZE - 1); |
| 739 | dma->pgtbl = pci_alloc_consistent(dev->pcidev, dma->pgtbl_size, | 740 | dma->pgtbl = dma_alloc_coherent(&dev->pcidev->dev, dma->pgtbl_size, |
| 740 | &dma->pgtbl_map); | 741 | &dma->pgtbl_map, GFP_ATOMIC); |
| 741 | if (dma->pgtbl == NULL) | 742 | if (dma->pgtbl == NULL) |
| 742 | goto error; | 743 | goto error; |
| 743 | 744 | ||
| @@ -757,9 +758,9 @@ static void cnic_free_context(struct cnic_dev *dev) | |||
| 757 | 758 | ||
| 758 | for (i = 0; i < cp->ctx_blks; i++) { | 759 | for (i = 0; i < cp->ctx_blks; i++) { |
| 759 | if (cp->ctx_arr[i].ctx) { | 760 | if (cp->ctx_arr[i].ctx) { |
| 760 | pci_free_consistent(dev->pcidev, cp->ctx_blk_size, | 761 | dma_free_coherent(&dev->pcidev->dev, cp->ctx_blk_size, |
| 761 | cp->ctx_arr[i].ctx, | 762 | cp->ctx_arr[i].ctx, |
| 762 | cp->ctx_arr[i].mapping); | 763 | cp->ctx_arr[i].mapping); |
| 763 | cp->ctx_arr[i].ctx = NULL; | 764 | cp->ctx_arr[i].ctx = NULL; |
| 764 | } | 765 | } |
| 765 | } | 766 | } |
| @@ -781,14 +782,14 @@ static void cnic_free_resc(struct cnic_dev *dev) | |||
| 781 | } | 782 | } |
| 782 | 783 | ||
| 783 | if (cp->l2_buf) { | 784 | if (cp->l2_buf) { |
| 784 | pci_free_consistent(dev->pcidev, cp->l2_buf_size, | 785 | dma_free_coherent(&dev->pcidev->dev, cp->l2_buf_size, |
| 785 | cp->l2_buf, cp->l2_buf_map); | 786 | cp->l2_buf, cp->l2_buf_map); |
| 786 | cp->l2_buf = NULL; | 787 | cp->l2_buf = NULL; |
| 787 | } | 788 | } |
| 788 | 789 | ||
| 789 | if (cp->l2_ring) { | 790 | if (cp->l2_ring) { |
| 790 | pci_free_consistent(dev->pcidev, cp->l2_ring_size, | 791 | dma_free_coherent(&dev->pcidev->dev, cp->l2_ring_size, |
| 791 | cp->l2_ring, cp->l2_ring_map); | 792 | cp->l2_ring, cp->l2_ring_map); |
| 792 | cp->l2_ring = NULL; | 793 | cp->l2_ring = NULL; |
| 793 | } | 794 | } |
| 794 | 795 | ||
| @@ -849,8 +850,10 @@ static int cnic_alloc_context(struct cnic_dev *dev) | |||
| 849 | 850 | ||
| 850 | for (i = 0; i < cp->ctx_blks; i++) { | 851 | for (i = 0; i < cp->ctx_blks; i++) { |
| 851 | cp->ctx_arr[i].ctx = | 852 | cp->ctx_arr[i].ctx = |
| 852 | pci_alloc_consistent(dev->pcidev, BCM_PAGE_SIZE, | 853 | dma_alloc_coherent(&dev->pcidev->dev, |
| 853 | &cp->ctx_arr[i].mapping); | 854 | BCM_PAGE_SIZE, |
| 855 | &cp->ctx_arr[i].mapping, | ||
| 856 | GFP_KERNEL); | ||
| 854 | if (cp->ctx_arr[i].ctx == NULL) | 857 | if (cp->ctx_arr[i].ctx == NULL) |
| 855 | return -ENOMEM; | 858 | return -ENOMEM; |
| 856 | } | 859 | } |
| @@ -863,15 +866,17 @@ static int cnic_alloc_l2_rings(struct cnic_dev *dev, int pages) | |||
| 863 | struct cnic_local *cp = dev->cnic_priv; | 866 | struct cnic_local *cp = dev->cnic_priv; |
| 864 | 867 | ||
| 865 | cp->l2_ring_size = pages * BCM_PAGE_SIZE; | 868 | cp->l2_ring_size = pages * BCM_PAGE_SIZE; |
| 866 | cp->l2_ring = pci_alloc_consistent(dev->pcidev, cp->l2_ring_size, | 869 | cp->l2_ring = dma_alloc_coherent(&dev->pcidev->dev, cp->l2_ring_size, |
| 867 | &cp->l2_ring_map); | 870 | &cp->l2_ring_map, |
| 871 | GFP_KERNEL | __GFP_COMP); | ||
| 868 | if (!cp->l2_ring) | 872 | if (!cp->l2_ring) |
| 869 | return -ENOMEM; | 873 | return -ENOMEM; |
| 870 | 874 | ||
| 871 | cp->l2_buf_size = (cp->l2_rx_ring_size + 1) * cp->l2_single_buf_size; | 875 | cp->l2_buf_size = (cp->l2_rx_ring_size + 1) * cp->l2_single_buf_size; |
| 872 | cp->l2_buf_size = PAGE_ALIGN(cp->l2_buf_size); | 876 | cp->l2_buf_size = PAGE_ALIGN(cp->l2_buf_size); |
| 873 | cp->l2_buf = pci_alloc_consistent(dev->pcidev, cp->l2_buf_size, | 877 | cp->l2_buf = dma_alloc_coherent(&dev->pcidev->dev, cp->l2_buf_size, |
| 874 | &cp->l2_buf_map); | 878 | &cp->l2_buf_map, |
| 879 | GFP_KERNEL | __GFP_COMP); | ||
| 875 | if (!cp->l2_buf) | 880 | if (!cp->l2_buf) |
| 876 | return -ENOMEM; | 881 | return -ENOMEM; |
| 877 | 882 | ||
| @@ -1006,8 +1011,9 @@ static int cnic_alloc_bnx2x_context(struct cnic_dev *dev) | |||
| 1006 | 1011 | ||
| 1007 | for (i = 0; i < blks; i++) { | 1012 | for (i = 0; i < blks; i++) { |
| 1008 | cp->ctx_arr[i].ctx = | 1013 | cp->ctx_arr[i].ctx = |
| 1009 | pci_alloc_consistent(dev->pcidev, cp->ctx_blk_size, | 1014 | dma_alloc_coherent(&dev->pcidev->dev, cp->ctx_blk_size, |
| 1010 | &cp->ctx_arr[i].mapping); | 1015 | &cp->ctx_arr[i].mapping, |
| 1016 | GFP_KERNEL); | ||
| 1011 | if (cp->ctx_arr[i].ctx == NULL) | 1017 | if (cp->ctx_arr[i].ctx == NULL) |
| 1012 | return -ENOMEM; | 1018 | return -ENOMEM; |
| 1013 | 1019 | ||
