• Home
  • Raw
  • Download

Lines Matching refs:table

52 void mlx4_init_mac_table(struct mlx4_dev *dev, struct mlx4_mac_table *table)  in mlx4_init_mac_table()  argument
56 mutex_init(&table->mutex); in mlx4_init_mac_table()
58 table->entries[i] = 0; in mlx4_init_mac_table()
59 table->refs[i] = 0; in mlx4_init_mac_table()
61 table->max = 1 << dev->caps.log_num_macs; in mlx4_init_mac_table()
62 table->total = 0; in mlx4_init_mac_table()
65 void mlx4_init_vlan_table(struct mlx4_dev *dev, struct mlx4_vlan_table *table) in mlx4_init_vlan_table() argument
69 mutex_init(&table->mutex); in mlx4_init_vlan_table()
71 table->entries[i] = 0; in mlx4_init_vlan_table()
72 table->refs[i] = 0; in mlx4_init_vlan_table()
74 table->max = (1 << dev->caps.log_num_vlans) - MLX4_VLAN_REGULAR; in mlx4_init_vlan_table()
75 table->total = 0; in mlx4_init_vlan_table()
79 struct mlx4_mac_table *table, int index) in validate_index() argument
83 if (index < 0 || index >= table->max || !table->entries[index]) { in validate_index()
91 struct mlx4_mac_table *table, u64 mac) in find_index() argument
97 (MLX4_MAC_MASK & be64_to_cpu(table->entries[i]))) in find_index()
129 struct mlx4_mac_table *table = &info->mac_table; in __mlx4_register_mac() local
136 mutex_lock(&table->mutex); in __mlx4_register_mac()
138 if (free < 0 && !table->entries[i]) { in __mlx4_register_mac()
143 if (mac == (MLX4_MAC_MASK & be64_to_cpu(table->entries[i]))) { in __mlx4_register_mac()
146 ++table->refs[i]; in __mlx4_register_mac()
153 if (table->total == table->max) { in __mlx4_register_mac()
160 table->entries[free] = cpu_to_be64(mac | MLX4_MAC_VALID); in __mlx4_register_mac()
162 err = mlx4_set_port_mac_table(dev, port, table->entries); in __mlx4_register_mac()
166 table->entries[free] = 0; in __mlx4_register_mac()
169 table->refs[free] = 1; in __mlx4_register_mac()
171 ++table->total; in __mlx4_register_mac()
173 mutex_unlock(&table->mutex); in __mlx4_register_mac()
207 struct mlx4_mac_table *table = &info->mac_table; in __mlx4_unregister_mac() local
210 mutex_lock(&table->mutex); in __mlx4_unregister_mac()
211 index = find_index(dev, table, mac); in __mlx4_unregister_mac()
213 if (validate_index(dev, table, index)) in __mlx4_unregister_mac()
215 if (--table->refs[index]) { in __mlx4_unregister_mac()
221 table->entries[index] = 0; in __mlx4_unregister_mac()
222 mlx4_set_port_mac_table(dev, port, table->entries); in __mlx4_unregister_mac()
223 --table->total; in __mlx4_unregister_mac()
225 mutex_unlock(&table->mutex); in __mlx4_unregister_mac()
248 struct mlx4_mac_table *table = &info->mac_table; in __mlx4_replace_mac() local
253 mutex_lock(&table->mutex); in __mlx4_replace_mac()
255 err = validate_index(dev, table, index); in __mlx4_replace_mac()
259 table->entries[index] = cpu_to_be64(new_mac | MLX4_MAC_VALID); in __mlx4_replace_mac()
261 err = mlx4_set_port_mac_table(dev, port, table->entries); in __mlx4_replace_mac()
265 table->entries[index] = 0; in __mlx4_replace_mac()
268 mutex_unlock(&table->mutex); in __mlx4_replace_mac()
296 struct mlx4_vlan_table *table = &mlx4_priv(dev)->port[port].vlan_table; in mlx4_find_cached_vlan() local
300 if (table->refs[i] && in mlx4_find_cached_vlan()
302 be32_to_cpu(table->entries[i])))) { in mlx4_find_cached_vlan()
316 struct mlx4_vlan_table *table = &mlx4_priv(dev)->port[port].vlan_table; in __mlx4_register_vlan() local
320 mutex_lock(&table->mutex); in __mlx4_register_vlan()
322 if (table->total == table->max) { in __mlx4_register_vlan()
329 if (free < 0 && (table->refs[i] == 0)) { in __mlx4_register_vlan()
334 if (table->refs[i] && in __mlx4_register_vlan()
336 be32_to_cpu(table->entries[i])))) { in __mlx4_register_vlan()
339 ++table->refs[i]; in __mlx4_register_vlan()
350 table->refs[free] = 1; in __mlx4_register_vlan()
351 table->entries[free] = cpu_to_be32(vlan | MLX4_VLAN_VALID); in __mlx4_register_vlan()
353 err = mlx4_set_port_vlan_table(dev, port, table->entries); in __mlx4_register_vlan()
356 table->refs[free] = 0; in __mlx4_register_vlan()
357 table->entries[free] = 0; in __mlx4_register_vlan()
362 ++table->total; in __mlx4_register_vlan()
364 mutex_unlock(&table->mutex); in __mlx4_register_vlan()
389 struct mlx4_vlan_table *table = &mlx4_priv(dev)->port[port].vlan_table; in __mlx4_unregister_vlan() local
396 mutex_lock(&table->mutex); in __mlx4_unregister_vlan()
397 if (!table->refs[index]) { in __mlx4_unregister_vlan()
401 if (--table->refs[index]) { in __mlx4_unregister_vlan()
406 table->entries[index] = 0; in __mlx4_unregister_vlan()
407 mlx4_set_port_vlan_table(dev, port, table->entries); in __mlx4_unregister_vlan()
408 --table->total; in __mlx4_unregister_vlan()
410 mutex_unlock(&table->mutex); in __mlx4_unregister_vlan()