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

Function ena_set_hash_fields

dpdk/drivers/net/ena/ena_rss.c:331–391  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

329}
330
331static int ena_set_hash_fields(struct ena_com_dev *ena_dev, uint64_t rss_hf)
332{
333 struct ena_admin_proto_input selected_fields[ENA_ADMIN_RSS_PROTO_NUM] = {};
334 int rc, i;
335
336 /* Turn on appropriate fields for each requested packet type */
337 if ((rss_hf & RTE_ETH_RSS_NONFRAG_IPV4_TCP) != 0)
338 selected_fields[ENA_ADMIN_RSS_TCP4].fields =
339 ena_eth_hf_to_admin_hf(ENA_ADMIN_RSS_TCP4, rss_hf);
340
341 if ((rss_hf & RTE_ETH_RSS_NONFRAG_IPV4_UDP) != 0)
342 selected_fields[ENA_ADMIN_RSS_UDP4].fields =
343 ena_eth_hf_to_admin_hf(ENA_ADMIN_RSS_UDP4, rss_hf);
344
345 if ((rss_hf & RTE_ETH_RSS_NONFRAG_IPV6_TCP) != 0)
346 selected_fields[ENA_ADMIN_RSS_TCP6].fields =
347 ena_eth_hf_to_admin_hf(ENA_ADMIN_RSS_TCP6, rss_hf);
348
349 if ((rss_hf & RTE_ETH_RSS_NONFRAG_IPV6_UDP) != 0)
350 selected_fields[ENA_ADMIN_RSS_UDP6].fields =
351 ena_eth_hf_to_admin_hf(ENA_ADMIN_RSS_UDP6, rss_hf);
352
353 if ((rss_hf & RTE_ETH_RSS_IPV4) != 0)
354 selected_fields[ENA_ADMIN_RSS_IP4].fields =
355 ena_eth_hf_to_admin_hf(ENA_ADMIN_RSS_IP4, rss_hf);
356
357 if ((rss_hf & RTE_ETH_RSS_IPV6) != 0)
358 selected_fields[ENA_ADMIN_RSS_IP6].fields =
359 ena_eth_hf_to_admin_hf(ENA_ADMIN_RSS_IP6, rss_hf);
360
361 if ((rss_hf & RTE_ETH_RSS_FRAG_IPV4) != 0)
362 selected_fields[ENA_ADMIN_RSS_IP4_FRAG].fields =
363 ena_eth_hf_to_admin_hf(ENA_ADMIN_RSS_IP4_FRAG, rss_hf);
364
365 if ((rss_hf & RTE_ETH_RSS_L2_PAYLOAD) != 0)
366 selected_fields[ENA_ADMIN_RSS_NOT_IP].fields =
367 ena_eth_hf_to_admin_hf(ENA_ADMIN_RSS_NOT_IP, rss_hf);
368
369 if ((rss_hf & RTE_ETH_RSS_IPV6_TCP_EX) != 0)
370 selected_fields[ENA_ADMIN_RSS_TCP6_EX].fields =
371 ena_eth_hf_to_admin_hf(ENA_ADMIN_RSS_TCP6_EX, rss_hf);
372
373 if ((rss_hf & RTE_ETH_RSS_IPV6_EX) != 0)
374 selected_fields[ENA_ADMIN_RSS_IP6_EX].fields =
375 ena_eth_hf_to_admin_hf(ENA_ADMIN_RSS_IP6_EX, rss_hf);
376
377 /* Try to write them to the device */
378 for (i = 0; i < ENA_ADMIN_RSS_PROTO_NUM; i++) {
379 rc = ena_com_fill_hash_ctrl(ena_dev,
380 (enum ena_admin_flow_hash_proto)i,
381 selected_fields[i].fields);
382 if (unlikely(rc != 0)) {
383 PMD_DRV_LOG(DEBUG,
384 "Failed to set ENA HF %d with fields %" PRIu16 "\n",
385 i, selected_fields[i].fields);
386 return rc;
387 }
388 }

Callers 1

ena_rss_hash_setFunction · 0.85

Calls 2

ena_eth_hf_to_admin_hfFunction · 0.85
ena_com_fill_hash_ctrlFunction · 0.50

Tested by

no test coverage detected