Lines Matching refs:table
1876 struct efx_farch_filter_table table[EFX_FARCH_FILTER_TABLE_COUNT]; member
1881 struct efx_farch_filter_table *table,
1930 struct efx_farch_filter_table *table; in efx_farch_filter_push_rx_config() local
1935 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_IP]; in efx_farch_filter_push_rx_config()
1937 table->search_limit[EFX_FARCH_FILTER_TCP_FULL] + in efx_farch_filter_push_rx_config()
1940 table->search_limit[EFX_FARCH_FILTER_TCP_WILD] + in efx_farch_filter_push_rx_config()
1943 table->search_limit[EFX_FARCH_FILTER_UDP_FULL] + in efx_farch_filter_push_rx_config()
1946 table->search_limit[EFX_FARCH_FILTER_UDP_WILD] + in efx_farch_filter_push_rx_config()
1949 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_MAC]; in efx_farch_filter_push_rx_config()
1950 if (table->size) { in efx_farch_filter_push_rx_config()
1953 table->search_limit[EFX_FARCH_FILTER_MAC_FULL] + in efx_farch_filter_push_rx_config()
1957 table->search_limit[EFX_FARCH_FILTER_MAC_WILD] + in efx_farch_filter_push_rx_config()
1961 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_DEF]; in efx_farch_filter_push_rx_config()
1962 if (table->size) { in efx_farch_filter_push_rx_config()
1965 table->spec[EFX_FARCH_FILTER_INDEX_UC_DEF].dmaq_id); in efx_farch_filter_push_rx_config()
1968 !!(table->spec[EFX_FARCH_FILTER_INDEX_UC_DEF].flags & in efx_farch_filter_push_rx_config()
1972 table->spec[EFX_FARCH_FILTER_INDEX_MC_DEF].dmaq_id); in efx_farch_filter_push_rx_config()
1975 !!(table->spec[EFX_FARCH_FILTER_INDEX_MC_DEF].flags & in efx_farch_filter_push_rx_config()
1984 !!(table->spec[EFX_FARCH_FILTER_INDEX_UC_DEF].flags & in efx_farch_filter_push_rx_config()
1985 table->spec[EFX_FARCH_FILTER_INDEX_MC_DEF].flags & in efx_farch_filter_push_rx_config()
2004 struct efx_farch_filter_table *table; in efx_farch_filter_push_tx_limits() local
2009 table = &state->table[EFX_FARCH_FILTER_TABLE_TX_MAC]; in efx_farch_filter_push_tx_limits()
2010 if (table->size) { in efx_farch_filter_push_tx_limits()
2013 table->search_limit[EFX_FARCH_FILTER_MAC_FULL] + in efx_farch_filter_push_tx_limits()
2017 table->search_limit[EFX_FARCH_FILTER_MAC_WILD] + in efx_farch_filter_push_tx_limits()
2372 if (state->table[table_id].size != 0) in efx_farch_filter_get_rx_id_limit()
2374 state->table[table_id].size; in efx_farch_filter_get_rx_id_limit()
2385 struct efx_farch_filter_table *table; in efx_farch_filter_insert() local
2396 table = &state->table[efx_farch_filter_spec_table_id(&spec)]; in efx_farch_filter_insert()
2397 if (table->size == 0) in efx_farch_filter_insert()
2402 table->search_limit[spec.type]); in efx_farch_filter_insert()
2404 if (table->id == EFX_FARCH_FILTER_TABLE_RX_DEF) { in efx_farch_filter_insert()
2432 unsigned int max_rep_depth = table->search_limit[spec.type]; in efx_farch_filter_insert()
2437 unsigned int i = hash & (table->size - 1); in efx_farch_filter_insert()
2445 if (!test_bit(i, table->used_bitmap)) { in efx_farch_filter_insert()
2449 &table->spec[i])) { in efx_farch_filter_insert()
2468 i = (i + incr) & (table->size - 1); in efx_farch_filter_insert()
2478 &table->spec[rep_index]; in efx_farch_filter_insert()
2495 __set_bit(ins_index, table->used_bitmap); in efx_farch_filter_insert()
2496 ++table->used; in efx_farch_filter_insert()
2498 table->spec[ins_index] = spec; in efx_farch_filter_insert()
2500 if (table->id == EFX_FARCH_FILTER_TABLE_RX_DEF) { in efx_farch_filter_insert()
2503 if (table->search_limit[spec.type] < depth) { in efx_farch_filter_insert()
2504 table->search_limit[spec.type] = depth; in efx_farch_filter_insert()
2512 table->offset + table->step * ins_index); in efx_farch_filter_insert()
2518 efx_farch_filter_table_clear_entry(efx, table, in efx_farch_filter_insert()
2534 struct efx_farch_filter_table *table, in efx_farch_filter_table_clear_entry() argument
2539 EFX_WARN_ON_PARANOID(!test_bit(filter_idx, table->used_bitmap)); in efx_farch_filter_table_clear_entry()
2540 BUG_ON(table->offset == 0); /* can't clear MAC default filters */ in efx_farch_filter_table_clear_entry()
2542 __clear_bit(filter_idx, table->used_bitmap); in efx_farch_filter_table_clear_entry()
2543 --table->used; in efx_farch_filter_table_clear_entry()
2544 memset(&table->spec[filter_idx], 0, sizeof(table->spec[0])); in efx_farch_filter_table_clear_entry()
2546 efx_writeo(efx, &filter, table->offset + table->step * filter_idx); in efx_farch_filter_table_clear_entry()
2554 if (unlikely(table->used == 0)) { in efx_farch_filter_table_clear_entry()
2555 memset(table->search_limit, 0, sizeof(table->search_limit)); in efx_farch_filter_table_clear_entry()
2556 if (table->id == EFX_FARCH_FILTER_TABLE_TX_MAC) in efx_farch_filter_table_clear_entry()
2564 struct efx_farch_filter_table *table, in efx_farch_filter_remove() argument
2568 struct efx_farch_filter_spec *spec = &table->spec[filter_idx]; in efx_farch_filter_remove()
2570 if (!test_bit(filter_idx, table->used_bitmap) || in efx_farch_filter_remove()
2578 efx_farch_filter_table_clear_entry(efx, table, filter_idx); in efx_farch_filter_remove()
2590 struct efx_farch_filter_table *table; in efx_farch_filter_remove_safe() local
2598 table = &state->table[table_id]; in efx_farch_filter_remove_safe()
2601 if (filter_idx >= table->size) in efx_farch_filter_remove_safe()
2603 spec = &table->spec[filter_idx]; in efx_farch_filter_remove_safe()
2606 rc = efx_farch_filter_remove(efx, table, filter_idx, priority); in efx_farch_filter_remove_safe()
2618 struct efx_farch_filter_table *table; in efx_farch_filter_get_safe() local
2626 table = &state->table[table_id]; in efx_farch_filter_get_safe()
2629 if (filter_idx >= table->size) in efx_farch_filter_get_safe()
2631 spec = &table->spec[filter_idx]; in efx_farch_filter_get_safe()
2635 if (test_bit(filter_idx, table->used_bitmap) && in efx_farch_filter_get_safe()
2654 struct efx_farch_filter_table *table = &state->table[table_id]; in efx_farch_filter_table_clear() local
2658 for (filter_idx = 0; filter_idx < table->size; ++filter_idx) { in efx_farch_filter_table_clear()
2659 if (table->spec[filter_idx].priority != EFX_FILTER_PRI_AUTO) in efx_farch_filter_table_clear()
2660 efx_farch_filter_remove(efx, table, in efx_farch_filter_table_clear()
2683 struct efx_farch_filter_table *table; in efx_farch_filter_count_rx_used() local
2692 table = &state->table[table_id]; in efx_farch_filter_count_rx_used()
2693 for (filter_idx = 0; filter_idx < table->size; filter_idx++) { in efx_farch_filter_count_rx_used()
2694 if (test_bit(filter_idx, table->used_bitmap) && in efx_farch_filter_count_rx_used()
2695 table->spec[filter_idx].priority == priority) in efx_farch_filter_count_rx_used()
2711 struct efx_farch_filter_table *table; in efx_farch_filter_get_rx_ids() local
2720 table = &state->table[table_id]; in efx_farch_filter_get_rx_ids()
2721 for (filter_idx = 0; filter_idx < table->size; filter_idx++) { in efx_farch_filter_get_rx_ids()
2722 if (test_bit(filter_idx, table->used_bitmap) && in efx_farch_filter_get_rx_ids()
2723 table->spec[filter_idx].priority == priority) { in efx_farch_filter_get_rx_ids()
2729 &table->spec[filter_idx], filter_idx); in efx_farch_filter_get_rx_ids()
2744 struct efx_farch_filter_table *table; in efx_farch_filter_table_restore() local
2751 table = &state->table[table_id]; in efx_farch_filter_table_restore()
2754 if (table->step == 0) in efx_farch_filter_table_restore()
2757 for (filter_idx = 0; filter_idx < table->size; filter_idx++) { in efx_farch_filter_table_restore()
2758 if (!test_bit(filter_idx, table->used_bitmap)) in efx_farch_filter_table_restore()
2760 efx_farch_filter_build(&filter, &table->spec[filter_idx]); in efx_farch_filter_table_restore()
2762 table->offset + table->step * filter_idx); in efx_farch_filter_table_restore()
2778 kfree(state->table[table_id].used_bitmap); in efx_farch_filter_table_remove()
2779 vfree(state->table[table_id].spec); in efx_farch_filter_table_remove()
2787 struct efx_farch_filter_table *table; in efx_farch_filter_table_probe() local
2796 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_IP]; in efx_farch_filter_table_probe()
2797 table->id = EFX_FARCH_FILTER_TABLE_RX_IP; in efx_farch_filter_table_probe()
2798 table->offset = FR_BZ_RX_FILTER_TBL0; in efx_farch_filter_table_probe()
2799 table->size = FR_BZ_RX_FILTER_TBL0_ROWS; in efx_farch_filter_table_probe()
2800 table->step = FR_BZ_RX_FILTER_TBL0_STEP; in efx_farch_filter_table_probe()
2804 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_MAC]; in efx_farch_filter_table_probe()
2805 table->id = EFX_FARCH_FILTER_TABLE_RX_MAC; in efx_farch_filter_table_probe()
2806 table->offset = FR_CZ_RX_MAC_FILTER_TBL0; in efx_farch_filter_table_probe()
2807 table->size = FR_CZ_RX_MAC_FILTER_TBL0_ROWS; in efx_farch_filter_table_probe()
2808 table->step = FR_CZ_RX_MAC_FILTER_TBL0_STEP; in efx_farch_filter_table_probe()
2810 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_DEF]; in efx_farch_filter_table_probe()
2811 table->id = EFX_FARCH_FILTER_TABLE_RX_DEF; in efx_farch_filter_table_probe()
2812 table->size = EFX_FARCH_FILTER_SIZE_RX_DEF; in efx_farch_filter_table_probe()
2814 table = &state->table[EFX_FARCH_FILTER_TABLE_TX_MAC]; in efx_farch_filter_table_probe()
2815 table->id = EFX_FARCH_FILTER_TABLE_TX_MAC; in efx_farch_filter_table_probe()
2816 table->offset = FR_CZ_TX_MAC_FILTER_TBL0; in efx_farch_filter_table_probe()
2817 table->size = FR_CZ_TX_MAC_FILTER_TBL0_ROWS; in efx_farch_filter_table_probe()
2818 table->step = FR_CZ_TX_MAC_FILTER_TBL0_STEP; in efx_farch_filter_table_probe()
2822 table = &state->table[table_id]; in efx_farch_filter_table_probe()
2823 if (table->size == 0) in efx_farch_filter_table_probe()
2825 table->used_bitmap = kcalloc(BITS_TO_LONGS(table->size), in efx_farch_filter_table_probe()
2828 if (!table->used_bitmap) in efx_farch_filter_table_probe()
2830 table->spec = vzalloc(table->size * sizeof(*table->spec)); in efx_farch_filter_table_probe()
2831 if (!table->spec) in efx_farch_filter_table_probe()
2835 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_DEF]; in efx_farch_filter_table_probe()
2836 if (table->size) { in efx_farch_filter_table_probe()
2842 spec = &table->spec[i]; in efx_farch_filter_table_probe()
2845 __set_bit(i, table->used_bitmap); in efx_farch_filter_table_probe()
2863 struct efx_farch_filter_table *table; in efx_farch_filter_update_rx_scatter() local
2872 table = &state->table[table_id]; in efx_farch_filter_update_rx_scatter()
2874 for (filter_idx = 0; filter_idx < table->size; filter_idx++) { in efx_farch_filter_update_rx_scatter()
2875 if (!test_bit(filter_idx, table->used_bitmap) || in efx_farch_filter_update_rx_scatter()
2876 table->spec[filter_idx].dmaq_id >= in efx_farch_filter_update_rx_scatter()
2881 table->spec[filter_idx].flags |= in efx_farch_filter_update_rx_scatter()
2884 table->spec[filter_idx].flags &= in efx_farch_filter_update_rx_scatter()
2891 efx_farch_filter_build(&filter, &table->spec[filter_idx]); in efx_farch_filter_update_rx_scatter()
2893 table->offset + table->step * filter_idx); in efx_farch_filter_update_rx_scatter()
2914 struct efx_farch_filter_table *table = in efx_farch_filter_rfs_expire_one() local
2915 &state->table[EFX_FARCH_FILTER_TABLE_RX_IP]; in efx_farch_filter_rfs_expire_one()
2917 if (test_bit(index, table->used_bitmap) && in efx_farch_filter_rfs_expire_one()
2918 table->spec[index].priority == EFX_FILTER_PRI_HINT && in efx_farch_filter_rfs_expire_one()
2919 rps_may_expire_flow(efx->net_dev, table->spec[index].dmaq_id, in efx_farch_filter_rfs_expire_one()
2921 efx_farch_filter_table_clear_entry(efx, table, index); in efx_farch_filter_rfs_expire_one()