1. 29 Mar, 2018 18 commits
  2. 28 Mar, 2018 15 commits
  3. 27 Mar, 2018 7 commits
    • David Howells's avatar
      rxrpc: Trace call completion · 1bae5d22
      David Howells authored
      Add a tracepoint to track rxrpc calls moving into the completed state and
      to log the completion type and the recorded error value and abort code.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      1bae5d22
    • David Howells's avatar
      rxrpc, afs: Use debug_ids rather than pointers in traces · a25e21f0
      David Howells authored
      In rxrpc and afs, use the debug_ids that are monotonically allocated to
      various objects as they're allocated rather than pointers as kernel
      pointers are now hashed making them less useful.  Further, the debug ids
      aren't reused anywhere nearly as quickly.
      
      In addition, allow kernel services that use rxrpc, such as afs, to take
      numbers from the rxrpc counter, assign them to their own call struct and
      pass them in to rxrpc for both client and service calls so that the trace
      lines for each will have the same ID tag.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      a25e21f0
    • David Howells's avatar
      rxrpc: Trace resend · 827efed6
      David Howells authored
      Add a tracepoint to trace packet resend events and to dump the Tx
      annotation buffer for added illumination.
      Signed-off-by: default avatarDavid Howells <dhowells@rdhat.com>
      827efed6
    • David S. Miller's avatar
      Merge branch 'sfc-filter-locking' · 5d22d47b
      David S. Miller authored
      Edward Cree says:
      
      ====================
      sfc: rework locking around filter management
      
      The use of a spinlock to protect filter state combined with the need for a
       sleeping operation (MCDI) to apply that state to the NIC (on EF10) led to
       unfixable race conditions, around the handling of filter restoration after
       an MC reboot.
      So, this patch series removes the requirement to be able to modify the SW
       filter table from atomic context, by using a workqueue to request
       asynchronous filter operations (which are needed for ARFS).  Then, the
       filter table locks are changed to mutexes, replacing the dance of spinlocks
       and 'busy' flags.  Also, a mutex is added to protect the RSS context state,
       since otherwise a similar race is possible around restoring that after an
       MC reboot.  While we're at it, fix a couple of other related bugs.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5d22d47b
    • Edward Cree's avatar
      sfc: fix flow type handling for RSS filters · a8e8fbeb
      Edward Cree authored
      The FLOW_RSS flag was causing us to insert UDP filters when TCP was wanted.
      
      Fixes: 42356d9a ("sfc: support RSS spreading of ethtool ntuple filters")
      Signed-off-by: default avatarEdward Cree <ecree@solarflare.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a8e8fbeb
    • Edward Cree's avatar
      sfc: protect list of RSS contexts under a mutex · e0a65e3c
      Edward Cree authored
      Otherwise races are possible between ethtool ops and
       efx_ef10_rx_restore_rss_contexts().
      Also, don't try to perform the restore on every reset, only after an MC
       reboot, otherwise we'll leak RSS contexts on the NIC.
      
      Fixes: 42356d9a ("sfc: support RSS spreading of ethtool ntuple filters")
      Signed-off-by: default avatarEdward Cree <ecree@solarflare.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e0a65e3c
    • Edward Cree's avatar
      sfc: return a better error if filter insertion collides with MC reboot · 31b84295
      Edward Cree authored
      If some other operation gets the MCDI lock ahead of us and performs an MC
       reboot, then our attempt to insert the filter will fail with EINVAL,
       because the destination VI (spec->dmaq_id, MC_CMD_FILTER_OP_IN_RX_QUEUE) does
       not exist.  But the caller's request (which might e.g. be an ethtool ntuple
       request from userland) isn't invalid, it just got unlucky; so return EAGAIN.
      Signed-off-by: default avatarEdward Cree <ecree@solarflare.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      31b84295