HomeFreeBSD

cxgbe/cxgbei: Various changes in the rx path.

Description

cxgbe/cxgbei: Various changes in the rx path.

  • In the iSCSI CPL handlers, do not rely on the ulpcb/icl_conn when in the middle of assembling a PDU. This is so we don't have to grab various locks and evaluate the kernel state of the connection multiple times. Instead, the state is evaluated once after the entire PDU is received. This requires another ULP specific item in toepcb (ulpcb2).
  • If there is data in the so_rcv sockbuf of a connection in iSCSI ULP mode it must be from before the connection got promoted to ULP mode. Convert the contents of the sockbuf to PDUs and deliver them to ICL. Do this before delivering the PDUs received on the "normal" ULP path.
  • The receive path within ICL is allowed to sleep so it's not appropriate to deliver PDUs to ICL from the driver's ithread, or from any other thread with any mutex held. Use worker threads (created back in r285650 but unused till now) to dispatch received PDUs to ICL. Assign a worker thread to each connection. For now everything goes to the first thread.
  • Prevent various bad races that are possible when more than one of a) rx ithread, b) worker thread, and c) icl_conn_close are active at the same time.

Details

Provenance
npAuthored on
Parents
rS291231: Compute the median of the data set as the midpoint between the two middle
Branches
Unknown
Tags
Unknown