Lines Matching refs:table

52 void mlx4_init_mac_table(struct mlx4_dev *dev, struct mlx4_mac_table *table)
56 mutex_init(&table->mutex);
58 table->entries[i] = 0;
59 table->refs[i] = 0;
61 table->max = 1 << dev->caps.log_num_macs;
62 table->total = 0;
65 void mlx4_init_vlan_table(struct mlx4_dev *dev, struct mlx4_vlan_table *table)
69 mutex_init(&table->mutex);
71 table->entries[i] = 0;
72 table->refs[i] = 0;
74 table->max = (1 << dev->caps.log_num_vlans) - MLX4_VLAN_REGULAR;
75 table->total = 0;
116 struct mlx4_mac_table *table, int index)
120 if (index < 0 || index >= table->max || !table->entries[index]) {
128 struct mlx4_mac_table *table, u64 mac)
134 (MLX4_MAC_MASK & be64_to_cpu(table->entries[i])))
249 struct mlx4_mac_table *table = &info->mac_table;
256 mutex_lock(&table->mutex);
258 if (free < 0 && !table->entries[i]) {
263 if (mac == (MLX4_MAC_MASK & be64_to_cpu(table->entries[i]))) {
272 if (table->total == table->max) {
279 table->entries[free] = cpu_to_be64(mac | MLX4_MAC_VALID);
281 err = mlx4_set_port_mac_table(dev, port, table->entries);
285 table->entries[free] = 0;
290 ++table->total;
292 mutex_unlock(&table->mutex);
320 struct mlx4_mac_table *table = &info->mac_table;
323 index = find_index(dev, table, mac);
325 mutex_lock(&table->mutex);
327 if (validate_index(dev, table, index))
330 table->entries[index] = 0;
331 mlx4_set_port_mac_table(dev, port, table->entries);
332 --table->total;
334 mutex_unlock(&table->mutex);
358 struct mlx4_mac_table *table = &info->mac_table;
376 mutex_lock(&table->mutex);
378 err = validate_index(dev, table, index);
382 table->entries[index] = cpu_to_be64(new_mac | MLX4_MAC_VALID);
384 err = mlx4_set_port_mac_table(dev, port, table->entries);
388 table->entries[index] = 0;
391 mutex_unlock(&table->mutex);
419 struct mlx4_vlan_table *table = &mlx4_priv(dev)->port[port].vlan_table;
423 if (table->refs[i] &&
425 be32_to_cpu(table->entries[i])))) {
439 struct mlx4_vlan_table *table = &mlx4_priv(dev)->port[port].vlan_table;
443 mutex_lock(&table->mutex);
445 if (table->total == table->max) {
452 if (free < 0 && (table->refs[i] == 0)) {
457 if (table->refs[i] &&
459 be32_to_cpu(table->entries[i])))) {
462 ++table->refs[i];
473 table->refs[free] = 1;
474 table->entries[free] = cpu_to_be32(vlan | MLX4_VLAN_VALID);
476 err = mlx4_set_port_vlan_table(dev, port, table->entries);
479 table->refs[free] = 0;
480 table->entries[free] = 0;
485 ++table->total;
487 mutex_unlock(&table->mutex);
512 struct mlx4_vlan_table *table = &mlx4_priv(dev)->port[port].vlan_table;
519 mutex_lock(&table->mutex);
520 if (!table->refs[index]) {
524 if (--table->refs[index]) {
526 "no need to modify vlan table\n", index);
529 table->entries[index] = 0;
530 mlx4_set_port_vlan_table(dev, port, table->entries);
531 --table->total;
533 mutex_unlock(&table->mutex);
696 * MTU or PKEY table size