Hello, This change, while having the correct behavior, breaks the testpmd program, as the default MTU for testpmd is 1500B, which is higher than the default Google Cloud MTU. When specifying the max packet length, which dictates the MTU set by testpmd, the max packet length field set by the GVE driver is incorrect, causing testpmd to attempt to set the MTU to an invalid value due to underflow. This is fixed in https://patchwork.dpdk.org/project/dpdk/patch/20231016205948.2252342-1-joshwash@google.com/, and I believe these should go in together to ensure there is no point where testpmd is unusable for the GVE driver. Thanks, Josh On Sun, Oct 22, 2023 at 7:26 AM Xueming Li wrote: > Hi, > > FYI, your patch has been queued to stable release 22.11.4 > > Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. > It will be pushed if I get no objections before 11/15/23. So please > shout if anyone has objections. > > Also note that after the patch there's a diff of the upstream commit vs the > patch applied to the branch. This will indicate if there was any rebasing > needed to apply to the stable branch. If there were code changes for > rebasing > (ie: not only metadata diffs), please double check that the rebase was > correctly done. > > Queued patches are on a temporary branch at: > https://git.dpdk.org/dpdk-stable/log/?h=22.11-staging > > This queued commit can be viewed at: > > https://git.dpdk.org/dpdk-stable/commit/?h=22.11-staging&id=8ef9e184ca867c0ed9aed5728364aed6e7dd47e3 > > Thanks. > > Xueming Li > > --- > From 8ef9e184ca867c0ed9aed5728364aed6e7dd47e3 Mon Sep 17 00:00:00 2001 > From: Joshua Washington > Date: Fri, 29 Sep 2023 13:38:25 -0700 > Subject: [PATCH] net/gve: fix max MTU limit > Cc: Xueming Li > > [ upstream commit 030025b74202896e85a72b1e75049866800dd3f7 ] > > This patch corrects the MTU setting behavior in the GVE DPDK driver to > remove the artificial upper limit of RTE_ETHER_MTU. Instead, the max MTU > is dictated by the default value of the MTU that the device sends during > initialization, which will always be the maximum supported MTU. > > Fixes: 71dea04cdf9a ("net/gve: support device info and configure") > > Signed-off-by: Joshua Washington > --- > drivers/net/gve/gve_ethdev.c | 5 +++-- > drivers/net/gve/gve_ethdev.h | 3 --- > 2 files changed, 3 insertions(+), 5 deletions(-) > > diff --git a/drivers/net/gve/gve_ethdev.c b/drivers/net/gve/gve_ethdev.c > index e357f16e16..806f45b0a7 100644 > --- a/drivers/net/gve/gve_ethdev.c > +++ b/drivers/net/gve/gve_ethdev.c > @@ -5,6 +5,7 @@ > #include "gve_ethdev.h" > #include "base/gve_adminq.h" > #include "base/gve_register.h" > +#include "rte_ether.h" > > const char gve_version_str[] = GVE_VERSION; > static const char gve_version_prefix[] = GVE_VERSION_PREFIX; > @@ -276,8 +277,8 @@ gve_dev_info_get(struct rte_eth_dev *dev, struct > rte_eth_dev_info *dev_info) > dev_info->max_tx_queues = priv->max_nb_txq; > dev_info->min_rx_bufsize = GVE_MIN_BUF_SIZE; > dev_info->max_rx_pktlen = GVE_MAX_RX_PKTLEN; > - dev_info->max_mtu = GVE_MAX_MTU; > - dev_info->min_mtu = GVE_MIN_MTU; > + dev_info->max_mtu = priv->max_mtu; > + dev_info->min_mtu = RTE_ETHER_MIN_MTU; > > dev_info->rx_offload_capa = 0; > dev_info->tx_offload_capa = > diff --git a/drivers/net/gve/gve_ethdev.h b/drivers/net/gve/gve_ethdev.h > index 235e55899e..975318938d 100644 > --- a/drivers/net/gve/gve_ethdev.h > +++ b/drivers/net/gve/gve_ethdev.h > @@ -31,9 +31,6 @@ > #define GVE_MIN_BUF_SIZE 1024 > #define GVE_MAX_RX_PKTLEN 65535 > > -#define GVE_MAX_MTU RTE_ETHER_MTU > -#define GVE_MIN_MTU RTE_ETHER_MIN_MTU > - > /* A list of pages registered with the device during setup and used by a > queue > * as buffers > */ > -- > 2.25.1 > > --- > Diff of the applied patch vs upstream commit (please double-check if > non-empty: > --- > --- - 2023-10-22 22:17:35.768883300 +0800 > +++ 0036-net-gve-fix-max-MTU-limit.patch 2023-10-22 > 22:17:34.206723700 +0800 > @@ -1 +1 @@ > -From 030025b74202896e85a72b1e75049866800dd3f7 Mon Sep 17 00:00:00 2001 > +From 8ef9e184ca867c0ed9aed5728364aed6e7dd47e3 Mon Sep 17 00:00:00 2001 > @@ -4,0 +5,3 @@ > +Cc: Xueming Li > + > +[ upstream commit 030025b74202896e85a72b1e75049866800dd3f7 ] > @@ -12 +14,0 @@ > -Cc: stable@dpdk.org > @@ -21 +23 @@ > -index 9b25f3036b..b441f96623 100644 > +index e357f16e16..806f45b0a7 100644 > @@ -24 +26,3 @@ > -@@ -7,6 +7,7 @@ > +@@ -5,6 +5,7 @@ > + #include "gve_ethdev.h" > + #include "base/gve_adminq.h" > @@ -26,2 +29,0 @@ > - #include "base/gve_osdep.h" > - #include "gve_version.h" > @@ -30,3 +32,3 @@ > - static void > - gve_write_version(uint8_t *driver_version_register) > -@@ -297,8 +298,8 @@ gve_dev_info_get(struct rte_eth_dev *dev, struct > rte_eth_dev_info *dev_info) > + const char gve_version_str[] = GVE_VERSION; > + static const char gve_version_prefix[] = GVE_VERSION_PREFIX; > +@@ -276,8 +277,8 @@ gve_dev_info_get(struct rte_eth_dev *dev, struct > rte_eth_dev_info *dev_info) > @@ -44 +46 @@ > -index ca94a09a2f..1cba282128 100644 > +index 235e55899e..975318938d 100644 > @@ -47 +49 @@ > -@@ -23,9 +23,6 @@ > +@@ -31,9 +31,6 @@ > @@ -54,3 +56,3 @@ > - #define GVE_TX_CKSUM_OFFLOAD_MASK ( \ > - RTE_MBUF_F_TX_L4_MASK | \ > - RTE_MBUF_F_TX_TCP_SEG) > + /* A list of pages registered with the device during setup and used by a > queue > + * as buffers > + */ > -- Joshua Washington | Software Engineer | joshwash@google.com | (414) 366-4423