Page MenuHomeFreeBSD

D21831.id.diff
No OneTemporary

D21831.id.diff

Index: head/sys/dev/vmware/vmxnet3/if_vmx.c
===================================================================
--- head/sys/dev/vmware/vmxnet3/if_vmx.c
+++ head/sys/dev/vmware/vmxnet3/if_vmx.c
@@ -287,7 +287,7 @@
.isc_vendor_info = vmxnet3_vendor_info_array,
.isc_driver_version = "2",
.isc_driver = &vmxnet3_iflib_driver,
- .isc_flags = IFLIB_HAS_RXCQ | IFLIB_HAS_TXCQ,
+ .isc_flags = IFLIB_HAS_RXCQ | IFLIB_HAS_TXCQ | IFLIB_SINGLE_IRQ_RX_ONLY,
/*
* Number of receive queues per receive queue set, with associated
Index: head/sys/net/iflib.h
===================================================================
--- head/sys/net/iflib.h
+++ head/sys/net/iflib.h
@@ -366,6 +366,11 @@
* Driver will pass the media
*/
#define IFLIB_DRIVER_MEDIA 0x20000
+/*
+ * When using a single hardware interrupt for the interface, only process RX
+ * interrupts instead of doing combined RX/TX processing.
+ */
+#define IFLIB_SINGLE_IRQ_RX_ONLY 0x40000
/*
* field accessors
Index: head/sys/net/iflib.c
===================================================================
--- head/sys/net/iflib.c
+++ head/sys/net/iflib.c
@@ -6059,6 +6059,7 @@
gtask_fn_t *fn;
void *q;
int err, tqrid;
+ bool rx_only;
q = &ctx->ifc_rxqs[0];
info = &rxq[0].ifr_filter_info;
@@ -6066,17 +6067,19 @@
tqg = qgroup_if_io_tqg;
tqrid = *rid;
fn = _task_fn_rx;
+ rx_only = (ctx->ifc_sctx->isc_flags & IFLIB_SINGLE_IRQ_RX_ONLY) != 0;
ctx->ifc_flags |= IFC_LEGACY;
info->ifi_filter = filter;
info->ifi_filter_arg = filter_arg;
info->ifi_task = gtask;
- info->ifi_ctx = q;
+ info->ifi_ctx = rx_only ? ctx : q;
dev = ctx->ifc_dev;
/* We allocate a single interrupt resource */
- if ((err = _iflib_irq_alloc(ctx, irq, tqrid, iflib_fast_intr_rxtx,
- NULL, info, name)) != 0)
+ err = _iflib_irq_alloc(ctx, irq, tqrid, rx_only ? iflib_fast_intr_ctx :
+ iflib_fast_intr_rxtx, NULL, info, name);
+ if (err != 0)
return (err);
GROUPTASK_INIT(gtask, 0, fn, q);
res = irq->ii_res;

File Metadata

Mime Type
text/plain
Expires
Mon, Feb 16, 12:26 AM (19 h, 16 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28761457
Default Alt Text
D21831.id.diff (1 KB)

Event Timeline