Set ixl(4) IXL_TX_PKT_DESCS to 8.
authorbluhm <bluhm@openbsd.org>
Sat, 30 Dec 2023 17:52:27 +0000 (17:52 +0000)
committerbluhm <bluhm@openbsd.org>
Sat, 30 Dec 2023 17:52:27 +0000 (17:52 +0000)
Mark Patruck has reported problems with ixl revision 1.90 TSO diff.
He uses ixl device passthrough from Linux via KVM to OpenBSD guest.
After a few hours of operation, interface locks up with oactive.
The problem also occures with TSO disabled, after the TSO diff had
been commited.  deraadt@ has seen similar problems with ixl interface
on sparc64.
Changing IXL_TX_PKT_DESCS back to the original value 8 fixes the
lockup and even TSO on the hardware still works.  FreeBSD and NetBSD
also use this value.  The 32 was copied from ix(4) TSO diff and is
not necessary for ixl(4).

debugged with jan@; lot of bisecting and testing by Mark Patruck
OK mglocker@ patrick@

sys/dev/pci/if_ixl.c

index fb37823..88e0bb9 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: if_ixl.c,v 1.93 2023/11/10 15:51:20 bluhm Exp $ */
+/*     $OpenBSD: if_ixl.c,v 1.94 2023/12/30 17:52:27 bluhm Exp $ */
 
 /*
  * Copyright (c) 2013-2015, Intel Corporation
@@ -900,7 +900,7 @@ struct ixl_rx_wb_desc_32 {
        uint64_t                qword3;
 } __packed __aligned(16);
 
-#define IXL_TX_PKT_DESCS               32
+#define IXL_TX_PKT_DESCS               8
 #define IXL_TX_QUEUE_ALIGN             128
 #define IXL_RX_QUEUE_ALIGN             128