Lines Matching refs:table
1901 struct efx_farch_filter_table table[EFX_FARCH_FILTER_TABLE_COUNT]; member
1906 struct efx_farch_filter_table *table,
1955 struct efx_farch_filter_table *table; in efx_farch_filter_push_rx_config() local
1960 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_IP]; in efx_farch_filter_push_rx_config()
1962 table->search_limit[EFX_FARCH_FILTER_TCP_FULL] + in efx_farch_filter_push_rx_config()
1965 table->search_limit[EFX_FARCH_FILTER_TCP_WILD] + in efx_farch_filter_push_rx_config()
1968 table->search_limit[EFX_FARCH_FILTER_UDP_FULL] + in efx_farch_filter_push_rx_config()
1971 table->search_limit[EFX_FARCH_FILTER_UDP_WILD] + in efx_farch_filter_push_rx_config()
1974 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_MAC]; in efx_farch_filter_push_rx_config()
1975 if (table->size) { in efx_farch_filter_push_rx_config()
1978 table->search_limit[EFX_FARCH_FILTER_MAC_FULL] + in efx_farch_filter_push_rx_config()
1982 table->search_limit[EFX_FARCH_FILTER_MAC_WILD] + in efx_farch_filter_push_rx_config()
1986 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_DEF]; in efx_farch_filter_push_rx_config()
1987 if (table->size) { in efx_farch_filter_push_rx_config()
1990 table->spec[EFX_FARCH_FILTER_INDEX_UC_DEF].dmaq_id); in efx_farch_filter_push_rx_config()
1993 !!(table->spec[EFX_FARCH_FILTER_INDEX_UC_DEF].flags & in efx_farch_filter_push_rx_config()
1997 table->spec[EFX_FARCH_FILTER_INDEX_MC_DEF].dmaq_id); in efx_farch_filter_push_rx_config()
2000 !!(table->spec[EFX_FARCH_FILTER_INDEX_MC_DEF].flags & in efx_farch_filter_push_rx_config()
2009 !!(table->spec[EFX_FARCH_FILTER_INDEX_UC_DEF].flags & in efx_farch_filter_push_rx_config()
2010 table->spec[EFX_FARCH_FILTER_INDEX_MC_DEF].flags & in efx_farch_filter_push_rx_config()
2029 struct efx_farch_filter_table *table; in efx_farch_filter_push_tx_limits() local
2034 table = &state->table[EFX_FARCH_FILTER_TABLE_TX_MAC]; in efx_farch_filter_push_tx_limits()
2035 if (table->size) { in efx_farch_filter_push_tx_limits()
2038 table->search_limit[EFX_FARCH_FILTER_MAC_FULL] + in efx_farch_filter_push_tx_limits()
2042 table->search_limit[EFX_FARCH_FILTER_MAC_WILD] + in efx_farch_filter_push_tx_limits()
2397 if (state->table[table_id].size != 0) in efx_farch_filter_get_rx_id_limit()
2399 state->table[table_id].size; in efx_farch_filter_get_rx_id_limit()
2410 struct efx_farch_filter_table *table; in efx_farch_filter_insert() local
2421 table = &state->table[efx_farch_filter_spec_table_id(&spec)]; in efx_farch_filter_insert()
2422 if (table->size == 0) in efx_farch_filter_insert()
2427 table->search_limit[spec.type]); in efx_farch_filter_insert()
2429 if (table->id == EFX_FARCH_FILTER_TABLE_RX_DEF) { in efx_farch_filter_insert()
2457 unsigned int max_rep_depth = table->search_limit[spec.type]; in efx_farch_filter_insert()
2462 unsigned int i = hash & (table->size - 1); in efx_farch_filter_insert()
2470 if (!test_bit(i, table->used_bitmap)) { in efx_farch_filter_insert()
2474 &table->spec[i])) { in efx_farch_filter_insert()
2493 i = (i + incr) & (table->size - 1); in efx_farch_filter_insert()
2503 &table->spec[rep_index]; in efx_farch_filter_insert()
2520 __set_bit(ins_index, table->used_bitmap); in efx_farch_filter_insert()
2521 ++table->used; in efx_farch_filter_insert()
2523 table->spec[ins_index] = spec; in efx_farch_filter_insert()
2525 if (table->id == EFX_FARCH_FILTER_TABLE_RX_DEF) { in efx_farch_filter_insert()
2528 if (table->search_limit[spec.type] < depth) { in efx_farch_filter_insert()
2529 table->search_limit[spec.type] = depth; in efx_farch_filter_insert()
2537 table->offset + table->step * ins_index); in efx_farch_filter_insert()
2543 efx_farch_filter_table_clear_entry(efx, table, in efx_farch_filter_insert()
2559 struct efx_farch_filter_table *table, in efx_farch_filter_table_clear_entry() argument
2564 EFX_WARN_ON_PARANOID(!test_bit(filter_idx, table->used_bitmap)); in efx_farch_filter_table_clear_entry()
2565 BUG_ON(table->offset == 0); /* can't clear MAC default filters */ in efx_farch_filter_table_clear_entry()
2567 __clear_bit(filter_idx, table->used_bitmap); in efx_farch_filter_table_clear_entry()
2568 --table->used; in efx_farch_filter_table_clear_entry()
2569 memset(&table->spec[filter_idx], 0, sizeof(table->spec[0])); in efx_farch_filter_table_clear_entry()
2571 efx_writeo(efx, &filter, table->offset + table->step * filter_idx); in efx_farch_filter_table_clear_entry()
2579 if (unlikely(table->used == 0)) { in efx_farch_filter_table_clear_entry()
2580 memset(table->search_limit, 0, sizeof(table->search_limit)); in efx_farch_filter_table_clear_entry()
2581 if (table->id == EFX_FARCH_FILTER_TABLE_TX_MAC) in efx_farch_filter_table_clear_entry()
2589 struct efx_farch_filter_table *table, in efx_farch_filter_remove() argument
2593 struct efx_farch_filter_spec *spec = &table->spec[filter_idx]; in efx_farch_filter_remove()
2595 if (!test_bit(filter_idx, table->used_bitmap) || in efx_farch_filter_remove()
2603 efx_farch_filter_table_clear_entry(efx, table, filter_idx); in efx_farch_filter_remove()
2615 struct efx_farch_filter_table *table; in efx_farch_filter_remove_safe() local
2623 table = &state->table[table_id]; in efx_farch_filter_remove_safe()
2626 if (filter_idx >= table->size) in efx_farch_filter_remove_safe()
2628 spec = &table->spec[filter_idx]; in efx_farch_filter_remove_safe()
2631 rc = efx_farch_filter_remove(efx, table, filter_idx, priority); in efx_farch_filter_remove_safe()
2643 struct efx_farch_filter_table *table; in efx_farch_filter_get_safe() local
2651 table = &state->table[table_id]; in efx_farch_filter_get_safe()
2654 if (filter_idx >= table->size) in efx_farch_filter_get_safe()
2656 spec = &table->spec[filter_idx]; in efx_farch_filter_get_safe()
2660 if (test_bit(filter_idx, table->used_bitmap) && in efx_farch_filter_get_safe()
2679 struct efx_farch_filter_table *table = &state->table[table_id]; in efx_farch_filter_table_clear() local
2683 for (filter_idx = 0; filter_idx < table->size; ++filter_idx) { in efx_farch_filter_table_clear()
2684 if (table->spec[filter_idx].priority != EFX_FILTER_PRI_AUTO) in efx_farch_filter_table_clear()
2685 efx_farch_filter_remove(efx, table, in efx_farch_filter_table_clear()
2708 struct efx_farch_filter_table *table; in efx_farch_filter_count_rx_used() local
2717 table = &state->table[table_id]; in efx_farch_filter_count_rx_used()
2718 for (filter_idx = 0; filter_idx < table->size; filter_idx++) { in efx_farch_filter_count_rx_used()
2719 if (test_bit(filter_idx, table->used_bitmap) && in efx_farch_filter_count_rx_used()
2720 table->spec[filter_idx].priority == priority) in efx_farch_filter_count_rx_used()
2736 struct efx_farch_filter_table *table; in efx_farch_filter_get_rx_ids() local
2745 table = &state->table[table_id]; in efx_farch_filter_get_rx_ids()
2746 for (filter_idx = 0; filter_idx < table->size; filter_idx++) { in efx_farch_filter_get_rx_ids()
2747 if (test_bit(filter_idx, table->used_bitmap) && in efx_farch_filter_get_rx_ids()
2748 table->spec[filter_idx].priority == priority) { in efx_farch_filter_get_rx_ids()
2754 &table->spec[filter_idx], filter_idx); in efx_farch_filter_get_rx_ids()
2769 struct efx_farch_filter_table *table; in efx_farch_filter_table_restore() local
2776 table = &state->table[table_id]; in efx_farch_filter_table_restore()
2779 if (table->step == 0) in efx_farch_filter_table_restore()
2782 for (filter_idx = 0; filter_idx < table->size; filter_idx++) { in efx_farch_filter_table_restore()
2783 if (!test_bit(filter_idx, table->used_bitmap)) in efx_farch_filter_table_restore()
2785 efx_farch_filter_build(&filter, &table->spec[filter_idx]); in efx_farch_filter_table_restore()
2787 table->offset + table->step * filter_idx); in efx_farch_filter_table_restore()
2803 kfree(state->table[table_id].used_bitmap); in efx_farch_filter_table_remove()
2804 vfree(state->table[table_id].spec); in efx_farch_filter_table_remove()
2812 struct efx_farch_filter_table *table; in efx_farch_filter_table_probe() local
2821 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_IP]; in efx_farch_filter_table_probe()
2822 table->id = EFX_FARCH_FILTER_TABLE_RX_IP; in efx_farch_filter_table_probe()
2823 table->offset = FR_BZ_RX_FILTER_TBL0; in efx_farch_filter_table_probe()
2824 table->size = FR_BZ_RX_FILTER_TBL0_ROWS; in efx_farch_filter_table_probe()
2825 table->step = FR_BZ_RX_FILTER_TBL0_STEP; in efx_farch_filter_table_probe()
2829 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_MAC]; in efx_farch_filter_table_probe()
2830 table->id = EFX_FARCH_FILTER_TABLE_RX_MAC; in efx_farch_filter_table_probe()
2831 table->offset = FR_CZ_RX_MAC_FILTER_TBL0; in efx_farch_filter_table_probe()
2832 table->size = FR_CZ_RX_MAC_FILTER_TBL0_ROWS; in efx_farch_filter_table_probe()
2833 table->step = FR_CZ_RX_MAC_FILTER_TBL0_STEP; in efx_farch_filter_table_probe()
2835 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_DEF]; in efx_farch_filter_table_probe()
2836 table->id = EFX_FARCH_FILTER_TABLE_RX_DEF; in efx_farch_filter_table_probe()
2837 table->size = EFX_FARCH_FILTER_SIZE_RX_DEF; in efx_farch_filter_table_probe()
2839 table = &state->table[EFX_FARCH_FILTER_TABLE_TX_MAC]; in efx_farch_filter_table_probe()
2840 table->id = EFX_FARCH_FILTER_TABLE_TX_MAC; in efx_farch_filter_table_probe()
2841 table->offset = FR_CZ_TX_MAC_FILTER_TBL0; in efx_farch_filter_table_probe()
2842 table->size = FR_CZ_TX_MAC_FILTER_TBL0_ROWS; in efx_farch_filter_table_probe()
2843 table->step = FR_CZ_TX_MAC_FILTER_TBL0_STEP; in efx_farch_filter_table_probe()
2847 table = &state->table[table_id]; in efx_farch_filter_table_probe()
2848 if (table->size == 0) in efx_farch_filter_table_probe()
2850 table->used_bitmap = kcalloc(BITS_TO_LONGS(table->size), in efx_farch_filter_table_probe()
2853 if (!table->used_bitmap) in efx_farch_filter_table_probe()
2855 table->spec = vzalloc(table->size * sizeof(*table->spec)); in efx_farch_filter_table_probe()
2856 if (!table->spec) in efx_farch_filter_table_probe()
2860 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_DEF]; in efx_farch_filter_table_probe()
2861 if (table->size) { in efx_farch_filter_table_probe()
2867 spec = &table->spec[i]; in efx_farch_filter_table_probe()
2870 __set_bit(i, table->used_bitmap); in efx_farch_filter_table_probe()
2888 struct efx_farch_filter_table *table; in efx_farch_filter_update_rx_scatter() local
2897 table = &state->table[table_id]; in efx_farch_filter_update_rx_scatter()
2899 for (filter_idx = 0; filter_idx < table->size; filter_idx++) { in efx_farch_filter_update_rx_scatter()
2900 if (!test_bit(filter_idx, table->used_bitmap) || in efx_farch_filter_update_rx_scatter()
2901 table->spec[filter_idx].dmaq_id >= in efx_farch_filter_update_rx_scatter()
2906 table->spec[filter_idx].flags |= in efx_farch_filter_update_rx_scatter()
2909 table->spec[filter_idx].flags &= in efx_farch_filter_update_rx_scatter()
2916 efx_farch_filter_build(&filter, &table->spec[filter_idx]); in efx_farch_filter_update_rx_scatter()
2918 table->offset + table->step * filter_idx); in efx_farch_filter_update_rx_scatter()
2939 struct efx_farch_filter_table *table = in efx_farch_filter_rfs_expire_one() local
2940 &state->table[EFX_FARCH_FILTER_TABLE_RX_IP]; in efx_farch_filter_rfs_expire_one()
2942 if (test_bit(index, table->used_bitmap) && in efx_farch_filter_rfs_expire_one()
2943 table->spec[index].priority == EFX_FILTER_PRI_HINT && in efx_farch_filter_rfs_expire_one()
2944 rps_may_expire_flow(efx->net_dev, table->spec[index].dmaq_id, in efx_farch_filter_rfs_expire_one()
2946 efx_farch_filter_table_clear_entry(efx, table, index); in efx_farch_filter_rfs_expire_one()