Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add "What is included" section to README #24

Merged
merged 7 commits into from
Jan 17, 2025

Conversation

jafingerhut
Copy link
Contributor

@pkotikal @vgurevich I would appreciate your comments on this PR, in case I am leaving anything out.

Copy link
Contributor

@vgurevich vgurevich left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've left a couple of comments.

README.md Outdated
The following things are included in this repository:

+ Driver software
+ bfrt runtime API implementation
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The official name is BRI -- Barefoot Runtime Interface, which consists of two components (APIs):

  • The locally callable BfRt API (with bindings in C and C++)
  • The gRPC-based protocol, called BF Runtime, together with the server implementation in C++ and both C++ and Python client bindings (others can be generated using the provided proto files as well)
    ** The additional bfrt_grpc.client Python module provides easier-to-use, simplified interface to BF Runtime (used for most PTF tests, for example)

README.md Outdated
+ bfrt_python code is included, but the build process needs some fixes
before this is available for use.

This supports developing and compiling P4 programs for Tofino 1 and 2
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If I parse it in a "lawerly" way, you might be right, but few people will realize that while the repo does, indeed, allow one to develop the P4 code that would run on both ASIC and the model, it will not allow one to develop the control plane SW that runs on anything but the model :)

I would re-word to make the lack of support for running the code on the ASICs more explicit.

README.md Outdated
after they have been successfully compiled.
+ Note: P4.org personnel are in communication with Intel to see if this
can be released as open source soon.
+ BSPs (Board Support Packages) for booting hardware boards containing
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The purpose of BSP is to allow the SDE to access and manage board-specific components, necessary for port management. Without the BSP you can't really have links on physical ports.

It is not used to boot hardware boards (and it is not the purpose of the SDE to begin with)

Signed-off-by: Andy Fingerhut <[email protected]>
@jafingerhut
Copy link
Contributor Author

@vgurevich Thanks for the detailed comments. I have attempted to address your first 3 comments with the changes in commit 5 of this PR. If you could give it one more look to see if I've messed up somehow, that would be appreciated.

Signed-off-by: Andy Fingerhut <[email protected]>
Copy link
Contributor

@vgurevich vgurevich left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, @jafingerhut -- you know I like to comment :)

README.md Outdated
Some things not included, that one must get from Intel:

+ P4Insight GUI for visualizing the hardware resources used by P4 programs
after they have been successfully compiled.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove the word "successfully" -- P4i is often quite useful precisely when the programs are not successfully compiled.

README.md Outdated
can be released as open source soon.
+ BSPs (Board Support Packages) that enable the SDE to access and
configure hardware on a physical board, e.g. configuring physical
Ethernet ports.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

... and manage related components, such as repeaters, retimers, SFPs, QSFPs, etc.

README.md Outdated
+ BSPs (Board Support Packages) that enable the SDE to access and
configure hardware on a physical board, e.g. configuring physical
Ethernet ports.
+ Drivers for Serdes on the ASICs. These are not necessary for running
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ASIC-specific SerDes drivers. These are not necessary to run the simulation model, but essential for running the code on the real ASICs

Signed-off-by: Andy Fingerhut <[email protected]>
@jafingerhut
Copy link
Contributor Author

@vgurevich I believe I've addressed all of your second round of comments. Keep them coming, if you have more, otherwise please approve the PR.

@vgurevich
Copy link
Contributor

Already done!

@jafingerhut
Copy link
Contributor Author

@pkotikal Please take quick look at this and see if you notice anything misstated here, or other things included or missing that are not mentioned. Thanks.

@jafingerhut jafingerhut merged commit bfb6373 into p4lang:main Jan 17, 2025
3 checks passed
@pkotikal
Copy link
Collaborator

@pkotikal Please take quick look at this and see if you notice anything misstated here, or other things included or missing that are not mentioned. Thanks.

Thanks Andy. Only one comment - the bf-drivers build instructions for HW are here - https://github.com/p4lang/open-p4studio/blob/main/hw/RDC_README. The vendor specific files and patches need to be downloaded from Intel RDC.

@jafingerhut
Copy link
Contributor Author

@pkotikal Thanks for the note.

I am confused, though. Some Tofino driver code must be running in order to successfully run the PTF test that has been passing so far, even though the hw directory contains no code when doing the builds that successfully pass those tests.

Are you saying that in order to build a version of the Tofino drivers that runs with real hardware, you need to follow the instructions?

I will assume yes for now, create a proposed PR that tries to explain that, and ask you and Vlad to review.

@pkotikal
Copy link
Collaborator

@pkotikal Thanks for the note.

I am confused, though. Some Tofino driver code must be running in order to successfully run the PTF test that has been passing so far, even though the hw directory contains no code when doing the builds that successfully pass those tests.

Are you saying that in order to build a version of the Tofino drivers that runs with real hardware, you need to follow the instructions?

I will assume yes for now, create a proposed PR that tries to explain that, and ask you and Vlad to review.

That's right @jafingerhut, we are building the driver that works with tofino-model for the PTF tests. @ansamalintel, could you please elaborate on the bf-drivers build for HW. Thanks!

@ansamalintel
Copy link

ansamalintel commented Jan 17, 2025

@jafingerhut Some of the driver source files call third-party proprietary APIs to program their corresponding hardware components. For instance, to program Credo Serdes, we use the API provided by Credo SDK. We requested permission to include these APIs in our Tofino open-source repository, but we did not receive a positive response. Therefore, we decided to remove source code that exposes third-party vendor-specific APIs from our Tofino open-source code.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants