MCPcopy Index your code
hub / github.com/F-Stack/f-stack / ff_rss_check

Function ff_rss_check

lib/ff_dpdk_if.c:2731–2767  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2729}
2730
2731int
2732ff_rss_check(void *softc, uint32_t saddr, uint32_t daddr,
2733 uint16_t sport, uint16_t dport)
2734{
2735 struct lcore_conf *qconf = &lcore_conf;
2736 struct ff_dpdk_if_context *ctx = ff_veth_softc_to_hostc(softc);
2737 uint16_t nb_queues = qconf->nb_queue_list[ctx->port_id];
2738
2739 if (nb_queues <= 1) {
2740 return 1;
2741 }
2742
2743 uint16_t reta_size = rss_reta_size[ctx->port_id];
2744 uint16_t queueid = qconf->tx_queue_id[ctx->port_id];
2745
2746 uint8_t data[sizeof(saddr) + sizeof(daddr) + sizeof(sport) +
2747 sizeof(dport)];
2748
2749 unsigned datalen = 0;
2750
2751 bcopy(&saddr, &data[datalen], sizeof(saddr));
2752 datalen += sizeof(saddr);
2753
2754 bcopy(&daddr, &data[datalen], sizeof(daddr));
2755 datalen += sizeof(daddr);
2756
2757 bcopy(&sport, &data[datalen], sizeof(sport));
2758 datalen += sizeof(sport);
2759
2760 bcopy(&dport, &data[datalen], sizeof(dport));
2761 datalen += sizeof(dport);
2762
2763 uint32_t hash = 0;
2764 hash = toeplitz_hash(rsskey_len, rsskey, datalen, data);
2765
2766 return ((hash & (reta_size - 1)) % nb_queues) == queueid;
2767}
2768
2769void
2770ff_regist_packet_dispatcher(dispatch_func_t func)

Callers 2

in_pcb.cFile · 0.85
ff_rss_tbl_initFunction · 0.85

Calls 2

ff_veth_softc_to_hostcFunction · 0.85
toeplitz_hashFunction · 0.70

Tested by

no test coverage detected