1. 01 11月, 2016 1 次提交
    • J
      i40e: drop is_vf and is_netdev fields in struct i40e_mac_filter · 1bc87e80
      Jacob Keller 提交于
      Originally the is_vf and is_netdev fields were added in order to
      distinguish between VF and netdev filters in a single VSI. However, it
      can be noted that we use separate VSI for SRIOV VFs and for netdev VSI.
      Thus, since a single VSI should only ever have one type of filter, we
      can simply remove the checks and remove the typing.
      
      In a similar fashion, we can note that the only remaining way to get
      multiple filters of a single type is through a debug command that was
      added to debugfs. This command is useless in practice, and results in
      causing bugs if we keep counter tracking but lose the is_vf and
      is_netdev protections as desired above.
      
      Since the only time we'd actually have a counter value besides 0 and
      1 is through use of this debugfs hook, we can remove this unnecessary
      command, and the entire counter logic it required.
      
      We vastly simplify mac filters by removing
      
      (a) the distinction between VF and netdev filters
      (b) counting logic
      (c) the ability to add and remove filters bypassing the stack via debugfs
      
      Change-ID: Idf916dd2a1159b1188ddbab5bef6b85ea6bf27d9
      Signed-off-by: NJacob Keller <jacob.e.keller@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      1bc87e80
  2. 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
  3. 28 10月, 2016 1 次提交
    • D
      i40e: Fix configure TCs after initial DCB disable · ea6acb7e
      David Ertman 提交于
      in commit a036244c a fix
      was put into place to avoid a kernel panic when a non-
      supported traffic class configuration was put into place
      and then lldp was enabled/disabled on the link partner
      switch.  This fix caused it to be necessary to
      unload/reload the driver to reenable DCB once a supported
      TC config was in place.
      
      The root cause of the original panic was that the function
      i40e_pf_get_default_tc was allowing for a default TC other
      than TC 0, and only TC 0 is supported as a default.
      
      This patch removes the get_default_tc function and replaces
      it with a #define since there is only one TC supported as
      a default.
      
      Change-Id: I448371974e946386d0a7718d73668b450b7c72ef
      Signed-off-by: NDave Ertman <david.m.ertman@intel.com>
      Tested-by: NRonald Bynoe <ronald.j.bynoe@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      ea6acb7e
  4. 25 9月, 2016 2 次提交
  5. 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
  6. 20 8月, 2016 2 次提交
  7. 19 8月, 2016 1 次提交
  8. 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
  9. 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
  10. 14 5月, 2016 2 次提交
  11. 06 5月, 2016 3 次提交
  12. 02 5月, 2016 1 次提交
  13. 26 4月, 2016 1 次提交
  14. 05 4月, 2016 2 次提交
  15. 01 3月, 2016 1 次提交
  16. 20 2月, 2016 1 次提交
  17. 19 2月, 2016 1 次提交
  18. 18 2月, 2016 6 次提交
  19. 17 2月, 2016 3 次提交
  20. 04 2月, 2016 2 次提交
  21. 08 1月, 2016 1 次提交
  22. 16 12月, 2015 1 次提交
  23. 13 12月, 2015 1 次提交
  24. 07 12月, 2015 1 次提交
  25. 03 12月, 2015 1 次提交