1. 29 10月, 2016 2 次提交
    • A
      i40e/i40evf: fix interrupt affinity bug · 96db776a
      Alan Brady 提交于
      There exists a bug in which a 'perfect storm' can occur and cause
      interrupts to fail to be correctly affinitized. This causes unexpected
      behavior and has a substantial impact on performance when it happens.
      
      The bug occurs if there is heavy traffic, any number of CPUs that have
      an i40e interrupt are pegged at 100%, and the interrupt afffinity for
      those CPUs is changed.  Instead of moving to the new CPU, the interrupt
      continues to be polled while there is heavy traffic.
      
      The bug is most readily realized as the driver is first brought up and
      all interrupts start on CPU0. If there is heavy traffic and the
      interrupt starts polling before the interrupt is affinitized, the
      interrupt will be stuck on CPU0 until traffic stops. The bug, however,
      can also be wrought out more simply by affinitizing all the interrupts
      to a single CPU and then attempting to move any of those interrupts off
      while there is heavy traffic.
      
      This patch fixes the bug by registering for update notifications from
      the kernel when the interrupt affinity changes. When that fires, we
      cache the intended affinity mask. Then, while polling, if the cpu is
      pegged at 100% and we failed to clean the rings, we check to make sure
      we have the correct affinity and stop polling if we're firing on the
      wrong CPU.  When the kernel successfully moves the interrupt, it will
      start polling on the correct CPU. The performance impact is minimal
      since the only time this section gets executed is when performance is
      already compromised by the CPU.
      
      Change-ID: I4410a880159b9dba1f8297aa72bef36dca34e830
      Signed-off-by: NAlan Brady <alan.brady@intel.com>
      Tested-by: NAndrew Bowers <andrewx.bowers@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      96db776a
    • A
      i40e: Remove unused function i40e_vsi_lookup · dc762120
      Alexander Duyck 提交于
      The function is not used so there is no need to carry it forward.  I have
      plans to add a slightly different function that can be inlined to handle
      the same kind of functionality.
      
      Change-ID: Ie2dfcb189dc75e5fbc156bac23003e3b4210ae0f
      Signed-off-by: NAlexander Duyck <alexander.h.duyck@intel.com>
      Tested-by: NAndrew Bowers <andrewx.bowers@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      dc762120
  2. 25 9月, 2016 2 次提交
  3. 23 9月, 2016 1 次提交
    • A
      i40e: fix setting user defined RSS hash key · f1582351
      Alan Brady 提交于
      Previously, when using ethtool to change the RSS hash key, ethtool would
      report back saying the old key was still being used and no error was
      reported.  It was unclear whether it was being reported incorrectly or
      being set incorrectly.  Debugging revealed 'i40e_set_rxfh()' returned
      zero immediately instead of setting the key because a user defined
      indirection table is not supplied when changing the hash key.
      
      This fix instead changes it such that if an indirection table is not
      supplied, then a default one is created and the hash key is now
      correctly set.
      
      Change-ID: Iddb621897ecf208650272b7ee46702cad7b69a71
      Signed-off-by: NAlan Brady <alan.brady@intel.com>
      Tested-by: NAndrew Bowers <andrewx.bowers@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      f1582351
  4. 20 8月, 2016 2 次提交
  5. 19 8月, 2016 1 次提交
  6. 22 7月, 2016 1 次提交
    • M
      i40e: refactor Rx filter handling · c3c7ea27
      Mitch Williams 提交于
      Properly track filter adds and deletes so the driver doesn't lose filters
      during resets and up/down cycles. Add a tracking mechanism so that the
      driver knows when to enter and leave promiscuous mode.
      
      Implement a simple state machine so the driver can track the status of
      each filter throughout its lifecycle. Properly manage the overflow promiscuous
      state for the each VSI, and provide a way for the driver to detect when to exit
      overflow promiscuous mode.
      
      Remove all possible default MAC filters that the firmware may have set up so
      that the driver can manage these correctly, particularly when VLANs come into
      play. Remove the LAA flag for filters; instead just send whatever we get through
      set_mac to the firmware as the LAA for wakeup purposes.
      
      Finally, add the state of each filter to debugfs output so we can see what's
      going on inside the driver's pointy little head.
      
      Change-ID: I97c5e366fac2254fa01eaff4f65c0af61dcf2e1f
      Signed-off-by: NMitch Williams <mitch.a.williams@intel.com>
      Tested-by: NAndrew Bowers <andrewx.bowers@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      c3c7ea27
  7. 28 6月, 2016 1 次提交
    • T
      i40e: Fix errors resulted while turning off TSO · a70e407f
      Tushar Dave 提交于
      On systems with 128 CPUs, turning off TSO results in errors,
      
      i40e 0000:03:00.0: failed to get tracking for 1 vectors for VSI 400, err=-12
      i40e 0000:03:00.0: Couldn't create FDir VSI
      i40e 0000:03:00.0: i40e_ptp_init: PTP not supported on eth0
      i40e 0000:03:00.0: couldn't add VEB, err I40E_ERR_ADMIN_QUEUE_ERROR aq_err I40E_AQ_RC_ENOENT
      i40e 0000:03:00.0: rebuild of switch failed: -1, will try to set up simple PF connection
      i40e 0000:03:00.0 eth0: adding 00:10:e0:8a:24:b6 vid=0
      
      Enabling FD_SB without checking availability of MSI-X vector is the
      root cause. This change adds necessary check.
      Signed-off-by: NTushar Dave <tushar.n.dave@oracle.com>
      Tested-by: NAndrew Bowers <andrewx.bowers@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      a70e407f
  8. 14 5月, 2016 2 次提交
  9. 06 5月, 2016 3 次提交
  10. 02 5月, 2016 1 次提交
  11. 26 4月, 2016 1 次提交
  12. 05 4月, 2016 2 次提交
  13. 01 3月, 2016 1 次提交
  14. 20 2月, 2016 1 次提交
  15. 19 2月, 2016 1 次提交
  16. 18 2月, 2016 6 次提交
  17. 17 2月, 2016 3 次提交
  18. 04 2月, 2016 2 次提交
  19. 08 1月, 2016 1 次提交
  20. 16 12月, 2015 1 次提交
  21. 13 12月, 2015 1 次提交
  22. 07 12月, 2015 1 次提交
  23. 03 12月, 2015 3 次提交