Page MenuHomeFreeBSD

Add a facility for transmitting "raw" work requests on regular NIC queues.
ClosedPublic

Authored by jhb on Nov 1 2018, 10:49 PM.
Tags
None
Referenced Files
Unknown Object (File)
Sun, Feb 23, 11:38 PM
Unknown Object (File)
Fri, Feb 21, 4:52 AM
Unknown Object (File)
Thu, Feb 6, 6:20 AM
Unknown Object (File)
Jan 18 2025, 2:46 PM
Unknown Object (File)
Jan 3 2025, 10:22 AM
Unknown Object (File)
Dec 30 2024, 12:04 AM
Unknown Object (File)
Dec 13 2024, 3:53 AM
Unknown Object (File)
Nov 29 2024, 8:28 AM
Subscribers

Details

Summary
  • Use PH_loc.eight[1] as a general 'cflags' (Chelsio flags) field to describe properties of a queued packet. The MC_RAW_WR flag indicates an mbuf holding a raw work request. mbuf_cflags() returns the current flags.
  • Raw work request mbufs are allocated via alloc_wr_mbuf() which will allocate a single contiguous range to hold the mbuf data. The consumer can use mtod() to obtain the start of the work request and write the required work request in the buffer. The mbuf can then be enqueued directly to the txq via mp_ring_enqueue().
  • Since raw work requests might potentially send arbitrary work requests, only set the EQUIQ and EQUEQ bits on work requests that support them such as the normal tunneled Ethernet packet work requests.
Test Plan
  • this is a change I'm pulling out of the inline TLS branch to reduce the diff

Diff Detail

Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 20587
Build 20008: arc lint + arc unit