1. 21 Feb, 2017 37 commits
  2. 20 Feb, 2017 3 commits
    • David S. Miller's avatar
      Merge branch 'qed-bug-fixes' · 5a4dcdca
      David S. Miller authored
      Yuval Mintz says:
      
      ====================
      qed*: Bug fixes
      
      This is a respin of the series with same name for net-next
      instead of net [only patch #10 is changed].
      
      The 3 first patches here are a repost of
      ("qed: RoCE infrastructure fixes"). The fourth is an additional
      RoCE-related infrastructure fix, and the latter contain various fixes
      to qed/qede.
      
      Please consider applying these to `net-next'.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5a4dcdca
    • Mintz, Yuval's avatar
      qed*: Fix link indication race · 65ed2ffd
      Mintz, Yuval authored
      Driver changes the link properties via communication with
      the management firmware, and re-reads the resulting link status
      when it receives an indication that the link has changed.
      However, there are certain scenarios where such indications
      might be missing, and so driver also re-reads the current link
      results without attention in several places. Specifically, it
      does so during load and when resetting the link.
      
      This creates a race where driver might reflect incorrect
      link status - e.g., when explicit reading of the link status is
      switched by attention with the changed configuration.
      
      Correct this flow by a lock syncronizing the handling of the
      link indications [both explicit requests and attention].
      Signed-off-by: default avatarYuval Mintz <Yuval.Mintz@cavium.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      65ed2ffd
    • Mintz, Yuval's avatar
      qed: Don't allocate SBs using main PTT · 85750d74
      Mintz, Yuval authored
      Flows accessing registers require the flow to hold a PTT entry.
      To protect 'major' load/unload flows a main_ptt is pre-allocated
      to guarantee such flows wouldn't be blocked by PTT being
      unavailable.
      
      Status block initialization currently uses the main_ptt which
      is incorrect, as this flow might run concurrently to others
      [E.g., loading qedr while toggling qede]. That would have dire
      effects as it means registers' access to device breaks and further
      read/writes might access incorrect addresses.
      
      Instead, when initializing status blocks acquire/release a PTT
      as part of the flow.
      Signed-off-by: default avatarYuval Mintz <Yuval.Mintz@cavium.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      85750d74