net/vmxnet3: Don't enable rx queue interrupts on FreeBSD

Message ID 20240321095029.1216-1-thj@freebsd.org (mailing list archive)
State Superseded, archived
Delegated to: Ferruh Yigit
Headers
Series net/vmxnet3: Don't enable rx queue interrupts on FreeBSD |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/loongarch-compilation success Compilation OK
ci/loongarch-unit-testing success Unit Testing PASS
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/github-robot: build success github build: passed
ci/intel-Functional success Functional PASS

Commit Message

Tom Jones March 21, 2024, 9:50 a.m. UTC
Commit 29a1c9107bb disabled interrupts on FreeBSD for the vmxnet3 driver
as they are not supported. Rx queue interrupts were missed by this
change, don't attempt to enable them on FreeBSD.

Without this change applications enabling interrupts encounter an
immediate abort on FreeBSD.

Signed-off-by: Tom Jones <thj@freebsd.org>
---
 drivers/net/vmxnet3/vmxnet3_ethdev.c | 2 ++
 1 file changed, 2 insertions(+)
  

Comments

David Marchand March 21, 2024, 10:15 a.m. UTC | #1
Hello Tom,

On Thu, Mar 21, 2024 at 11:00 AM Tom Jones <thj@freebsd.org> wrote:
>
> Commit 29a1c9107bb disabled interrupts on FreeBSD for the vmxnet3 driver
> as they are not supported. Rx queue interrupts were missed by this
> change, don't attempt to enable them on FreeBSD.
>
> Without this change applications enabling interrupts encounter an
> immediate abort on FreeBSD.

Thanks for the patch, you will probably want this fix backported in
LTS versions.
If so, please add a Fixes: tag and Cc: stable@dpdk.org.
I guess here, it is:
Fixes: 40d5676ff1ea ("net/vmxnet3: fix initialization on FreeBSD")

Cc: Bruce

Reading again the commitlog, I wonder if we should error out in
vmxnet3_configure_msix() if rx (and/or lsc) interrupts are requested
for FreeBSD.
Did you consider this approach?
  
Tom Jones March 21, 2024, 10:33 a.m. UTC | #2
On Thu, Mar 21, 2024, at 10:15, David Marchand wrote:
> Hello Tom,
>
> On Thu, Mar 21, 2024 at 11:00 AM Tom Jones <thj@freebsd.org> wrote:
>>
>> Commit 29a1c9107bb disabled interrupts on FreeBSD for the vmxnet3 driver
>> as they are not supported. Rx queue interrupts were missed by this
>> change, don't attempt to enable them on FreeBSD.
>>
>> Without this change applications enabling interrupts encounter an
>> immediate abort on FreeBSD.
>
> Thanks for the patch, you will probably want this fix backported in
> LTS versions.
> If so, please add a Fixes: tag and Cc: stable@dpdk.org.
> I guess here, it is:
> Fixes: 40d5676ff1ea ("net/vmxnet3: fix initialization on FreeBSD")

Thanks! updated

>
> Reading again the commitlog, I wonder if we should error out in
> vmxnet3_configure_msix() if rx (and/or lsc) interrupts are requested
> for FreeBSD.
> Did you consider this approach?
>

I haven't dug much futher into this. I also changed the application side (vpp) to not request interrupts. I think there are probably some other FreeBSD specific cases to explore in vmxnet3, but I don't have a great environment for testing yet.

- Tom
  

Patch

diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c
index 2707b25148..ce7c347254 100644
--- a/drivers/net/vmxnet3/vmxnet3_ethdev.c
+++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c
@@ -1936,11 +1936,13 @@  vmxnet3_interrupt_handler(void *param)
 static int
 vmxnet3_dev_rx_queue_intr_enable(struct rte_eth_dev *dev, uint16_t queue_id)
 {
+#ifndef RTE_EXEC_ENV_FREEBSD
 	struct vmxnet3_hw *hw = dev->data->dev_private;
 
 	vmxnet3_enable_intr(hw,
 			    rte_intr_vec_list_index_get(dev->intr_handle,
 							       queue_id));
+#endif
 
 	return 0;
 }