Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/cxgbe/cxgbei/icl_cxgbei.c
Show First 20 Lines • Show All 1,058 Lines • ▼ Show 20 Lines | #ifdef INVARIANTS | ||||
MPASS(ic == ip->ip_conn); | MPASS(ic == ip->ip_conn); | ||||
MPASS(ip->ip_bhs_mbuf != NULL); | MPASS(ip->ip_bhs_mbuf != NULL); | ||||
#endif | #endif | ||||
first_burst = icl_pdu_data_segment_length(ip); | first_burst = icl_pdu_data_segment_length(ip); | ||||
/* | /* | ||||
* Note that ICL calls conn_transfer_setup even if the first | * Note that ICL calls conn_transfer_setup even if the first | ||||
* burst had everything and there's nothing left to transfer. | * burst had everything and there's nothing left to transfer. | ||||
* | |||||
* NB: The CTL frontend might have provided a buffer | |||||
* whose length (kern_data_len) is smaller than the | |||||
* FirstBurstLength of unsolicited data. Treat those | |||||
* as an empty transfer. | |||||
*/ | */ | ||||
MPASS(ctsio->kern_data_len >= first_burst); | |||||
xferlen = ctsio->kern_data_len; | xferlen = ctsio->kern_data_len; | ||||
if (xferlen - first_burst < ci->ddp_threshold) { | if (xferlen < first_burst || | ||||
xferlen - first_burst < ci->ddp_threshold) { | |||||
no_ddp: | no_ddp: | ||||
/* | /* | ||||
* No DDP for this transfer. Allocate a TTT (based on | * No DDP for this transfer. Allocate a TTT (based on | ||||
* the one passed in) that cannot be a valid hardware | * the one passed in) that cannot be a valid hardware | ||||
* DDP tag in the iSCSI region. | * DDP tag in the iSCSI region. | ||||
*/ | */ | ||||
ttt = *tttp & M_PPOD_TAG; | ttt = *tttp & M_PPOD_TAG; | ||||
ttt = V_PPOD_TAG(ttt) | pr->pr_invalid_bit; | ttt = V_PPOD_TAG(ttt) | pr->pr_invalid_bit; | ||||
▲ Show 20 Lines • Show All 174 Lines • Show Last 20 Lines |