Message ID | 20240606203249.1054066-3-tariqt@nvidia.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 791b4089e326271424b78f2fae778b20e53d071b |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | geneve fixes | expand |
On 06.06.2024 22:32, Tariq Toukan wrote: > From: Gal Pressman <gal@nvidia.com> > > Move the vxlan_features_check() call to after we verified the packet is > a tunneled VXLAN packet. > > Without this, tunneled UDP non-VXLAN packets (for ex. GENENVE) might > wrongly not get offloaded. > In some cases, it worked by chance as GENEVE header is the same size as > VXLAN, but it is obviously incorrect. > > Fixes: e3cfc7e6b7bd ("net/mlx5e: TX, Add geneve tunnel stateless offload support") > Signed-off-by: Gal Pressman <gal@nvidia.com> > Reviewed-by: Dragos Tatulea <dtatulea@nvidia.com> > Signed-off-by: Tariq Toukan <tariqt@nvidia.com> > --- Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com> > drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c > index c53c99dde558..a605eae56685 100644 > --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c > +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c > @@ -4875,7 +4875,7 @@ static netdev_features_t mlx5e_tunnel_features_check(struct mlx5e_priv *priv, > > /* Verify if UDP port is being offloaded by HW */ > if (mlx5_vxlan_lookup_port(priv->mdev->vxlan, port)) > - return features; > + return vxlan_features_check(skb, features); > > #if IS_ENABLED(CONFIG_GENEVE) > /* Support Geneve offload for default UDP port */ > @@ -4901,7 +4901,6 @@ netdev_features_t mlx5e_features_check(struct sk_buff *skb, > struct mlx5e_priv *priv = netdev_priv(netdev); > > features = vlan_features_check(skb, features); > - features = vxlan_features_check(skb, features); > > /* Validate if the tunneled packet is being offloaded by HW */ > if (skb->encapsulation &&
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c index c53c99dde558..a605eae56685 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -4875,7 +4875,7 @@ static netdev_features_t mlx5e_tunnel_features_check(struct mlx5e_priv *priv, /* Verify if UDP port is being offloaded by HW */ if (mlx5_vxlan_lookup_port(priv->mdev->vxlan, port)) - return features; + return vxlan_features_check(skb, features); #if IS_ENABLED(CONFIG_GENEVE) /* Support Geneve offload for default UDP port */ @@ -4901,7 +4901,6 @@ netdev_features_t mlx5e_features_check(struct sk_buff *skb, struct mlx5e_priv *priv = netdev_priv(netdev); features = vlan_features_check(skb, features); - features = vxlan_features_check(skb, features); /* Validate if the tunneled packet is being offloaded by HW */ if (skb->encapsulation &&