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)
Tue, Apr 9, 7:47 PM
Unknown Object (File)
Feb 11 2024, 3:05 PM
Unknown Object (File)
Feb 11 2024, 1:47 AM
Unknown Object (File)
Feb 11 2024, 1:44 AM
Unknown Object (File)
Dec 20 2023, 8:27 AM
Unknown Object (File)
Nov 18 2023, 4:32 PM
Unknown Object (File)
Nov 18 2023, 4:22 PM
Unknown Object (File)
Nov 18 2023, 4:20 PM
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

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable