MCPcopy Create free account
hub / github.com/F-Stack/f-stack / rte_efd_lookup_bulk

Function rte_efd_lookup_bulk

dpdk/lib/efd/rte_efd.c:1319–1354  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1317}
1318
1319void rte_efd_lookup_bulk(const struct rte_efd_table * const table,
1320 const unsigned int socket_id, const int num_keys,
1321 const void **key_list, efd_value_t * const value_list)
1322{
1323 int i;
1324 uint32_t chunk_id_list[RTE_EFD_BURST_MAX];
1325 uint32_t bin_id_list[RTE_EFD_BURST_MAX];
1326 uint8_t bin_choice_list[RTE_EFD_BURST_MAX];
1327 uint32_t group_id_list[RTE_EFD_BURST_MAX];
1328 struct efd_online_group_entry *group;
1329
1330 struct efd_online_chunk *chunks = table->chunks[socket_id];
1331
1332 for (i = 0; i < num_keys; i++) {
1333 efd_compute_ids(table, key_list[i], &chunk_id_list[i],
1334 &bin_id_list[i]);
1335 rte_prefetch0(&chunks[chunk_id_list[i]].bin_choice_list);
1336 }
1337
1338 for (i = 0; i < num_keys; i++) {
1339 bin_choice_list[i] = efd_get_choice(table, socket_id,
1340 chunk_id_list[i], bin_id_list[i]);
1341 group_id_list[i] =
1342 efd_bin_to_group[bin_choice_list[i]][bin_id_list[i]];
1343 group = &chunks[chunk_id_list[i]].groups[group_id_list[i]];
1344 rte_prefetch0(group);
1345 }
1346
1347 for (i = 0; i < num_keys; i++) {
1348 group = &chunks[chunk_id_list[i]].groups[group_id_list[i]];
1349 value_list[i] = efd_lookup_internal(group,
1350 EFD_HASHFUNCA(key_list[i], table),
1351 EFD_HASHFUNCB(key_list[i], table),
1352 table->lookup_fn);
1353 }
1354}

Callers 3

test_five_keysFunction · 0.85
timed_lookups_multiFunction · 0.85
process_packetsFunction · 0.85

Calls 4

efd_compute_idsFunction · 0.85
efd_get_choiceFunction · 0.85
efd_lookup_internalFunction · 0.85
rte_prefetch0Function · 0.50

Tested by 2

test_five_keysFunction · 0.68
timed_lookups_multiFunction · 0.68