diff options
author | Upinder Malhi <umalhi@cisco.com> | 2014-01-09 17:48:45 -0500 |
---|---|---|
committer | Roland Dreier <roland@purestorage.com> | 2014-01-14 03:44:46 -0500 |
commit | c5f855e08a97edc107c4a3b73809ed629c1dcac1 (patch) | |
tree | ead6f88f161884d02fc73070e6bee0b85b8042a2 /drivers/infiniband | |
parent | 6a54d9f9a04ed35e6615a47974c1ef02ff3a62cb (diff) |
IB/usnic: Use for_each_sg instead of a for-loop
Use for_each_sg() instead of an explicit for-loop to iterate over
scatter-gather list.
Signed-off-by: Upinder Malhi <umalhi@cisco.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r-- | drivers/infiniband/hw/usnic/usnic_uiom.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/drivers/infiniband/hw/usnic/usnic_uiom.c b/drivers/infiniband/hw/usnic/usnic_uiom.c index c841a752dbd0..ae6934c0d05a 100644 --- a/drivers/infiniband/hw/usnic/usnic_uiom.c +++ b/drivers/infiniband/hw/usnic/usnic_uiom.c | |||
@@ -80,13 +80,14 @@ static void usnic_uiom_put_pages(struct list_head *chunk_list, int dirty) | |||
80 | { | 80 | { |
81 | struct usnic_uiom_chunk *chunk, *tmp; | 81 | struct usnic_uiom_chunk *chunk, *tmp; |
82 | struct page *page; | 82 | struct page *page; |
83 | struct scatterlist *sg; | ||
83 | int i; | 84 | int i; |
84 | dma_addr_t pa; | 85 | dma_addr_t pa; |
85 | 86 | ||
86 | list_for_each_entry_safe(chunk, tmp, chunk_list, list) { | 87 | list_for_each_entry_safe(chunk, tmp, chunk_list, list) { |
87 | for (i = 0; i < chunk->nents; i++) { | 88 | for_each_sg(chunk->page_list, sg, chunk->nents, i) { |
88 | page = sg_page(&chunk->page_list[i]); | 89 | page = sg_page(sg); |
89 | pa = sg_phys(&chunk->page_list[i]); | 90 | pa = sg_phys(sg); |
90 | if (dirty) | 91 | if (dirty) |
91 | set_page_dirty_lock(page); | 92 | set_page_dirty_lock(page); |
92 | put_page(page); | 93 | put_page(page); |
@@ -100,6 +101,7 @@ static int usnic_uiom_get_pages(unsigned long addr, size_t size, int writable, | |||
100 | int dmasync, struct list_head *chunk_list) | 101 | int dmasync, struct list_head *chunk_list) |
101 | { | 102 | { |
102 | struct page **page_list; | 103 | struct page **page_list; |
104 | struct scatterlist *sg; | ||
103 | struct usnic_uiom_chunk *chunk; | 105 | struct usnic_uiom_chunk *chunk; |
104 | unsigned long locked; | 106 | unsigned long locked; |
105 | unsigned long lock_limit; | 107 | unsigned long lock_limit; |
@@ -165,11 +167,10 @@ static int usnic_uiom_get_pages(unsigned long addr, size_t size, int writable, | |||
165 | 167 | ||
166 | chunk->nents = min_t(int, ret, USNIC_UIOM_PAGE_CHUNK); | 168 | chunk->nents = min_t(int, ret, USNIC_UIOM_PAGE_CHUNK); |
167 | sg_init_table(chunk->page_list, chunk->nents); | 169 | sg_init_table(chunk->page_list, chunk->nents); |
168 | for (i = 0; i < chunk->nents; ++i) { | 170 | for_each_sg(chunk->page_list, sg, chunk->nents, i) { |
169 | sg_set_page(&chunk->page_list[i], | 171 | sg_set_page(sg, page_list[i + off], |
170 | page_list[i + off], | 172 | PAGE_SIZE, 0); |
171 | PAGE_SIZE, 0); | 173 | pa = sg_phys(sg); |
172 | pa = sg_phys(&chunk->page_list[i]); | ||
173 | usnic_dbg("va: 0x%lx pa: %pa\n", | 174 | usnic_dbg("va: 0x%lx pa: %pa\n", |
174 | cur_base + i*PAGE_SIZE, &pa); | 175 | cur_base + i*PAGE_SIZE, &pa); |
175 | } | 176 | } |