tcp-acceleration-service / FlexTOE

Flexible, high-performance TCP offload to SmartNICs using fine-grained parallelism
https://tcp-acceleration-service.github.io/FlexTOE/
BSD 3-Clause "New" or "Revised" License
56 stars 7 forks source link

Couldn't find some function definitions. #3

Closed Abinavraj5427 closed 1 year ago

Abinavraj5427 commented 1 year ago

Hello,

I am an undergrad trying to learn a little about FlexTOE after reading the paper. I was trying to read through the C++ in process.c to get an idea of FlexTOE's functionality, but I wasn't able to find function definitions for the following functions in the repository anywhere.

Any thoughts on where I can find these function definitions or did I miss it somewhere in the repository?

Or if there is documentation over this codebase somewhere, that could help too.

Functions: wait_for_all - process.c line 181 MEM_RING_GET_NUM - process.c line 185 MEM_RING_GET_ADDR - process.c line 186 mem_workq_add_thread - process.c line 200 reorder_signal_next - process.c line 204 signal_ctx - process.c line 207 __implicit_write - process.c line 208 pkt_ctm_ptr40 - process.c line 226 cam_lookup - process.c line 232 handle_miss - process.c line 237

rajathshashidhara commented 1 year ago

Hi,

Thanks for your interest in FlexTOE. Happy to answer your questions!

Some of these functions definitions are present in the firmware/flowenv directory.

  1. MEM_RING_GET_NUM, MEM_RING_GET_MEMADDR, __mem_workq_add_thread: firmware/flowenv/lib/nfp/mem_ring.h & firmware/flowenv/lib/nfp/_c/mem_ring.c
  2. signal_ctx, wait_for_all: firmware/flowenv/lib/nfp/me.h & firmware/flowenv/lib/nfp/_c/me.c
  3. reorder_signal_next: firmware/flowenv/lib/std/reorder.h & firmware/flowenv/lib/std/reorder.c
  4. pkt_ctm_ptr40: firmware/flowenv/lib/pkt/pkt.h & firmware/flowenv/lib/pkt/libpkt.c

handle_miss() is defined in process.c:95. Other functions you mention are part of the NFP SDK (nfp.h & nfp_intrinsic.h). The SDK is private and is only made available when you buy a Netronome SmartNIC. Most of the stuff you mention is specific to the hardware capabilities of the Netronome Flow Processors (NFP). Some documentation is available as a part of the SDK (but not nearly enough).

Let me know if you have more questions!