• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/src/linux/linux-2.6/drivers/net/mlx4/

Lines Matching defs:icm

41 #include "icm.h"
53 void mlx4_free_icm(struct mlx4_dev *dev, struct mlx4_icm *icm)
58 list_for_each_entry_safe(chunk, tmp, &icm->chunk_list, list) {
70 kfree(icm);
76 struct mlx4_icm *icm;
80 icm = kmalloc(sizeof *icm, gfp_mask & ~(__GFP_HIGHMEM | __GFP_NOWARN));
81 if (!icm)
82 return icm;
84 icm->refcount = 0;
85 INIT_LIST_HEAD(&icm->chunk_list);
98 list_add_tail(&chunk->list, &icm->chunk_list);
137 return icm;
140 mlx4_free_icm(dev, icm);
144 static int mlx4_MAP_ICM(struct mlx4_dev *dev, struct mlx4_icm *icm, u64 virt)
146 return mlx4_map_cmd(dev, MLX4_CMD_MAP_ICM, icm, virt);
181 int mlx4_MAP_ICM_AUX(struct mlx4_dev *dev, struct mlx4_icm *icm)
183 return mlx4_map_cmd(dev, MLX4_CMD_MAP_ICM_AUX, icm, -1);
198 if (table->icm[i]) {
199 ++table->icm[i]->refcount;
203 table->icm[i] = mlx4_alloc_icm(dev, MLX4_TABLE_CHUNK_SIZE >> PAGE_SHIFT,
206 if (!table->icm[i]) {
211 if (mlx4_MAP_ICM(dev, table->icm[i], table->virt +
213 mlx4_free_icm(dev, table->icm[i]);
214 table->icm[i] = NULL;
219 ++table->icm[i]->refcount;
234 if (--table->icm[i]->refcount == 0) {
237 mlx4_free_icm(dev, table->icm[i]);
238 table->icm[i] = NULL;
248 struct mlx4_icm *icm;
257 icm = table->icm[idx / (MLX4_TABLE_CHUNK_SIZE / table->obj_size)];
260 if (!icm)
263 list_for_each_entry(chunk, &icm->chunk_list, list) {
322 table->icm = kcalloc(num_icm, sizeof *table->icm, GFP_KERNEL);
323 if (!table->icm)
337 table->icm[i] = mlx4_alloc_icm(dev, chunk_size >> PAGE_SHIFT,
340 if (!table->icm[i])
342 if (mlx4_MAP_ICM(dev, table->icm[i], virt + i * MLX4_TABLE_CHUNK_SIZE)) {
343 mlx4_free_icm(dev, table->icm[i]);
344 table->icm[i] = NULL;
352 ++table->icm[i]->refcount;
359 if (table->icm[i]) {
362 mlx4_free_icm(dev, table->icm[i]);
373 if (table->icm[i]) {
376 mlx4_free_icm(dev, table->icm[i]);
379 kfree(table->icm);