1. 18 2月, 2017 1 次提交
  2. 27 8月, 2016 1 次提交
  3. 01 8月, 2015 1 次提交
  4. 18 4月, 2015 1 次提交
  5. 23 7月, 2014 1 次提交
  6. 11 3月, 2014 1 次提交
  7. 13 12月, 2013 1 次提交
    • J
      sfc: Add MC BISTs to ethtool offline self test on EF10 · 74cd60a4
      Jon Cooper 提交于
      To run BISTs the MC goes down in to a special mode where it will only
      respond to MCDI from the testing PF, and TX, RX and event queues are
      torn down. Other PFs get a message as it goes down to tell them it's
      going down.
      
      When the other PFs get this message, they check the soft status
      register to tell when the MC has rebooted after BIST mode and they can
      start recovery.
      
      [bwh: Convert the test result to 1 or -1 as for earlier NICs]
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      74cd60a4
  8. 30 8月, 2013 1 次提交
  9. 22 8月, 2013 1 次提交
  10. 01 12月, 2012 2 次提交
  11. 02 10月, 2012 1 次提交
  12. 17 7月, 2012 2 次提交
    • B
      sfc: Disable VF queues during register self-test · d4f2cecc
      Ben Hutchings 提交于
      Currently VF queues and drivers may remain active during this test.
      This could cause memory corruption or spurious test failures.
      Therefore we reset the port/function before running these tests on
      Siena.
      
      On Falcon this doesn't work: we have to do some additional
      initialisation before some blocks will work again.  So refactor the
      reset/register-test sequence into an efx_nic_type method so
      efx_selftest() doesn't have to consider such quirks.
      
      In the process, fix another minor bug: Siena does not have an
      'invisible' reset and the self-test currently fails to push the PHY
      configuration after resetting.  Passing RESET_TYPE_ALL to
      efx_reset_{down,up}() fixes this.
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      d4f2cecc
    • B
      sfc: Use dev_kfree_skb() in efx_end_loopback() · e3ed2bdf
      Ben Hutchings 提交于
      Fix CID 102619 in the Coverity report on Linux.
      
      efx_end_loopback() iterates over an array of skb pointers of which
      some may be null (if efx_begin_loopback() failed).  It should not use
      dev_kfree_skb_irq(), which requires non-null pointers.  In practice
      this is safe because it does not run in interrupt context and
      therefore always ends up calling dev_kfree_skb(), which does allow
      null pointers.  But we should make that explicit.
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      e3ed2bdf
  13. 07 3月, 2012 4 次提交
  14. 27 1月, 2012 5 次提交
    • B
      sfc: Remove remnants of on-load self-test · 73ba7b68
      Ben Hutchings 提交于
      The out-of-tree version of the sfc driver used to run a self-test on
      each device before registering it.  Although this was never included
      in-tree, some functions have checks for this special case which is not
      really possible.
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      73ba7b68
    • B
      sfc: Clean up test interrupt handling · 1646a6f3
      Ben Hutchings 提交于
      Interrupts are normally generated by the event queues, moderated by
      timers.  However, they may also be triggered by detection of a 'fatal'
      error condition (e.g. memory parity error) or by the host writing to
      certain CSR fields as part of a self-test.
      
      The IRQ level/index used for these on Falcon rev B0 and Siena is set
      by the KER_INT_LEVE_SEL field and cached by the driver in
      efx_nic::fatal_irq_level.  Since this value is also relevant to
      self-tests rename the field to just 'irq_level'.
      
      Avoid unnecessary cache traffic by using a per-channel 'last_irq_cpu'
      field and only writing to the per-controller field when the interrupt
      matches efx_nic::irq_level.  Remove the volatile qualifier and use
      ACCESS_ONCE in the places we read these fields.
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      1646a6f3
    • B
      sfc: Remove dependence on NAPI polling in efx_test_eventq_irq() · 0fb53faa
      Ben Hutchings 提交于
      We cannot safely assume that the NAPI handler will complete within the
      20 ms that we allow for the event self-test.  The handler may be
      deferred for longer than this, particularly on realtime kernels.
      
      Instead, check whether either an event has been handled or (as in the
      old failure path) whether an interrupt has been received and an event
      has been delivered but not yet handled.  Use napi_disable() to
      synchronize with the NAPI handler before checking, since it will
      clear events before updating eventq_read_ptr.
      
      Remove the test result chan.N.eventq.poll, since it is not an error
      if the NAPI handler does not run during the test.
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      0fb53faa
    • B
      sfc: Consistently test DEBUG macro, not EFX_ENABLE_DEBUG · 5f3f9d6c
      Ben Hutchings 提交于
      The netif_dbg() macro is defined in <linux/netdevice.h>.  If the DEBUG
      macro is defined, it logs a message at 'debug' level, otherwise it
      does nothing.
      
      In net_driver.h we define DEBUG if EFX_ENABLE_DEBUG is defined, but
      this is too late for those source files that already got a
      definition of netif_dbg() by including <linux/netdevice.h>
      
      Get rid of EFX_ENABLE_DEBUG, and only define and test DEBUG.
      
      In mtd.c, we do not use DEBUG as a condition flag but are forced to
      use the DEBUG macro-function from <linux/mtd/mtd.h>.  Undefine DEBUG
      before including it.
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      5f3f9d6c
    • B
      sfc: Merge efx_mac_operations into efx_nic_type · 710b208d
      Ben Hutchings 提交于
      No NICs need to switch efx_mac_operations at run-time, and the MAC
      operations are fairly closely bound to NIC types.
      
      Move efx_mac_operations::reconfigure to efx_nic_type::reconfigure_mac
      and efx_mac_operations::check_fault fo efx_nic_type::check_mac_fault.
      Change callers to call through efx->type or directly if the NIC type
      is known.
      
      Remove efx_mac_operations::update_stats.  The implementations for
      Falcon used to fetch MAC statistics synchronously and this was used by
      efx_register_netdev() to clear statistics after running self-tests.
      However, it now only converts statistics that have already been
      fetched (and that only for Falcon), and the call from
      efx_register_netdev() has no effect.
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      710b208d
  15. 10 1月, 2012 2 次提交
  16. 06 1月, 2012 1 次提交
  17. 04 12月, 2011 1 次提交
  18. 11 8月, 2011 1 次提交
  19. 17 5月, 2011 1 次提交
    • B
      sfc: Use netif_device_{detach,attach}() around reset and self-test · e4abce85
      Ben Hutchings 提交于
      We need to keep the TX queues stopped throughout a reset, without
      triggering the TX watchdog and regardless of the link state.  The
      proper way to do this is to use netif_device_{detach,attach}() just as
      we do around suspend/resume, rather than the current bodge of faking
      link-down.
      
      Since we also need to do this during an offline self-test and we
      perform a reset during that, add these function calls outside of
      efx_reset_down() and efx_reset_up().
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      e4abce85
  20. 12 4月, 2011 2 次提交
    • B
      sfc: Do not use efx_process_channel_now() in online self-test · d4fabcc8
      Ben Hutchings 提交于
      During self-tests we use efx_process_channel_now() to handle
      completion and other events synchronously.  This disables interrupts
      and NAPI processing for the channel in question, but it may still be
      interrupted by another channel.  A single socket may receive packets
      from multiple net devices or even multiple channels of the same net
      device, so this can result in deadlock on a socket lock.
      
      Receiving packets in process context will also result in incorrect
      classification by the network cgroup classifier.
      
      Therefore, we must only use efx_process_channel_now() in the offline
      loopback tests (which never deliver packets up the stack) and not for
      the online interrupt and event tests.
      
      For the interrupt test, there is no reason to process events.  We
      only care that an interrupt is raised.
      
      For the event test, we want to know whether events have been received,
      and there may be many events ahead of the one we inject.  Therefore
      remove efx_channel::magic_count and instead test whether
      efx_channel::eventq_read_ptr advances.  This is currently an event
      queue index and might wrap around to exactly the same value, resulting
      in a false negative.  Therefore move the masking to efx_event() and
      efx_nic_eventq_read_ack() so that it cannot wrap within the time of
      the test.
      
      The event test also tries to diagnose failures by checking whether an
      event was delivered without causing an interrupt.  Add and use a
      helper function that only does this.
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      d4fabcc8
    • N
      sfc: Stop the TX queues during loopback self-tests · 9d1aea62
      Neil Turton 提交于
      If the TX queues are running during loopback self tests, host
      traffic gets looped back which causes the test to fail.  Avoid
      restarting the TX queues after the port reset so that any packets
      sent by the host get held back until after the tests have completed.
      
      [bwh: Also wake all TX queues at the end of self-tests.]
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      9d1aea62
  21. 01 3月, 2011 1 次提交
  22. 16 2月, 2011 1 次提交
    • B
      sfc: Add TX queues for high-priority traffic · 94b274bf
      Ben Hutchings 提交于
      Implement the ndo_setup_tc() operation with 2 traffic classes.
      
      Current Solarstorm controllers do not implement TX queue priority, but
      they do allow queues to be 'paced' with an enforced delay between
      packets.  Paced and unpaced queues are scheduled in round-robin within
      two separate hardware bins (paced queues with a large delay may be
      placed into a third bin temporarily, but we won't use that).  If there
      are queues in both bins, the TX scheduler will alternate between them.
      
      If we make high-priority queues unpaced and best-effort queues paced,
      and high-priority queues are mostly empty, a single high-priority queue
      can then instantly take 50% of the packet rate regardless of how many
      of the best-effort queues have descriptors outstanding.
      
      We do not actually want an enforced delay between packets on best-
      effort queues, so we set the pace value to a reserved value that
      actually results in a delay of 0.
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      94b274bf
  23. 21 10月, 2010 1 次提交
  24. 11 9月, 2010 2 次提交
  25. 26 6月, 2010 1 次提交
  26. 25 6月, 2010 2 次提交
  27. 03 6月, 2010 1 次提交