Lines Matching refs:eq_table
229 struct mlx4_eq *eq = &priv->eq_table.eq[vec]; in mlx4_set_eq_affinity_hint()
839 writel(priv->eq_table.clr_mask, priv->eq_table.clr_int); in mlx4_interrupt()
842 work |= mlx4_eq_int(dev, &priv->eq_table.eq[i]); in mlx4_interrupt()
925 if (!priv->eq_table.uar_map[index]) { in mlx4_get_eq_uar()
926 priv->eq_table.uar_map[index] = in mlx4_get_eq_uar()
930 if (!priv->eq_table.uar_map[index]) { in mlx4_get_eq_uar()
937 return priv->eq_table.uar_map[index] + 0x800 + 8 * (eq->eqn % 4); in mlx4_get_eq_uar()
946 if (priv->eq_table.uar_map[i]) { in mlx4_unmap_uar()
947 iounmap(priv->eq_table.uar_map[i]); in mlx4_unmap_uar()
948 priv->eq_table.uar_map[i] = NULL; in mlx4_unmap_uar()
1003 eq->eqn = mlx4_bitmap_alloc(&priv->eq_table.bitmap); in mlx4_create_eq()
1054 mlx4_bitmap_free(&priv->eq_table.bitmap, eq->eqn, MLX4_USE_RR); in mlx4_create_eq()
1098 mlx4_bitmap_free(&priv->eq_table.bitmap, eq->eqn, MLX4_USE_RR); in mlx4_free_eq()
1103 struct mlx4_eq_table *eq_table = &mlx4_priv(dev)->eq_table; in mlx4_free_irqs() local
1106 if (eq_table->have_irq) in mlx4_free_irqs()
1110 if (eq_table->eq[i].have_irq) { in mlx4_free_irqs()
1111 free_cpumask_var(eq_table->eq[i].affinity_mask); in mlx4_free_irqs()
1113 irq_set_affinity_hint(eq_table->eq[i].irq, NULL); in mlx4_free_irqs()
1115 free_irq(eq_table->eq[i].irq, eq_table->eq + i); in mlx4_free_irqs()
1116 eq_table->eq[i].have_irq = 0; in mlx4_free_irqs()
1119 kfree(eq_table->irq_names); in mlx4_free_irqs()
1148 priv->eq_table.eq = kcalloc(dev->caps.num_eqs - dev->caps.reserved_eqs, in mlx4_alloc_eq_table()
1149 sizeof *priv->eq_table.eq, GFP_KERNEL); in mlx4_alloc_eq_table()
1150 if (!priv->eq_table.eq) in mlx4_alloc_eq_table()
1158 kfree(mlx4_priv(dev)->eq_table.eq); in mlx4_free_eq_table()
1167 priv->eq_table.uar_map = kcalloc(mlx4_num_eq_uar(dev), in mlx4_init_eq_table()
1168 sizeof *priv->eq_table.uar_map, in mlx4_init_eq_table()
1170 if (!priv->eq_table.uar_map) { in mlx4_init_eq_table()
1175 err = mlx4_bitmap_init(&priv->eq_table.bitmap, in mlx4_init_eq_table()
1185 priv->eq_table.uar_map[i] = NULL; in mlx4_init_eq_table()
1192 priv->eq_table.clr_mask = in mlx4_init_eq_table()
1193 swab32(1 << (priv->eq_table.inta_pin & 31)); in mlx4_init_eq_table()
1194 priv->eq_table.clr_int = priv->clr_base + in mlx4_init_eq_table()
1195 (priv->eq_table.inta_pin < 32 ? 4 : 0); in mlx4_init_eq_table()
1198 priv->eq_table.irq_names = in mlx4_init_eq_table()
1201 if (!priv->eq_table.irq_names) { in mlx4_init_eq_table()
1210 0, &priv->eq_table.eq[MLX4_EQ_ASYNC]); in mlx4_init_eq_table()
1212 struct mlx4_eq *eq = &priv->eq_table.eq[i]; in mlx4_init_eq_table()
1251 snprintf(priv->eq_table.irq_names + in mlx4_init_eq_table()
1256 eq_name = priv->eq_table.irq_names + in mlx4_init_eq_table()
1259 err = request_irq(priv->eq_table.eq[MLX4_EQ_ASYNC].irq, in mlx4_init_eq_table()
1261 priv->eq_table.eq + MLX4_EQ_ASYNC); in mlx4_init_eq_table()
1265 priv->eq_table.eq[MLX4_EQ_ASYNC].have_irq = 1; in mlx4_init_eq_table()
1267 snprintf(priv->eq_table.irq_names, in mlx4_init_eq_table()
1272 IRQF_SHARED, priv->eq_table.irq_names, dev); in mlx4_init_eq_table()
1276 priv->eq_table.have_irq = 1; in mlx4_init_eq_table()
1280 priv->eq_table.eq[MLX4_EQ_ASYNC].eqn); in mlx4_init_eq_table()
1283 priv->eq_table.eq[MLX4_EQ_ASYNC].eqn, err); in mlx4_init_eq_table()
1286 eq_set_ci(&priv->eq_table.eq[MLX4_EQ_ASYNC], 1); in mlx4_init_eq_table()
1292 mlx4_free_eq(dev, &priv->eq_table.eq[i--]); in mlx4_init_eq_table()
1309 mlx4_bitmap_cleanup(&priv->eq_table.bitmap); in mlx4_init_eq_table()
1312 kfree(priv->eq_table.uar_map); in mlx4_init_eq_table()
1323 priv->eq_table.eq[MLX4_EQ_ASYNC].eqn); in mlx4_cleanup_eq_table()
1336 mlx4_free_eq(dev, &priv->eq_table.eq[i]); in mlx4_cleanup_eq_table()
1342 mlx4_bitmap_cleanup(&priv->eq_table.bitmap); in mlx4_cleanup_eq_table()
1344 kfree(priv->eq_table.uar_map); in mlx4_cleanup_eq_table()
1368 if (!priv->eq_table.eq[i].have_irq) in mlx4_test_interrupts()
1376 priv->eq_table.eq[i].eqn); in mlx4_test_interrupts()
1390 priv->eq_table.eq[MLX4_EQ_ASYNC].eqn); in mlx4_test_interrupts()
1404 return test_bit(port - 1, priv->eq_table.eq[vector].actv_ports.ports); in mlx4_is_eq_vector_valid()
1416 priv->eq_table.eq[i].actv_ports.ports); in mlx4_get_eqs_per_port()
1430 return !!(bitmap_weight(priv->eq_table.eq[vector].actv_ports.ports, in mlx4_is_eq_shared()
1455 priv->eq_table.eq[requested_vector].actv_ports.ports)) { in mlx4_assign_eq()
1464 eq = &priv->eq_table.eq[requested_vector]; in mlx4_assign_eq()
1476 struct mlx4_eq *eq = &priv->eq_table.eq[i]; in mlx4_assign_eq()
1496 snprintf(priv->eq_table.irq_names + in mlx4_assign_eq()
1501 err = request_irq(priv->eq_table.eq[*prequested_vector].irq, in mlx4_assign_eq()
1503 &priv->eq_table.irq_names[*prequested_vector << 5], in mlx4_assign_eq()
1504 priv->eq_table.eq + *prequested_vector); in mlx4_assign_eq()
1513 eq_set_ci(&priv->eq_table.eq[*prequested_vector], 1); in mlx4_assign_eq()
1514 priv->eq_table.eq[*prequested_vector].have_irq = 1; in mlx4_assign_eq()
1519 priv->eq_table.eq[*prequested_vector].ref_count++; in mlx4_assign_eq()
1537 return priv->eq_table.eq[MLX4_CQ_TO_EQ_VECTOR(cq_vec)].irq; in mlx4_eq_get_irq()
1547 priv->eq_table.eq[eq_vec].ref_count--; in mlx4_release_eq()