1. 19 Feb, 2016 5 commits
    • Alexander Duyck's avatar
      i40e/i40evf: Move Tx checksum closer to TSO · 3bc67973
      Alexander Duyck authored
      On all of the other Intel drivers we place checksum close to TSO as they
      have a significant amount in common and it can help to reduce the decision
      tree for how to handle the frame as the first check in TSO is to see if
      checksumming is offloaded, and if it is not we can skip _BOTH_ TSO and Tx
      checksum offload based on a single check.
      Signed-off-by: default avatarAlexander Duyck <aduyck@mirantis.com>
      Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      3bc67973
    • Alexander Duyck's avatar
      i40e/i40evf: Rewrite logic for 8 descriptor per packet check · 2d37490b
      Alexander Duyck authored
      This patch is meant to rewrite the logic for how we determine if we can
      transmit the frame or if it needs to be linearized.
      
      The previous code for this function was using a mix of division and modulus
      division as a part of computing if we need to take the slow path.  Instead
      I have replaced this by simply working with a sliding window which will
      tell us if the frame would be capable of causing a single packet to span
      several descriptors.
      
      The logic for the scan is fairly simple.  If any given group of 6 fragments
      is less than gso_size - 1 then it is possible for us to have one byte
      coming out of the first fragment, 6 fragments, and one or more bytes coming
      out of the last fragment.  This gives us a total of 8 fragments
      which exceeds what we can allow so we send such frames to be linearized.
      
      Arguably the use of modulus might be more exact as the approach I propose
      may generate some false positives.  However the likelihood of us taking much
      of a hit for those false positives is fairly low, and I would rather not
      add more overhead in the case where we are receiving a frame composed of 4K
      pages.
      Signed-off-by: default avatarAlexander Duyck <aduyck@mirantis.com>
      Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      2d37490b
    • Alexander Duyck's avatar
      i40e/i40evf: Break up xmit_descriptor_count from maybe_stop_tx · 4ec441df
      Alexander Duyck authored
      In an upcoming patch I would like to have access to the descriptor count
      used for the data portion of the frame.  For this reason I am splitting up
      the descriptor count function from the function that stops the ring.
      
      Also in order to try and reduce unnecessary duplication of code I am moving
      the slow-path portions of the code out of being inline calls so that we can
      just jump to them and process them instead of having to build them into
      each function that calls them.
      Signed-off-by: default avatarAlexander Duyck <aduyck@mirantis.com>
      Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      4ec441df
    • David S. Miller's avatar
      Merge branch '40GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue · d289cbed
      David S. Miller authored
      Jeff Kirsher says:
      
      ====================
      40GbE Intel Wired LAN Driver Updates 2016-02-18
      
      This series contains updates to i40e and i40evf only.
      
      Alex Duyck provides all the patches in the series to update and fix the
      drivers.  Fixed the driver to drop the outer checksum offload on UDP
      tunnels, since the issue is that the upper levels of the stack never
      requested such an offload and it results in possible errors.  Updates the
      TSO function to just use u64 values, so we do not have to end up casting
      u32 values.  In the TSO path, factored out the L4 header offsets allowing
      us to ignore the L4 header offsets when dealing with the L3 checksum and
      length update.  Consolidates all of the spots where we were updating
      either the TCP or IP checksums in the TSO and checksum path into the TSO
      function.  Fixed two issues by adding support for IPv4 encapsulated in
      IPv6, first issue was the fact that iphdr(skb)->protocol was being used to
      test for the outer transport protocol which breaks IPv6 support.  The second
      was that we cleared the flag for v4 going to v6, but we did not take care
      of txflags going the other way.  Added support for IPv6 extension headers
      in setting up the Tx checksum.  Added exception handling to the Tx
      checksum path so that we can handle cases of TSO where the frame is bad,
      or Tx checksum where we did not recognize a protocol.  Fixed a number of
      issues to make certain that we are using the correct protocols when
      parsing both the inner and outer headers of a frame that is mixed between
      IPv4 and IPv6 for inner and outer.  Updated the feature flags to reflect
      the newly enabled/added features.
      
      Sorry, no witty patch descriptions this time around, probably should
      let Mitch help in writing patch descriptions for Alex. :-)
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d289cbed
    • Yuval Mintz's avatar
      bnx2x: Add missing HSI for big-endian machines · 376471a7
      Yuval Mintz authored
      Commit e5d3a51c ("bnx2x: extend DCBx support") was missing HSI
      changes for big-endian machine, breaking compilation on such
      platforms.
      Reported-by: default avatarkbuild test robot <fengguang.wu@intel.com>
      Signed-off-by: default avatarYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      376471a7
  2. 18 Feb, 2016 35 commits