Lines Matching refs:dup_table
171 struct mlx4_mac_table *dup_table = &mlx4_priv(dev)->port[dup_port].mac_table; in __mlx4_register_mac() local
182 mutex_lock_nested(&dup_table->mutex, SINGLE_DEPTH_NESTING); in __mlx4_register_mac()
184 mutex_lock(&dup_table->mutex); in __mlx4_register_mac()
198 if (((MLX4_MAC_MASK & mac) == (MLX4_MAC_MASK & be64_to_cpu(dup_table->entries[i])))) in __mlx4_register_mac()
212 dup_table->refs[index_at_port]) { in __mlx4_register_mac()
235 if (!dup_table->refs[i]) in __mlx4_register_mac()
247 u64 dup_mac = MLX4_MAC_MASK & be64_to_cpu(dup_table->entries[i]); in __mlx4_register_mac()
249 if (dup_mac != mac || !dup_table->is_dup[i]) { in __mlx4_register_mac()
292 dup_table->refs[free] = 0; in __mlx4_register_mac()
293 dup_table->is_dup[free] = true; in __mlx4_register_mac()
294 dup_table->entries[free] = cpu_to_be64(mac | MLX4_MAC_VALID); in __mlx4_register_mac()
296 err = mlx4_set_port_mac_table(dev, dup_port, dup_table->entries); in __mlx4_register_mac()
299 dup_table->is_dup[free] = false; in __mlx4_register_mac()
300 dup_table->entries[free] = 0; in __mlx4_register_mac()
303 ++dup_table->total; in __mlx4_register_mac()
310 mutex_unlock(&dup_table->mutex); in __mlx4_register_mac()
312 mutex_unlock(&dup_table->mutex); in __mlx4_register_mac()
366 struct mlx4_mac_table *dup_table = &mlx4_priv(dev)->port[dup_port].mac_table; in __mlx4_unregister_mac() local
378 mutex_lock_nested(&dup_table->mutex, SINGLE_DEPTH_NESTING); in __mlx4_unregister_mac()
380 mutex_lock(&dup_table->mutex); in __mlx4_unregister_mac()
396 dup_table->is_dup[index] = false; in __mlx4_unregister_mac()
406 dup_table->is_dup[index] = false; in __mlx4_unregister_mac()
407 if (dup_table->refs[index]) in __mlx4_unregister_mac()
409 dup_table->entries[index] = 0; in __mlx4_unregister_mac()
410 if (mlx4_set_port_mac_table(dev, dup_port, dup_table->entries)) in __mlx4_unregister_mac()
419 mutex_unlock(&dup_table->mutex); in __mlx4_unregister_mac()
421 mutex_unlock(&dup_table->mutex); in __mlx4_unregister_mac()
462 struct mlx4_mac_table *dup_table = &mlx4_priv(dev)->port[dup_port].mac_table; in __mlx4_replace_mac() local
468 mutex_lock_nested(&dup_table->mutex, SINGLE_DEPTH_NESTING); in __mlx4_replace_mac()
470 mutex_lock(&dup_table->mutex); in __mlx4_replace_mac()
490 dup_table->entries[index] = cpu_to_be64(new_mac | MLX4_MAC_VALID); in __mlx4_replace_mac()
492 err = mlx4_set_port_mac_table(dev, dup_port, dup_table->entries); in __mlx4_replace_mac()
496 dup_table->entries[index] = 0; in __mlx4_replace_mac()
504 mutex_unlock(&dup_table->mutex); in __mlx4_replace_mac()
506 mutex_unlock(&dup_table->mutex); in __mlx4_replace_mac()
566 struct mlx4_vlan_table *dup_table = &mlx4_priv(dev)->port[dup_port].vlan_table; in __mlx4_register_vlan() local
577 mutex_lock_nested(&dup_table->mutex, SINGLE_DEPTH_NESTING); in __mlx4_register_vlan()
579 mutex_lock(&dup_table->mutex); in __mlx4_register_vlan()
599 if (vlan == (MLX4_VLAN_MASK & be32_to_cpu(dup_table->entries[i]))) in __mlx4_register_vlan()
612 dup_table->refs[index_at_port]) { in __mlx4_register_vlan()
623 (vlan == (MLX4_VLAN_MASK & be32_to_cpu(dup_table->entries[index_at_dup_port])))) in __mlx4_register_vlan()
635 if (!dup_table->refs[i]) in __mlx4_register_vlan()
648 u16 dup_vlan = MLX4_VLAN_MASK & be32_to_cpu(dup_table->entries[i]); in __mlx4_register_vlan()
650 if (dup_vlan != vlan || !dup_table->is_dup[i]) { in __mlx4_register_vlan()
690 dup_table->refs[free] = 0; in __mlx4_register_vlan()
691 dup_table->is_dup[free] = true; in __mlx4_register_vlan()
692 dup_table->entries[free] = cpu_to_be32(vlan | MLX4_VLAN_VALID); in __mlx4_register_vlan()
694 err = mlx4_set_port_vlan_table(dev, dup_port, dup_table->entries); in __mlx4_register_vlan()
697 dup_table->is_dup[free] = false; in __mlx4_register_vlan()
698 dup_table->entries[free] = 0; in __mlx4_register_vlan()
701 ++dup_table->total; in __mlx4_register_vlan()
709 mutex_unlock(&dup_table->mutex); in __mlx4_register_vlan()
711 mutex_unlock(&dup_table->mutex); in __mlx4_register_vlan()
748 struct mlx4_vlan_table *dup_table = &mlx4_priv(dev)->port[dup_port].vlan_table; in __mlx4_unregister_vlan() local
753 mutex_lock_nested(&dup_table->mutex, SINGLE_DEPTH_NESTING); in __mlx4_unregister_vlan()
755 mutex_lock(&dup_table->mutex); in __mlx4_unregister_vlan()
776 dup_table->is_dup[index] = false; in __mlx4_unregister_vlan()
784 dup_table->is_dup[index] = false; in __mlx4_unregister_vlan()
785 if (dup_table->refs[index]) in __mlx4_unregister_vlan()
787 dup_table->entries[index] = 0; in __mlx4_unregister_vlan()
788 if (mlx4_set_port_vlan_table(dev, dup_port, dup_table->entries)) in __mlx4_unregister_vlan()
790 --dup_table->total; in __mlx4_unregister_vlan()
796 mutex_unlock(&dup_table->mutex); in __mlx4_unregister_vlan()
798 mutex_unlock(&dup_table->mutex); in __mlx4_unregister_vlan()