Message ID | 20210409123157.3568-2-tim.gardner@canonical.com |
---|---|
State | New |
Headers | show |
Series | [Groovy] net/mlx5e: Check tunnel offload is required before setting SWP | expand |
On 09.04.21 14:31, Tim Gardner wrote: > From: Moshe Shemesh <moshe@nvidia.com> > > BugLink: https://bugs.launchpad.net/bugs/1921769 > > Check that tunnel offload is required before setting Software Parser > offsets to get Geneve HW offload. In case of Geneve packet we check HW > offload support of SWP in mlx5e_tunnel_features_check() and set features > accordingly, this should be reflected in skb offload requested by the > kernel and we should add the Software Parser offsets only if requested. > Otherwise, in case HW doesn't support SWP for Geneve, data path will > mistakenly try to offload Geneve SKBs with skb->encapsulation set, > regardless of whether offload was requested or not on this specific SKB. > > Fixes: e3cfc7e6b7bd ("net/mlx5e: TX, Add geneve tunnel stateless offload support") > Signed-off-by: Moshe Shemesh <moshe@nvidia.com> > Reviewed-by: Tariq Toukan <tariqt@nvidia.com> > Signed-off-by: Saeed Mahameed <saeedm@nvidia.com> > (backported from commit e1c3940c6003d820c787473c65711b49c2d1bc42) > [rtg - the affected code did not get moved to > drivers/net/ethernet/mellanox/mlx5/core/en_accel/en_accel.h until > 8e4b53f60f7d33cf6c60f790cf506220b2bcbb0f ("net/mlx5e: Refactor xmit functions") ] > Signed-off-by: Tim Gardner <tim.gardner@canonical.com> Acked-by: Stefan Bader <stefan.bader@canonical.com> > --- > drivers/net/ethernet/mellanox/mlx5/core/en_tx.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c > index 77bd986a8c27..9ae4a98eeaa6 100644 > --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c > +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c > @@ -340,7 +340,7 @@ void mlx5e_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb, > dseg = wqe->data; > > #if IS_ENABLED(CONFIG_GENEVE) > - if (skb->encapsulation) > + if (skb->encapsulation && skb->ip_summed == CHECKSUM_PARTIAL) > mlx5e_tx_tunnel_accel(skb, eseg, ihs); > #endif > mlx5e_txwqe_build_eseg_csum(sq, skb, eseg); >
Acked-by: Kelsey Skunberg <kelsey.skunberg@canonical.com> On 2021-04-09 06:31:57 , Tim Gardner wrote: > From: Moshe Shemesh <moshe@nvidia.com> > > BugLink: https://bugs.launchpad.net/bugs/1921769 > > Check that tunnel offload is required before setting Software Parser > offsets to get Geneve HW offload. In case of Geneve packet we check HW > offload support of SWP in mlx5e_tunnel_features_check() and set features > accordingly, this should be reflected in skb offload requested by the > kernel and we should add the Software Parser offsets only if requested. > Otherwise, in case HW doesn't support SWP for Geneve, data path will > mistakenly try to offload Geneve SKBs with skb->encapsulation set, > regardless of whether offload was requested or not on this specific SKB. > > Fixes: e3cfc7e6b7bd ("net/mlx5e: TX, Add geneve tunnel stateless offload support") > Signed-off-by: Moshe Shemesh <moshe@nvidia.com> > Reviewed-by: Tariq Toukan <tariqt@nvidia.com> > Signed-off-by: Saeed Mahameed <saeedm@nvidia.com> > (backported from commit e1c3940c6003d820c787473c65711b49c2d1bc42) > [rtg - the affected code did not get moved to > drivers/net/ethernet/mellanox/mlx5/core/en_accel/en_accel.h until > 8e4b53f60f7d33cf6c60f790cf506220b2bcbb0f ("net/mlx5e: Refactor xmit functions") ] > Signed-off-by: Tim Gardner <tim.gardner@canonical.com> > --- > drivers/net/ethernet/mellanox/mlx5/core/en_tx.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c > index 77bd986a8c27..9ae4a98eeaa6 100644 > --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c > +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c > @@ -340,7 +340,7 @@ void mlx5e_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb, > dseg = wqe->data; > > #if IS_ENABLED(CONFIG_GENEVE) > - if (skb->encapsulation) > + if (skb->encapsulation && skb->ip_summed == CHECKSUM_PARTIAL) > mlx5e_tx_tunnel_accel(skb, eseg, ihs); > #endif > mlx5e_txwqe_build_eseg_csum(sq, skb, eseg); > -- > 2.17.1 > > > -- > kernel-team mailing list > kernel-team@lists.ubuntu.com > https://lists.ubuntu.com/mailman/listinfo/kernel-team
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c index 77bd986a8c27..9ae4a98eeaa6 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c @@ -340,7 +340,7 @@ void mlx5e_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb, dseg = wqe->data; #if IS_ENABLED(CONFIG_GENEVE) - if (skb->encapsulation) + if (skb->encapsulation && skb->ip_summed == CHECKSUM_PARTIAL) mlx5e_tx_tunnel_accel(skb, eseg, ihs); #endif mlx5e_txwqe_build_eseg_csum(sq, skb, eseg);