Skip to content

Commit

Permalink
mlx4_core: Clean up mlx4_alloc_icm() a bit
Browse files Browse the repository at this point in the history
Handle the allocation error case first, so that we don't have further
nested if for handling the common case of success.

Signed-off-by: Roland Dreier <rolandd@cisco.com>
  • Loading branch information
Roland Dreier committed May 20, 2010
1 parent c0dc72b commit c050def
Showing 1 changed file with 20 additions and 19 deletions.
39 changes: 20 additions & 19 deletions drivers/net/mlx4/icm.c
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down

0 comments on commit c050def

Please sign in to comment.