lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Fri, 5 May 2017 13:37:23 -0700
From:   Alexander Duyck <alexander.duyck@...il.com>
To:     Vladislav Yasevich <vyasevich@...il.com>
Cc:     Netdev <netdev@...r.kernel.org>, Michal Kubecek <mkubecek@...e.cz>,
        avagin@...nvz.org, Vladislav Yasevich <vyasevic@...hat.com>
Subject: Re: [PATCH v2] vlan: Keep NETIF_F_HW_CSUM similar to other software devices

On Fri, May 5, 2017 at 1:17 PM, Vladislav Yasevich <vyasevich@...il.com> wrote:
> Vlan devices, like all other software devices, enable
> NETIF_F_HW_CSUM feature.  However, unlike all the othe other
> software devices, vlans will switch to using IP|IPV6_CSUM
> features, if the underlying devices uses them.  In these situations,
> checksum offload features on the vlan device can't be controlled
> via ethtool.
>
> This patch makes vlans keep HW_CSUM feature if the underlying
> device supports checksum offloading.  This makes vlan devices
> behave like other software devices, and restores control to the
> user.
>
> A side-effect is that some offload settings (typically UFO)
> may be enabled on the vlan device while being disabled on the HW.
> However, the GSO code will correctly process the packets. This
> actually results in slightly better raw throughput.
>
> Signed-off-by: Vladislav Yasevich <vyasevic@...hat.com>

Acked-by: Alexander Duyck <alexander.h.duyck@...el.com>

> ---
> V2:  posted the right patch.
>
>  net/8021q/vlan_dev.c | 13 ++++++++++---
>  1 file changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
> index 9ee5787..ff12cf3 100644
> --- a/net/8021q/vlan_dev.c
> +++ b/net/8021q/vlan_dev.c
> @@ -626,11 +626,18 @@ static netdev_features_t vlan_dev_fix_features(struct net_device *dev,
>  {
>         struct net_device *real_dev = vlan_dev_priv(dev)->real_dev;
>         netdev_features_t old_features = features;
> +       netdev_features_t lower_features;
>
> -       features = netdev_intersect_features(features, real_dev->vlan_features);
> -       features |= NETIF_F_RXCSUM;
> -       features = netdev_intersect_features(features, real_dev->features);
> +       lower_features = netdev_intersect_features((real_dev->vlan_features |
> +                                                   NETIF_F_RXCSUM),
> +                                                  real_dev->features);
>
> +       /* Add HW_CSUM setting to preserve user ability to control
> +        * checksum offload on the vlan device.
> +        */
> +       if (lower_features & (NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM))
> +               lower_features |= NETIF_F_HW_CSUM;
> +       features = netdev_intersect_features(features, lower_features);
>         features |= old_features & (NETIF_F_SOFT_FEATURES | NETIF_F_GSO_SOFTWARE);
>         features |= NETIF_F_LLTX;
>
> --
> 2.7.4
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ