From e9ad65e0678266288ad2d40743922a35ef8561b0 Mon Sep 17 00:00:00 2001 From: Roland Dreier Date: Thu, 20 May 2010 15:58:22 -0700 Subject: [PATCH] --- yaml --- r: 198431 b: refs/heads/master c: c050def076bfbc4513ee961c77fde6ba3d401158 h: refs/heads/master i: 198429: 10c5b1d77a2bf9695726aaa8b5eebaee9ce6d898 198427: e4d56d2af25e93fb7864e59fca07e8a80a87fcdf 198423: 675866f03eeafd459c2559d0c75d954591544aba 198415: 8cde03cac7e2915c75c6f226ba689f8fb41a1936 198399: 7a4528398e3889fbf7f32a24bbaac1f1b7ab2b84 v: v3 --- [refs] | 2 +- trunk/drivers/net/mlx4/icm.c | 39 ++++++++++++++++++------------------ 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/[refs] b/[refs] index 196ce4e493b7..f667cdaa5296 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c0dc72bad9cf21071f5e4005de46f7c8b67a138a +refs/heads/master: c050def076bfbc4513ee961c77fde6ba3d401158 diff --git a/trunk/drivers/net/mlx4/icm.c b/trunk/drivers/net/mlx4/icm.c index ef62f1749b8a..b07e4dee80aa 100644 --- a/trunk/drivers/net/mlx4/icm.c +++ b/trunk/drivers/net/mlx4/icm.c @@ -163,29 +163,30 @@ struct mlx4_icm *mlx4_alloc_icm(struct mlx4_dev *dev, int npages, ret = mlx4_alloc_icm_pages(&chunk->mem[chunk->npages], cur_order, gfp_mask); - if (!ret) { - ++chunk->npages; - - if (coherent) - ++chunk->nsg; - else if (chunk->npages == MLX4_ICM_CHUNK_LEN) { - chunk->nsg = pci_map_sg(dev->pdev, chunk->mem, - chunk->npages, - PCI_DMA_BIDIRECTIONAL); - - if (chunk->nsg <= 0) - goto fail; - } + if (ret) { + if (--cur_order < 0) + goto fail; + else + continue; + } - if (chunk->npages == MLX4_ICM_CHUNK_LEN) - chunk = NULL; + ++chunk->npages; - npages -= 1 << cur_order; - } else { - --cur_order; - if (cur_order < 0) + if (coherent) + ++chunk->nsg; + else if (chunk->npages == MLX4_ICM_CHUNK_LEN) { + chunk->nsg = pci_map_sg(dev->pdev, chunk->mem, + chunk->npages, + PCI_DMA_BIDIRECTIONAL); + + if (chunk->nsg <= 0) goto fail; } + + if (chunk->npages == MLX4_ICM_CHUNK_LEN) + chunk = NULL; + + npages -= 1 << cur_order; } if (!coherent && chunk) {