Page MenuHomeFreeBSD

D29940.diff
No OneTemporary

D29940.diff

diff --git a/sys/dev/cxgbe/cxgbei/icl_cxgbei.c b/sys/dev/cxgbe/cxgbei/icl_cxgbei.c
--- a/sys/dev/cxgbe/cxgbei/icl_cxgbei.c
+++ b/sys/dev/cxgbe/cxgbei/icl_cxgbei.c
@@ -1064,10 +1064,15 @@
/*
* Note that ICL calls conn_transfer_setup even if the first
* 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;
- if (xferlen - first_burst < ci->ddp_threshold) {
+ if (xferlen < first_burst ||
+ xferlen - first_burst < ci->ddp_threshold) {
no_ddp:
/*
* No DDP for this transfer. Allocate a TTT (based on

File Metadata

Mime Type
text/plain
Expires
Sun, May 24, 3:58 AM (10 h, 10 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33463815
Default Alt Text
D29940.diff (825 B)

Event Timeline