Go to file
Martin Braun 9f9c75ecd6 rfnoc: Clarify usage of MTU vs. max payload size, remove DEFAULT_SPP
These two values where being mixed up in the code. To summarize:
- The MTU is the max CHDR packet size, including header & timestamp.
- The max payload is the total number of bytes regular payload plus
  metadata that can be fit into into a CHDR packet. It is strictly
  smaller than the MTU. For example, for 64-bit CHDR widths, if
  a timestamp is desired, the max payload is 16 bytes smaller than
  the MTU.

The other issue was that we were using a magic constant (DEFAULT_SPP)
which was causing conflicts with MTUs and max payloads.
This constant was harmful in multiple ways:
- The explanatory comment was incorrect (it stated it would cap packets
  to 1500 bytes, which it didn't)
- It imposed random, hardcoded values that interfered with an 'spp
  discovery', i.e., the ability to derive a good spp value from MTUs
- The current value capped packet sizes to 8000 bytes CHDR packets, even
  when we wanted to use bigger ones

This patch changes the following:
- noc_block_base now has improved docs for MTU, and additional APIs
  (get_max_payload_size(), get_chdr_hdr_len()) which return the
  current payload size given MTU and CHDR width, and the CHDR header
  length.
- The internally used graph nodes for TX and RX streamers also get
  equipped with the same new two API calls.
- The radio, siggen, and replay block all where doing different
  calculations for their spp/ipp values. Now, they all use the max
  payload value to calculate spp/ipp. Unit tests where adapted
  accordingly. Usage of DEFAULT_SPP was removed.
- The replay block used a hardcoded 16 bytes for header lengths, which
  was replaced by get_chdr_hdr_len()
- The TX and RX streamers where discarding the MTU value and using the
  max payload size as the MTU, which then propagated throughout the
  graph. Now, both values are stored and can be used where appropriate.
2021-12-02 05:49:53 -08:00
.ci tests: Add default length for automated streaming tests 2021-12-01 14:04:14 -08:00
.github fixup! ci: Add CLA assistant 2021-07-05 17:10:33 +02:00
firmware firmware: b2xx: Update to newer Cypress FX3 SDK 2020-08-25 07:28:22 -05:00
fpga fpga: x400: cpld: Add manufacturing support 2021-12-01 10:51:07 -06:00
host rfnoc: Clarify usage of MTU vs. max payload size, remove DEFAULT_SPP 2021-12-02 05:49:53 -08:00
images images: Update image packager script for Python 3 2021-10-20 12:44:36 -07:00
mpm mpmd: Increase UHD-side MTU cap for 10 GbE and 1 GbE 2021-11-08 07:37:31 -08:00
tools tools: Fix rfnoc dissector build 2021-11-11 07:13:56 -08:00
.clang-format clang-format: Break after templates 2019-03-21 09:50:09 -07:00
.clang-tidy Add clang-tidy file 2021-03-04 08:07:26 -06:00
.gitattributes uhd: Add support for the USRP X410 2021-06-10 12:01:53 -05:00
.gitignore uhd: gitignore .DS_Store for our macOS friends 2021-03-12 13:55:25 -06:00
.gitmodules Merge FPGA repository back into UHD repository 2020-01-28 09:35:36 -08:00
CHANGELOG uhd: Update version, manifest, and changelogs 2021-07-21 14:29:44 -05:00
CODING.md Merge FPGA repository back into UHD repository 2020-01-28 09:35:36 -08:00
CONTRIBUTING.md Merge FPGA repository back into UHD repository 2020-01-28 09:35:36 -08:00
LICENSE.md Merge FPGA repository back into UHD repository 2020-01-28 09:35:36 -08:00
README.md README.md: Fix REDHAWK link 2020-08-13 15:02:20 -05:00

USRP Hardware Driver (UHD™) Software

Welcome to the UHD™ software distribution! UHD is the free & open-source software driver and API for the Universal Software Radio Peripheral (USRP™) SDR platform, created and sold by Ettus Research.

UHD supports all Ettus Research USRP™ hardware, including all motherboards and daughterboards, and the combinations thereof.

Documentation

For technical documentation related to USRP™ hardware or UHD system design, check out the UHD and USRP Manual. That is where you can find Installation Instructions, help on how to build UHD from source on different platforms, development guidelines and reference documentation as well as device usage guidance.

Additionally, be sure to check out the Ettus Research FAQ, and the Knowledge Base for useful application notes and tutorials.

OS Support

UHD is primarily developed on Linux, but we also test and support the following operating systems.

  • Linux (Fedora and Ubuntu)
  • Mac OS X (Intel)
  • Windows 10

Other operating systems will most likely work, too, but are not officially supported.

Applications

UHD can be used to build stand-alone applications with USRP™ hardware, or with third-party applications. Some common toolkits / frameworks are:

Directories

host/

The source code for the user-space driver.

mpm/

The source code for the module peripheral manager (MPM). This is code that is run on embedded devices.

firmware/

The source code for all microprocessors in USRP hardware.

fpga/

The source code for the UHD FPGA images.

images/

This contains the package builder for FPGA and firmware images. We provide other tools to download image packages, the scripts in here are mainly relevant for UHD maintainers and -developers.

tools/

Additional tools, mainly for debugging purposes. See the readme-file in that directory for more details on the individual tools.