Re: svn commit: r343688 - head/sys/dev/vmware/vmxnet3

2019-02-02 Thread Patrick Kelsey
On Sat, Feb 2, 2019 at 7:27 PM Enji Cooper  wrote:

> Hi Patrick,
>
> On Feb 2, 2019, at 13:14, Patrick Kelsey  wrote:
>
> Author: pkelsey
> Date: Sat Feb  2 21:14:53 2019
> New Revision: 343688
> URL: https://svnweb.freebsd.org/changeset/base/343688
>
> Log:
>  Fix interrupt index configuratoin when using MSI interrupts.
>
>  When in MSI mode, the device was only being configured with one
>  interrupt index, but it needs two - one for the actual interrupt and
>  one to park the tx queue at.
>
>  Also clarified comments relating to interrupt index assignment.
>
>  Reported by:Yuri Pankov 
>  MFC after:1 day
>
>
> Does this change partly fix
> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=203874 ?
>

No, this fixes the behavior of the iflib version of the vmx(4) driver when
that bug causes its interrupt configuration code to fall into the MSI path
(because MSI-X has been blacklisted).

-Patrick
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


Re: svn commit: r343688 - head/sys/dev/vmware/vmxnet3

2019-02-02 Thread Enji Cooper
Hi Patrick,

> On Feb 2, 2019, at 13:14, Patrick Kelsey  wrote:
> 
> Author: pkelsey
> Date: Sat Feb  2 21:14:53 2019
> New Revision: 343688
> URL: https://svnweb.freebsd.org/changeset/base/343688
> 
> Log:
>  Fix interrupt index configuratoin when using MSI interrupts.
> 
>  When in MSI mode, the device was only being configured with one
>  interrupt index, but it needs two - one for the actual interrupt and
>  one to park the tx queue at.
> 
>  Also clarified comments relating to interrupt index assignment.
> 
>  Reported by:Yuri Pankov 
>  MFC after:1 day

Does this change partly fix 
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=203874 ?
-Enji
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r343688 - head/sys/dev/vmware/vmxnet3

2019-02-02 Thread Patrick Kelsey
Author: pkelsey
Date: Sat Feb  2 21:14:53 2019
New Revision: 343688
URL: https://svnweb.freebsd.org/changeset/base/343688

Log:
  Fix interrupt index configuratoin when using MSI interrupts.
  
  When in MSI mode, the device was only being configured with one
  interrupt index, but it needs two - one for the actual interrupt and
  one to park the tx queue at.
  
  Also clarified comments relating to interrupt index assignment.
  
  Reported by:  Yuri Pankov 
  MFC after:1 day

Modified:
  head/sys/dev/vmware/vmxnet3/if_vmx.c

Modified: head/sys/dev/vmware/vmxnet3/if_vmx.c
==
--- head/sys/dev/vmware/vmxnet3/if_vmx.cSat Feb  2 17:42:17 2019
(r343687)
+++ head/sys/dev/vmware/vmxnet3/if_vmx.cSat Feb  2 21:14:53 2019
(r343688)
@@ -676,14 +676,16 @@ vmxnet3_set_interrupt_idx(struct vmxnet3_softc *sc)
scctx = sc->vmx_scctx;
 
/*
-* There is either one interrupt, or there is one interrupt per
-* receive queue.  If there is one interrupt, then all interrupt
-* indexes are zero.  If there is one interrupt per receive queue,
-* the transmit queue interrupt indexes are assigned the receive
-* queue interrupt indexesin round-robin fashion.
-*
-* The event interrupt is always the last interrupt index.
+* There is always one interrupt per receive queue, assigned
+* starting with the first interrupt.  When there is only one
+* interrupt available, the event interrupt shares the receive queue
+* interrupt, otherwise it uses the interrupt following the last
+* receive queue interrupt.  Transmit queues are not assigned
+* interrupts, so they are given indexes beyond the indexes that
+* correspond to the real interrupts.
 */
+
+   /* The event interrupt is always the last vector. */
sc->vmx_event_intr_idx = scctx->isc_vectors - 1;
 
intr_idx = 0;
@@ -1073,14 +1075,14 @@ vmxnet3_init_shared_data(struct vmxnet3_softc *sc)
ds->automask = sc->vmx_intr_mask_mode == VMXNET3_IMM_AUTO;
/*
 * Total number of interrupt indexes we are using in the shared
-* config data, even though we don't actually allocate MSI-X
+* config data, even though we don't actually allocate interrupt
 * resources for the tx queues.  Some versions of the device will
 * fail to initialize successfully if interrupt indexes are used in
 * the shared config that exceed the number of interrupts configured
 * here.
 */
ds->nintr = (scctx->isc_vectors == 1) ?
-   1 : (scctx->isc_nrxqsets + scctx->isc_ntxqsets + 1);
+   2 : (scctx->isc_nrxqsets + scctx->isc_ntxqsets + 1);
ds->evintr = sc->vmx_event_intr_idx;
ds->ictrl = VMXNET3_ICTRL_DISABLE_ALL;
 
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"