• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/net/mlx4/

Lines Matching refs:icm

42 #include "icm.h"
77 void mlx4_free_icm(struct mlx4_dev *dev, struct mlx4_icm *icm, int coherent)
81 if (!icm)
84 list_for_each_entry_safe(chunk, tmp, &icm->chunk_list, list) {
93 kfree(icm);
125 struct mlx4_icm *icm;
133 icm = kmalloc(sizeof *icm, gfp_mask & ~(__GFP_HIGHMEM | __GFP_NOWARN));
134 if (!icm)
137 icm->refcount = 0;
138 INIT_LIST_HEAD(&icm->chunk_list);
152 list_add_tail(&chunk->list, &icm->chunk_list);
201 return icm;
204 mlx4_free_icm(dev, icm, coherent);
208 static int mlx4_MAP_ICM(struct mlx4_dev *dev, struct mlx4_icm *icm, u64 virt)
210 return mlx4_map_cmd(dev, MLX4_CMD_MAP_ICM, icm, virt);
245 int mlx4_MAP_ICM_AUX(struct mlx4_dev *dev, struct mlx4_icm *icm)
247 return mlx4_map_cmd(dev, MLX4_CMD_MAP_ICM_AUX, icm, -1);
262 if (table->icm[i]) {
263 ++table->icm[i]->refcount;
267 table->icm[i] = mlx4_alloc_icm(dev, MLX4_TABLE_CHUNK_SIZE >> PAGE_SHIFT,
270 if (!table->icm[i]) {
275 if (mlx4_MAP_ICM(dev, table->icm[i], table->virt +
277 mlx4_free_icm(dev, table->icm[i], table->coherent);
278 table->icm[i] = NULL;
283 ++table->icm[i]->refcount;
298 if (--table->icm[i]->refcount == 0) {
301 mlx4_free_icm(dev, table->icm[i], table->coherent);
302 table->icm[i] = NULL;
312 struct mlx4_icm *icm;
321 icm = table->icm[idx / MLX4_TABLE_CHUNK_SIZE];
324 if (!icm)
327 list_for_each_entry(chunk, &icm->chunk_list, list) {
397 table->icm = kcalloc(num_icm, sizeof *table->icm, GFP_KERNEL);
398 if (!table->icm)
413 table->icm[i] = mlx4_alloc_icm(dev, chunk_size >> PAGE_SHIFT,
416 if (!table->icm[i])
418 if (mlx4_MAP_ICM(dev, table->icm[i], virt + i * MLX4_TABLE_CHUNK_SIZE)) {
419 mlx4_free_icm(dev, table->icm[i], use_coherent);
420 table->icm[i] = NULL;
428 ++table->icm[i]->refcount;
435 if (table->icm[i]) {
438 mlx4_free_icm(dev, table->icm[i], use_coherent);
449 if (table->icm[i]) {
452 mlx4_free_icm(dev, table->icm[i], table->coherent);
455 kfree(table->icm);