diff options
Diffstat (limited to 'drivers/net/mlx4')
-rw-r--r-- | drivers/net/mlx4/alloc.c | 37 | ||||
-rw-r--r-- | drivers/net/mlx4/en_rx.c | 2 | ||||
-rw-r--r-- | drivers/net/mlx4/en_tx.c | 2 | ||||
-rw-r--r-- | drivers/net/mlx4/mlx4_en.h | 2 |
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 | ||
75 | static 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 | |||
81 | again: | ||
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 | |||
104 | u32 mlx4_bitmap_alloc_range(struct mlx4_bitmap *bitmap, int cnt, int align) | 75 | u32 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 { | |||
47 | static int inline_thold __read_mostly = MAX_INLINE; | 47 | static int inline_thold __read_mostly = MAX_INLINE; |
48 | 48 | ||
49 | module_param_named(inline_thold, inline_thold, int, 0444); | 49 | module_param_named(inline_thold, inline_thold, int, 0444); |
50 | MODULE_PARM_DESC(inline_thold, "treshold for using inline data"); | 50 | MODULE_PARM_DESC(inline_thold, "threshold for using inline data"); |
51 | 51 | ||
52 | int mlx4_en_create_tx_ring(struct mlx4_en_priv *priv, | 52 | int 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) |