1. 08 9月, 2012 1 次提交
  2. 02 8月, 2012 1 次提交
    • B
      sfc: Fix maximum number of TSO segments and minimum TX queue size · 7e6d06f0
      Ben Hutchings 提交于
      Currently an skb requiring TSO may not fit within a minimum-size TX
      queue.  The TX queue selected for the skb may stall and trigger the TX
      watchdog repeatedly (since the problem skb will be retried after the
      TX reset).  This issue is designated as CVE-2012-3412.
      
      Set the maximum number of TSO segments for our devices to 100.  This
      should make no difference to behaviour unless the actual MSS is less
      than about 700.  Increase the minimum TX queue size accordingly to
      allow for 2 worst-case skbs, so that there will definitely be space
      to add an skb after we wake a queue.
      
      To avoid invalidating existing configurations, change
      efx_ethtool_set_ringparam() to fix up values that are too small rather
      than returning -EINVAL.
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7e6d06f0
  3. 07 3月, 2012 1 次提交
  4. 16 2月, 2012 1 次提交
    • B
      sfc: Add support for 'extra' channel types · 7f967c01
      Ben Hutchings 提交于
      Abstract some of the channel operations to allow for 'extra'
      channels that do not have RX or TX queues.
      
      - Try to assign a channel to each extra channel type that is enabled
        for the NIC, but gracefully degrade if we can't allocate sufficient
        MSI-X vectors
      - Allow each extra channel type to generate its own channel name
      - Allow channel types to disable reallocation and reinitialisation
        of their channels
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      7f967c01
  5. 27 1月, 2012 2 次提交
    • B
      sfc: Replace efx_rx_buffer::is_page and other booleans with a flags field · db339569
      Ben Hutchings 提交于
      Replace checksummed and discard booleans from efx_handle_rx_event()
      with a bitmask, added to the flags field.
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      db339569
    • 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
  6. 05 1月, 2012 3 次提交
  7. 07 12月, 2011 1 次提交
  8. 17 9月, 2011 3 次提交
  9. 11 8月, 2011 1 次提交
  10. 18 5月, 2011 1 次提交
  11. 01 3月, 2011 1 次提交
  12. 18 2月, 2011 1 次提交
    • B
      sfc: Implement hardware acceleration of RFS · 64d8ad6d
      Ben Hutchings 提交于
      Use the existing filter management functions to insert TCP/IPv4 and
      UDP/IPv4 4-tuple filters for Receive Flow Steering.
      
      For each channel, track how many RFS filters are being added during
      processing of received packets and scan the corresponding number of
      table entries for filters that may be reclaimed.  Do this in batches
      to reduce lock overhead.
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      64d8ad6d
  13. 16 2月, 2011 2 次提交
    • 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
    • B
      sfc: Move TX queue core queue mapping into tx.c · 60031fcc
      Ben Hutchings 提交于
      efx_hard_start_xmit() needs to implement a mapping which is the
      inverse of tx_queue::core_txq.  Move the initialisation of
      tx_queue::core_txq next to efx_hard_start_xmit() to make the
      connection more obvious.
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      60031fcc
  14. 11 12月, 2010 1 次提交
    • B
      sfc: Remove ancient support for nesting of TX stop · c04bfc6b
      Ben Hutchings 提交于
      Long before this driver went into mainline, it had support for
      multiple TX queues per port, with lockless TX enabled.  Since Linux
      did not know anything of this, filling up any hardware TX queue would
      stop the core TX queue and multiple hardware TX queues could fill up
      before the scheduler reacted.  Thus it was necessary to keep a count
      of how many TX queues were stopped and to wake the core TX queue only
      when all had free space again.
      
      The driver also previously (ab)used the per-hardware-queue stopped
      flag as a counter to deal with various things that can inhibit TX, but
      it no longer does that.
      
      Remove the per-channel tx_stop_count, tx_stop_lock and
      per-hardware-queue stopped count and just use the networking core
      queue state directly.
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      c04bfc6b
  15. 08 12月, 2010 1 次提交
  16. 21 10月, 2010 1 次提交
  17. 22 9月, 2010 1 次提交
  18. 11 9月, 2010 3 次提交
  19. 25 6月, 2010 1 次提交
  20. 02 6月, 2010 1 次提交
    • S
      sfc: Remove efx_rx_queue::add_lock · 90d683af
      Steve Hodgson 提交于
      Ensure that efx_fast_push_rx_descriptors() must only run
      from efx_process_channel() [NAPI], or when napi_disable()
      has been executed.
      
      Reimplement the slow fill by sending an event to the
      channel, so that NAPI runs, and hanging the subsequent
      fast fill off the event handler. Replace the sfc_refill
      workqueue and delayed work items with a timer. We do
      not need to stop this timer in efx_flush_all() because
      it's safe to send the event always; receiving it will
      be delayed until NAPI is restarted.
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      90d683af
  21. 29 4月, 2010 1 次提交
  22. 04 2月, 2010 1 次提交
  23. 30 11月, 2009 4 次提交
  24. 29 11月, 2009 1 次提交
    • S
      sfc: Simplify PHY polling · fdaa9aed
      Steve Hodgson 提交于
      Falcon can generate events for LASI interrupts from the PHY, but in
      practice we have never implemented this in reference designs.  Instead
      we have polled, inserted the appropriate events, and then handled the
      events later.  This is a waste of time and code.
      
      Instead, make PHY poll functions update the link state synchronously
      and report whether it changed.  We can still make use of the LASI
      registers as a shortcut on the SFT9001.
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      fdaa9aed
  25. 27 11月, 2009 2 次提交
  26. 25 11月, 2009 3 次提交