1. 05 2月, 2013 1 次提交
  2. 01 2月, 2013 1 次提交
  3. 24 1月, 2013 2 次提交
  4. 22 11月, 2012 1 次提交
  5. 01 11月, 2012 2 次提交
  6. 23 10月, 2012 1 次提交
    • A
      ixgbe: Fix possible memory leak in ixgbe_set_ringparam · 1f4702aa
      Alexander Duyck 提交于
      We were not correctly freeing the temporary rings on error in
      ixgbe_set_ring_param.  In order to correct this I am unwinding a number of
      changes that were made in order to get things back to the original working
      form with modification for the current ring layouts.
      
      This approach has multiple advantages including a smaller memory footprint,
      and the fact that the interface is stopped while we are allocating the rings
      meaning that there is less potential for some sort of memory corruption on the
      ring.
      
      The only disadvantage I see with this approach is that on a Rx allocation
      failure we will report an error and only update the Tx rings.  However the
      adapter should be fully functional in this state and the likelihood of such
      an error is very low.  In addition it is not unreasonable to expect the
      user to need to recheck the ring configuration should they experience an
      error setting the ring sizes.
      Signed-off-by: NAlexander Duyck <alexander.h.duyck@intel.com>
      Tested-by: NPhil Schmitt <phillip.j.schmitt@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      1f4702aa
  7. 03 10月, 2012 1 次提交
  8. 19 7月, 2012 1 次提交
  9. 11 7月, 2012 1 次提交
  10. 20 6月, 2012 1 次提交
  11. 10 5月, 2012 2 次提交
  12. 04 5月, 2012 1 次提交
  13. 27 4月, 2012 1 次提交
  14. 20 3月, 2012 1 次提交
  15. 19 3月, 2012 1 次提交
  16. 17 3月, 2012 1 次提交
    • A
      ixgbe: Replace standard receive path with a page based receive · f800326d
      Alexander Duyck 提交于
      This patch replaces the existing Rx hot-path in the ixgbe driver with a new
      implementation that is based on performing a double buffered receive.  The
      ixgbe driver already had something similar in place for its' packet split
      path, however in that case we were still receiving the header for the
      packet into the sk_buff.  The big change here is the entire receive path
      will receive into pages only, and then pull the header out of the page and
      copy it into the sk_buff data.  There are several motivations behind this
      approach.
      
      First, this allows us to avoid several cache misses as we were taking a
      set of cache misses for allocating the sk_buff and then another set for
      receiving data into the sk_buff.  We are able to avoid these misses on
      receive now as we allocate the sk_buff when data is available.
      
      Second we are able to see a considerable performance gain when an IOMMU is
      enabled because we are no longer unmapping every buffer on receive.
      Instead we can delay the unmap until we are unable to use the page, and
      instead we can simply call sync_single_range on the half of the page that
      contains new data.
      
      Finally we are able to drop a considerable amount of code from the driver
      as we no longer have to support 2 different receive modes, packet split and
      one buffer.  This allows us to optimize the Rx path further since less
      branching is required.
      Signed-off-by: NAlexander Duyck <alexander.h.duyck@intel.com>
      Tested-by: NRoss Brattain <ross.b.brattain@intel.com>
      Tested-by: NStephen Ko <stephen.s.ko@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      f800326d
  17. 14 3月, 2012 1 次提交
  18. 13 3月, 2012 3 次提交
    • A
      ixgbe: Simplify logic for ethtool loopback frame creation and testing · 3832b26e
      Alexander Duyck 提交于
      This change makes it a bit easier to do the loopback frame creating and
      testing.  Previously we were doing an and to drop the last bit, and then
      dividing the frame_size by 2 in order to get locations for frame bytes and
      testing.  Instead we can simplify it by just shifting the register one bit
      to the right and using that for the frame offsets.
      
      This change also replaces all instances of rx_buffer_info with just
      rx_buffer since that is closer to the name of the actual structure being
      used and can save a few extra characters.
      
      In addition I have updated the logic for cleaning up a test frame so that
      we pass an rx_buffer instead of the sk_buff.  The main motivation behind
      this is changes that will replace the sk_buff with just a page in the
      future.
      Signed-off-by: NAlexander Duyck <alexander.h.duyck@intel.com>
      Tested-by: NStephen Ko <stephen.s.ko@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      3832b26e
    • A
      ixgbe: Allocate rings as part of the q_vector · de88eeeb
      Alexander Duyck 提交于
      This patch makes the rings a part of the q_vector directly instead of
      indirectly.  Specifically on x86 systems this helps to avoid any cache
      set conflicts between the q_vector, the tx_rings, and the rx_rings as the
      critical stride is 4K and in order to cross that boundary you would need to
      have over 15 rings on a single q_vector.
      
      In addition this allows for smarter allocations when Flow Director is
      enabled.  Previously Flow Director would set the irq_affinity hints based
      on the CPU and was still using a node interleaving approach which on some
      systems would end up with the two values mismatched.  With the new approach
      we can set the affinity for the irq_vector and use the CPU for that
      affinity to determine the node value for the node and the rings.
      Signed-off-by: NAlexander Duyck <alexander.h.duyck@intel.com>
      Tested-by: NStephen Ko <stephen.s.ko@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      de88eeeb
    • J
      ixgbe: remove tie between NAPI work limits and interrupt moderation · 35551c47
      Jeff Kirsher 提交于
      As noted by Ben Hutchings and David Miller, work limits for NAPI
      should not be tied to interrupt moderation parameters.  This
      should be handled by NAPI, possibly through sysfs.
      
      Neil Horman & Stephen Hemminger are working on a solution for
      NAPI currently.  In the meantime, remove this tie between
      work limits and interrupt moderation.
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      CC: Ben Hutchings <bhutchings@solarflare.com>
      Tested-by: NPhil Schmitt <phillip.j.schmitt@intel.com>
      35551c47
  19. 11 2月, 2012 1 次提交
  20. 09 2月, 2012 1 次提交
    • J
      ixgbe: ethtool: stats user buffer overrun · 9cc00b51
      John Fastabend 提交于
      If the number of tx/rx queues changes the ethtool ioctl
      ETHTOOL_GSTATS may overrun the userspace buffer. This
      occurs because the general practice in user space to
      query stats is to issue a ETHTOOL_GSSET cmd to learn the
      buffer size needed, allocate the buffer, then call
      ETHTOOL_GSTIRNGS and ETHTOOL_GSTATS. If the number of
      real_num_queues is changed or flow control attributes
      are changed after ETHTOOL_GSSET but before the
      ETHTOOL_GSTRINGS/ETHTOOL_GSTATS a user space buffer
      overrun occurs.
      
      To fix the overrun always return the max buffer size
      needed from get_sset_count() then return all strings
      and stats from get_strings()/get_ethtool_stats().
      
      This _will_ change the output from the ioctl() call
      which could break applications and script parsing in
      theory. I believe these changes should not break existing
      tools because the only changes will be more {tx|rx}_queues
      and the {tx|rx}_pb_* stats will always be returned.
      Existing scripts already need to handle changing number
      of queues because this occurs today depending on system
      and current features. The {tx|rx}_pb_* stats are at the
      end of the output and should be handled by scripts today
      regardless.
      
      Finally get_ethtool_stats and get_strings are free-form
      outputs tools parsing these outputs should be defensive
      anyways. In the end these updates are better then
      having a tool segfault because of a buffer overrun.
      Signed-off-by: NJohn Fastabend <john.r.fastabend@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      9cc00b51
  21. 03 2月, 2012 2 次提交
  22. 03 1月, 2012 1 次提交
  23. 15 11月, 2011 1 次提交
  24. 18 10月, 2011 1 次提交
  25. 17 10月, 2011 1 次提交
  26. 13 10月, 2011 1 次提交
  27. 08 10月, 2011 1 次提交
  28. 05 10月, 2011 2 次提交
    • M
      ixgbe: get pauseparam autoneg · 860502bf
      Mika Lansirinne 提交于
      There is a problem in the ixgbe driver with the reporting of the flow
      control parameters. The autoneg parameter is shown to be of if
      *either* it really is off, or current modes for both tx and rx are off.
      
      The problem is seen when the parameters are read or set when the link
      is down. In this case, the driver sees that tx and rx are currently off
      and therefore autoneg parameter is incorrectly reported to be off too.
      Also, the ethtool binary can not set the autoneg off since it sees that
      it already is. When a link later comes up, the autonegotiation is
      carried out normally and the driver later on reports the autoneg
      parameter to be on (as it is) and then it can also be changed with
      ethtool.
      
      The patch is made against v3.0 kernel, but the problem seems to be there
      since v2.6.30-rc1.
      
      Reviewer comments: What we are trying to do is to disable flow control
      while the cable is disconnected. Since ixgbe defaults to full flow
      control, we call ethtool -A autoneg off rx off tx off while the cable
      is disconnected. This doesn't work, because the driver sets
      hw->fc.current_mode = ixgbe_fc_none if the cable is unplugged.
      ixgbe_get_pauseparam() then reports to ethtool that nothing needs to be
      done. The code fixes this, but it might have some unknown consequences.
      Signed-off-by: NMika Lansirinne <mika.lansirinne@stonesoft.com>
      Reviewed-by: NEsa-Pekka Pyokkimies <esa-pekka.pyokkimies@stonesoft.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      860502bf
    • E
      ixgbe: send MFLCN to ethtool · 217995ec
      Emil Tantilov 提交于
      MFLCN register is used to set Rx flow control on parts newer than 82598.
      
      This patch sends the value of MFLCN to ethtool, so it can be used in a
      register dump (ethtool -d).
      Signed-off-by: NEmil Tantilov <emil.s.tantilov@intel.com>
      Tested-by: NStephen Ko <stephen.s.ko@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      217995ec
  29. 29 9月, 2011 1 次提交
  30. 24 9月, 2011 1 次提交
  31. 17 9月, 2011 3 次提交