aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband
diff options
context:
space:
mode:
authorUpinder Malhi <umalhi@cisco.com>2014-01-09 17:48:45 -0500
committerRoland Dreier <roland@purestorage.com>2014-01-14 03:44:46 -0500
commitc5f855e08a97edc107c4a3b73809ed629c1dcac1 (patch)
treeead6f88f161884d02fc73070e6bee0b85b8042a2 /drivers/infiniband
parent6a54d9f9a04ed35e6615a47974c1ef02ff3a62cb (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.c17
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 }