Page MenuHomeFreeBSD

cxgbe tom: Support sending "raw" WR mbufs on plain TCP and TLS sockets
Needs ReviewPublic

Authored by jhb on Tue, Nov 26, 4:48 PM.

Details

Reviewers
np
Summary

This is intended to support control work requests that manipulate
connection state but do not transmit data. Raw WRs are transmitted
immediately if possible, otherwise they are queued to an mbufq in the
toe pcb until sufficient credits are available. Raw WRs take
precendence over transmitting socket data.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped
Build Status
Buildable 60800
Build 57684: arc lint + arc unit

Event Timeline

jhb requested review of this revision.Tue, Nov 26, 4:48 PM
sys/dev/cxgbe/tom/t4_cpl_io.c
642

In the first version of this I enqueued the mbuf into the ulp_reclaim_pduq as we do for iSCSI WRs, but then I realized that I didn't need to do that once the data is copied. iSCSI WRs are a bit different as they can represent DMA and might need to be freed until ACKed, but the "control" WRs are always immediate actions and the mbuf is never holding onto other resources.

ULP_MODE_TLS is also kind of special as it abuses ulp_reclaim_pduq to store received CPL_RX_TLS_DATA mbufs that are later attached to the header from CPL_RX_TLS_CMP to build a TLS PDU, so I also had to change that before simplifying the approach here.

Fix build w/o INVARIANTS