From 965023dd05b9732946c963e16edc5b28531ef892 Mon Sep 17 00:00:00 2001 From: Oscar Salvador Date: Apr 19 2023 04:27:15 +0000 Subject: Merge remote-tracking branch 'origin/users/tbogendoerfer/SLE15-SP5-GA/for-next' into SLE15-SP5-GA Pull vmxnet fixes from Thomas Bogendoerfer --- diff --git a/patches.suse/vmxnet3-use-gro-callback-when-UPT-is-enabled.patch b/patches.suse/vmxnet3-use-gro-callback-when-UPT-is-enabled.patch new file mode 100644 index 0000000..a9e8473 --- /dev/null +++ b/patches.suse/vmxnet3-use-gro-callback-when-UPT-is-enabled.patch @@ -0,0 +1,46 @@ +From: Ronak Doshi +Date: Thu, 23 Mar 2023 13:07:21 -0700 +Subject: vmxnet3: use gro callback when UPT is enabled +Patch-mainline: v6.3-rc5 +Git-commit: 3bced313b9a5a237c347e0f079c8c2fe4b3935aa +References: bsc#1209739 + +Currently, vmxnet3 uses GRO callback only if LRO is disabled. However, +on smartNic based setups where UPT is supported, LRO can be enabled +from guest VM but UPT devicve does not support LRO as of now. In such +cases, there can be performance degradation as GRO is not being done. + +This patch fixes this issue by calling GRO API when UPT is enabled. We +use updateRxProd to determine if UPT mode is active or not. + +To clarify few things discussed over the thread: +The patch is not neglecting any feature bits nor disabling GRO. It uses +GRO callback when UPT is active as LRO is not available in UPT. +GRO callback cannot be used as default for all cases as it degrades +performance for non-UPT cases or for cases when LRO is already done in +ESXi. + +Cc: stable@vger.kernel.org +Fixes: 6f91f4ba046e ("vmxnet3: add support for capability registers") +Signed-off-by: Ronak Doshi +Reviewed-by: Simon Horman +Link: https://lore.kernel.org/r/20230323200721.27622-1-doshir@vmware.com +Signed-off-by: Jakub Kicinski +Acked-by: Thomas Bogendoerfer +--- + drivers/net/vmxnet3/vmxnet3_drv.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/drivers/net/vmxnet3/vmxnet3_drv.c ++++ b/drivers/net/vmxnet3/vmxnet3_drv.c +@@ -1688,7 +1688,9 @@ not_lro: + if (unlikely(rcd->ts)) + __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), rcd->tci); + +- if (adapter->netdev->features & NETIF_F_LRO) ++ /* Use GRO callback if UPT is enabled */ ++ if ((adapter->netdev->features & NETIF_F_LRO) && ++ !rq->shared->updateRxProd) + netif_receive_skb(skb); + else + napi_gro_receive(&rq->napi, skb); diff --git a/series.conf b/series.conf index 375a58b..7d836ee 100644 --- a/series.conf +++ b/series.conf @@ -36923,6 +36923,7 @@ patches.suse/ice-avoid-bonding-causing-auxiliary-plug-unplug-unde.patch patches.suse/nfc-st-nci-Fix-use-after-free-bug-in-ndlc_remove-due.patch patches.suse/s390-uaccess-add-missing-earlyclobber-annotations-to-__clear_user.patch + patches.suse/vmxnet3-use-gro-callback-when-UPT-is-enabled.patch ######################################################## # end of sorted patches