Invalid argument is the same error I get from the ioctl that I get (in the diable though).
Does the function get called twice in a row?

On Sat, Apr 22, 2023 at 2:16 AM Verghis Koshi <vkoshi@gmail.com> wrote:
    Looks like I have a somewhat similar issue while running basicfwd, not sure why.  The code
is just trying to enable MSI-X interrupts, but perror() says 'Invalid argument'.
    Any thoughts?

fio_enable_msix(), ../lib/eal/linux/eal_interrupts.c:306, ret -1
<Snip> Invalid argument
EAL: Error enabling MSI-X interrupts for fd 19
Port 0 MAC: 08 00 27 0d 34 ff

Verghis

On Fri, Apr 21, 2023 at 2:12 PM Igor de Paula <igordptx@gmail.com> wrote:
I am enabling lsc interrupts.
I don't  explicitly start/stop the queues.
Should I call link up/down before the start/stop? From the doc I saw it shuts down the queues.
From what I saw it calls the msix disable function in the start and the stop functions. In the second time it seem to cause the error.


On Fri, Apr 21, 2023, 22:06 Stephen Hemminger <stephen@networkplumber.org> wrote:
On Fri, 21 Apr 2023 13:39:18 +0100
Igor de Paula <igordptx@gmail.com> wrote:
> From what I can tell, dpdk calles the function  vfio_disable_msix  in the
> stop and start function. The reason it does not happen in start up is that
> I don't call stop before.
> Calling stop and then start calls the function twice. Which maybe shouldn't
> happen... Is it a bug?
>
> On Thu, Apr 20, 2023 at 12:33 PM Igor de Paula <igordptx@gmail.com> wrote:
>
> > Hi,
> > I am having trouble with restarting a HW port allocated to DPDK.
> > I am running the DPDK version: 21.08.0 and Ubuntu 20.04.3 LTS.
> > The driver is : net_e100igb
> > After I start the port with no issues I try to call rte_eth_dev_stop to
> > stop it.
> > When I am ready I call rte_eth_dev_start to start it again an I get the
> > following message:
> > EAL: Error disabling MSI-X interrupts for fd 46.
> > I am not sure what this error is coming from and what it causes.
> > I found little information online. If someone could explain, I would
> > really appreciate it.
> > This is a copy print on setup with no issues:
> > 2023-04-20 11:09:51.703542:     Driver: net_e1000_igb
> > 2023-04-20 11:09:51.703546:     Bus Id: 0000:01:00.0
> > 2023-04-20 11:09:51.703551:     rx offload cap: 280e (92e0f)
> > 2023-04-20 11:09:51.703555:     tx offload cap: 8002 (803f)
> > 2023-04-20 11:09:51.703559:     NUMA Socket: 0
> > 2023-04-20 11:09:51.703563:     MAC Address: b4:96:91:63:62:40
> > 2023-04-20 11:09:51.703568:     Max Rx Queue: 8
> > 2023-04-20 11:09:51.703572:     Max Tx Queue: 8
> > 2023-04-20 11:09:51.703577:     Max Rx Descriptors: 4096
> > 2023-04-20 11:09:51.703581:     Max Tx Descriptors: 4096
> > 2023-04-20 11:09:51.703585:     Max Rx Packet Length: 16383
> > 2023-04-20 11:09:51.703589:     Available Link Speeds: 10Mb/s 100Mb/s 1Gb/s
> > 2023-04-20 11:09:51.703608:     Fixed Link Speed: Auto
> > 2023-04-20 11:09:51.703616:     Fixed Duplex: Auto
> > 2023-04-20 11:09:51.703623:     MTU Set to: 16383
> > 2023-04-20 11:09:51.703632:     Actual Rx Descriptors: 4096
> > 2023-04-20 11:09:51.703636:     Actual Tx Descriptors: 4096
> > 2023-04-20 11:09:51.703695:     Set up 1 send queues
> > 2023-04-20 11:09:51.703700:     Actual MTU: 16383
> > 2023-04-20 11:09:51.703704:     Actual Linkspeed: 0
> > 2023-04-20 11:09:51.703708:     Actual duplex: 0
> > 2023-04-20 11:09:51.703713:     Successfully set port interrupt event
> > 2023-04-20 11:09:51.818085:     Flow control turned off for Port 0
> > 2023-04-20 11:09:51.844179:     Port 0 up and running
> > 2023-04-20 11:09:51.844303: Event type: LSC interrupt
> > 2023-04-20 11:09:51.844382:     Port 0 Link Down
> >
> > And after I stop and start:
> > 2023-04-20 11:11:00.492428:     Driver: net_e1000_igb
> > 2023-04-20 11:11:00.492476:     Bus Id: 0000:01:00.0
> > 2023-04-20 11:11:00.492526:     rx offload cap: 280e (92e0f)
> > 2023-04-20 11:11:00.492576:     tx offload cap: 8002 (803f)
> > 2023-04-20 11:11:00.492624:     NUMA Socket: 0
> > 2023-04-20 11:11:00.492672:     MAC Address: b4:96:91:63:62:40
> > 2023-04-20 11:11:00.492721:     Max Rx Queue: 8
> > 2023-04-20 11:11:00.492770:     Max Tx Queue: 8
> > 2023-04-20 11:11:00.492813:     Max Rx Descriptors: 4096
> > 2023-04-20 11:11:00.492851:     Max Tx Descriptors: 4096
> > 2023-04-20 11:11:00.492889:     Max Rx Packet Length: 16383
> > 2023-04-20 11:11:00.492958:     Available Link Speeds: 10Mb/s 100Mb/s 1Gb/s
> > 2023-04-20 11:11:00.493207:     Fixed Link Speed: Auto
> > 2023-04-20 11:11:00.493301:     Fixed Duplex: Full
> > 2023-04-20 11:11:00.493822:     MTU Set to: 16383
> > 2023-04-20 11:11:00.493889:     Actual Rx Descriptors: 4096
> > 2023-04-20 11:11:00.493936:     Actual Tx Descriptors: 4096
> > 2023-04-20 11:11:00.494190:     Actual MTU: 16383
> > 2023-04-20 11:11:00.494229:     Actual Linkspeed: 0
> > 2023-04-20 11:11:00.494266:     Actual duplex: 1
> > 2023-04-20 11:11:00.494305:     Successfully set port interrupt event
> > *EAL: Error disabling MSI-X interrupts for fd 46*
> > 2023-04-20 11:11:00.603181:     Flow control turned off for Port 0
> > 2023-04-20 11:11:00.629151:     Port 0 up and running
> > 2023-04-20 11:11:00.629222: Event type: LSC interrupt
> > 2023-04-20 11:11:00.629273:     Port 0 Link Down
> >
> >
> > Thanks,
> > Igor

Are you using Link State (LSC) or receive interrupts?
Did you start/stop the tx and rx queues. Could be a device bug where
it assumes all queues were stopped.

Also check kernel dmesg output; VFIO might print an error message there.