View | Details | Raw Unified | Return to bug 239118 | Differences between
and this patch

Collapse All | Expand All

(-)sys/net/iflib.c (-3 / +6 lines)
Lines 6060-6065 iflib_legacy_setup(if_ctx_t ctx, driver_filter_t f Link Here
6060
	gtask_fn_t *fn;
6060
	gtask_fn_t *fn;
6061
	void *q;
6061
	void *q;
6062
	int err, tqrid;
6062
	int err, tqrid;
6063
	bool rx_only;
6063
6064
6064
	q = &ctx->ifc_rxqs[0];
6065
	q = &ctx->ifc_rxqs[0];
6065
	info = &rxq[0].ifr_filter_info;
6066
	info = &rxq[0].ifr_filter_info;
Lines 6067-6083 iflib_legacy_setup(if_ctx_t ctx, driver_filter_t f Link Here
6067
	tqg = qgroup_if_io_tqg;
6068
	tqg = qgroup_if_io_tqg;
6068
	tqrid = *rid;
6069
	tqrid = *rid;
6069
	fn = _task_fn_rx;
6070
	fn = _task_fn_rx;
6071
	rx_only = !!(ctx->ifc_sctx->isc_flags & IFLIB_SINGLE_IRQ_RX_ONLY);
6070
6072
6071
	ctx->ifc_flags |= IFC_LEGACY;
6073
	ctx->ifc_flags |= IFC_LEGACY;
6072
	info->ifi_filter = filter;
6074
	info->ifi_filter = filter;
6073
	info->ifi_filter_arg = filter_arg;
6075
	info->ifi_filter_arg = filter_arg;
6074
	info->ifi_task = gtask;
6076
	info->ifi_task = gtask;
6075
	info->ifi_ctx = q;
6077
	info->ifi_ctx = rx_only ? ctx : q;
6076
6078
6077
	dev = ctx->ifc_dev;
6079
	dev = ctx->ifc_dev;
6078
	/* We allocate a single interrupt resource */
6080
	/* We allocate a single interrupt resource */
6079
	if ((err = _iflib_irq_alloc(ctx, irq, tqrid, iflib_fast_intr_rxtx,
6081
	err = _iflib_irq_alloc(ctx, irq, tqrid, rx_only ? iflib_fast_intr_ctx :
6080
	    NULL, info, name)) != 0)
6082
	    iflib_fast_intr_rxtx, NULL, info, name);
6083
	if (err != 0)
6081
		return (err);
6084
		return (err);
6082
	GROUPTASK_INIT(gtask, 0, fn, q);
6085
	GROUPTASK_INIT(gtask, 0, fn, q);
6083
	res = irq->ii_res;
6086
	res = irq->ii_res;
(-)sys/net/iflib.h (+5 lines)
Lines 366-371 typedef enum { Link Here
366
 * Driver will pass the media
366
 * Driver will pass the media
367
 */
367
 */
368
#define IFLIB_DRIVER_MEDIA	0x20000
368
#define IFLIB_DRIVER_MEDIA	0x20000
369
/*
370
 * When using a single hardware interrupt for the interface, only process RX
371
 * interrupts instead of doing combined RX/TX processing.
372
 */
373
#define	IFLIB_SINGLE_IRQ_RX_ONLY	0x40000
369
374
370
/*
375
/*
371
 * field accessors
376
 * field accessors
(-)sys/dev/vmware/vmxnet3/if_vmx.c (-1 / +1 lines)
Lines 287-293 static struct if_shared_ctx vmxnet3_sctx_init = { Link Here
287
	.isc_vendor_info = vmxnet3_vendor_info_array,
287
	.isc_vendor_info = vmxnet3_vendor_info_array,
288
	.isc_driver_version = "2",
288
	.isc_driver_version = "2",
289
	.isc_driver = &vmxnet3_iflib_driver,
289
	.isc_driver = &vmxnet3_iflib_driver,
290
	.isc_flags = IFLIB_HAS_RXCQ | IFLIB_HAS_TXCQ,
290
	.isc_flags = IFLIB_HAS_RXCQ | IFLIB_HAS_TXCQ | IFLIB_SINGLE_IRQ_RX_ONLY,
291
291
292
	/*
292
	/*
293
	 * Number of receive queues per receive queue set, with associated
293
	 * Number of receive queues per receive queue set, with associated

Return to bug 239118