1. 23 Mar, 2020 1 commit
    • Yadu Kishore's avatar
      net: Make skb_segment not to compute checksum if network controller supports checksumming · 1454c9fa
      Yadu Kishore authored
      Problem:
      TCP checksum in the output path is not being offloaded during GSO
      in the following case:
      The network driver does not support scatter-gather but supports
      checksum offload with NETIF_F_HW_CSUM.
      
      Cause:
      skb_segment calls skb_copy_and_csum_bits if the network driver
      does not announce NETIF_F_SG. It does not check if the driver
      supports NETIF_F_HW_CSUM.
      So for devices which might want to offload checksum but do not support SG
      there is currently no way to do so if GSO is enabled.
      
      Solution:
      In skb_segment check if the network controller does checksum and if so
      call skb_copy_bits instead of skb_copy_and_csum_bits.
      
      Testing:
      Without the patch, ran iperf TCP traffic with NETIF_F_HW_CSUM enabled
      in the network driver. Observed the TCP checksum offload is not happening
      since the skbs received by the driver in the output path have
      skb->ip_summed set to CHECKSUM_NONE.
      
      With the patch ran iperf TCP traffic and observed that TCP checksum
      is being offloaded with skb->ip_summed set to CHECKSUM_PARTIAL.
      Also tested with the patch by disabling NETIF_F_HW_CSUM in the driver
      to cover the newly introduced if-else code path in skb_segment.
      
      Link: https://lore.kernel.org/netdev/CA+FuTSeYGYr3Umij+Mezk9CUcaxYwqEe5sPSuXF8jPE2yMFJAw@mail.gmail.comSigned-off-by: default avatarYadu Kishore <kyk.segfault@gmail.com>
      Acked-by: default avatarWillem de Bruijn <willemb@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1454c9fa
  2. 22 Mar, 2020 23 commits
  3. 20 Mar, 2020 16 commits