Skip to content

Add task offload support#29

Merged
mtfriesen merged 4 commits intomainfrom
mtfriesen/offload
Jan 27, 2024
Merged

Add task offload support#29
mtfriesen merged 4 commits intomainfrom
mtfriesen/offload

Conversation

@mtfriesen
Copy link
Contributor

@mtfriesen mtfriesen commented Jan 26, 2024

Add support for:

  • Checksum offloads (IP/TCP/UDP)
  • LSO
  • USO
  • RSC
  • URO (registry state only; a follow-up PR will copy pre-release NDIS headers with new URO definitions)

The miniport can indicate and receive the offloads on the data path via OOBs independent of the configured state, which allows probing of race conditions and, in the case of RSC and URO, mild NIC misbehavior.

The control path allows rich configurability to extensively probe the control path: both the current and hardware capabilities are configurable via the registry prior to the miniport loading, and at runtime, the registry values can be dynamically reloaded, and the offload parameters OID can be sent directly to the driver to override the registry values. The NIC does not enforce any relationship between hardware capabilities and active configuration, which again allows contradictory behavior, but these misbehaviors should be handled appropriately by the components under test.

Only the UDPv4 checksum is covered in functional tests within this repo; the rest are presumed to be tested by other projects implicitly.

@mtfriesen mtfriesen merged commit 2de5eb8 into main Jan 27, 2024
@mtfriesen mtfriesen deleted the mtfriesen/offload branch January 27, 2024 14:04
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.

2 participants