aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/mlx4
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/mlx4')
-rw-r--r--drivers/net/mlx4/alloc.c37
-rw-r--r--drivers/net/mlx4/en_rx.c2
-rw-r--r--drivers/net/mlx4/en_tx.c2
-rw-r--r--drivers/net/mlx4/mlx4_en.h2
4 files changed, 7 insertions, 36 deletions
diff --git a/drivers/net/mlx4/alloc.c b/drivers/net/mlx4/alloc.c
index ad95d5f7b630..8c8515619b8e 100644
--- a/drivers/net/mlx4/alloc.c
+++ b/drivers/net/mlx4/alloc.c
@@ -72,35 +72,6 @@ void mlx4_bitmap_free(struct mlx4_bitmap *bitmap, u32 obj)
72 mlx4_bitmap_free_range(bitmap, obj, 1); 72 mlx4_bitmap_free_range(bitmap, obj, 1);
73} 73}
74 74
75static unsigned long find_aligned_range(unsigned long *bitmap,
76 u32 start, u32 nbits,
77 int len, int align)
78{
79 unsigned long end, i;
80
81again:
82 start = ALIGN(start, align);
83
84 while ((start < nbits) && test_bit(start, bitmap))
85 start += align;
86
87 if (start >= nbits)
88 return -1;
89
90 end = start+len;
91 if (end > nbits)
92 return -1;
93
94 for (i = start + 1; i < end; i++) {
95 if (test_bit(i, bitmap)) {
96 start = i + 1;
97 goto again;
98 }
99 }
100
101 return start;
102}
103
104u32 mlx4_bitmap_alloc_range(struct mlx4_bitmap *bitmap, int cnt, int align) 75u32 mlx4_bitmap_alloc_range(struct mlx4_bitmap *bitmap, int cnt, int align)
105{ 76{
106 u32 obj, i; 77 u32 obj, i;
@@ -110,13 +81,13 @@ u32 mlx4_bitmap_alloc_range(struct mlx4_bitmap *bitmap, int cnt, int align)
110 81
111 spin_lock(&bitmap->lock); 82 spin_lock(&bitmap->lock);
112 83
113 obj = find_aligned_range(bitmap->table, bitmap->last, 84 obj = bitmap_find_next_zero_area(bitmap->table, bitmap->max,
114 bitmap->max, cnt, align); 85 bitmap->last, cnt, align - 1);
115 if (obj >= bitmap->max) { 86 if (obj >= bitmap->max) {
116 bitmap->top = (bitmap->top + bitmap->max + bitmap->reserved_top) 87 bitmap->top = (bitmap->top + bitmap->max + bitmap->reserved_top)
117 & bitmap->mask; 88 & bitmap->mask;
118 obj = find_aligned_range(bitmap->table, 0, bitmap->max, 89 obj = bitmap_find_next_zero_area(bitmap->table, bitmap->max,
119 cnt, align); 90 0, cnt, align - 1);
120 } 91 }
121 92
122 if (obj < bitmap->max) { 93 if (obj < bitmap->max) {
diff --git a/drivers/net/mlx4/en_rx.c b/drivers/net/mlx4/en_rx.c
index 03b781a7a182..829b9ec9ff67 100644
--- a/drivers/net/mlx4/en_rx.c
+++ b/drivers/net/mlx4/en_rx.c
@@ -204,7 +204,7 @@ static void mlx4_en_free_rx_desc(struct mlx4_en_priv *priv,
204 en_dbg(DRV, priv, "Freeing fragment:%d\n", nr); 204 en_dbg(DRV, priv, "Freeing fragment:%d\n", nr);
205 dma = be64_to_cpu(rx_desc->data[nr].addr); 205 dma = be64_to_cpu(rx_desc->data[nr].addr);
206 206
207 en_dbg(DRV, priv, "Unmaping buffer at dma:0x%llx\n", (u64) dma); 207 en_dbg(DRV, priv, "Unmapping buffer at dma:0x%llx\n", (u64) dma);
208 pci_unmap_single(mdev->pdev, dma, skb_frags[nr].size, 208 pci_unmap_single(mdev->pdev, dma, skb_frags[nr].size,
209 PCI_DMA_FROMDEVICE); 209 PCI_DMA_FROMDEVICE);
210 put_page(skb_frags[nr].page); 210 put_page(skb_frags[nr].page);
diff --git a/drivers/net/mlx4/en_tx.c b/drivers/net/mlx4/en_tx.c
index 8c7279965b44..3d1396af9462 100644
--- a/drivers/net/mlx4/en_tx.c
+++ b/drivers/net/mlx4/en_tx.c
@@ -47,7 +47,7 @@ enum {
47static int inline_thold __read_mostly = MAX_INLINE; 47static int inline_thold __read_mostly = MAX_INLINE;
48 48
49module_param_named(inline_thold, inline_thold, int, 0444); 49module_param_named(inline_thold, inline_thold, int, 0444);
50MODULE_PARM_DESC(inline_thold, "treshold for using inline data"); 50MODULE_PARM_DESC(inline_thold, "threshold for using inline data");
51 51
52int mlx4_en_create_tx_ring(struct mlx4_en_priv *priv, 52int mlx4_en_create_tx_ring(struct mlx4_en_priv *priv,
53 struct mlx4_en_tx_ring *ring, u32 size, 53 struct mlx4_en_tx_ring *ring, u32 size,
diff --git a/drivers/net/mlx4/mlx4_en.h b/drivers/net/mlx4/mlx4_en.h
index 4376147b0ea0..82c3ebc584e3 100644
--- a/drivers/net/mlx4/mlx4_en.h
+++ b/drivers/net/mlx4/mlx4_en.h
@@ -162,7 +162,7 @@ enum {
162#define MLX4_EN_DEF_RX_PAUSE 1 162#define MLX4_EN_DEF_RX_PAUSE 1
163#define MLX4_EN_DEF_TX_PAUSE 1 163#define MLX4_EN_DEF_TX_PAUSE 1
164 164
165/* Interval between sucessive polls in the Tx routine when polling is used 165/* Interval between successive polls in the Tx routine when polling is used
166 instead of interrupts (in per-core Tx rings) - should be power of 2 */ 166 instead of interrupts (in per-core Tx rings) - should be power of 2 */
167#define MLX4_EN_TX_POLL_MODER 16 167#define MLX4_EN_TX_POLL_MODER 16
168#define MLX4_EN_TX_POLL_TIMEOUT (HZ / 4) 168#define MLX4_EN_TX_POLL_TIMEOUT (HZ / 4)