1. 25 4月, 2017 2 次提交
  2. 18 4月, 2017 1 次提交
  3. 07 4月, 2017 2 次提交
  4. 04 4月, 2017 1 次提交
  5. 29 3月, 2017 3 次提交
    • T
      qed: Move to new load request scheme · 5d24bcf1
      Tomer Tayar 提交于
      Management firmware is used as an arbiter between the various PFs
      in regard to loading - it causes the various PFs to load/unload
      sequentially and informs each of its appropriate rule in the init.
      
      But the existing flow is too weak to handle some scenarios where
      PFs aren't properly cleaned prior to loading.
      The significant scenarios falling under this criteria:
        a. Preboot drivers in some environment can't properly unload.
        b. Unexpected driver replacement [kdump, PDA].
      
      Modern management firmware supports a more intricate loading flow,
      where the driver has the ability to overcome previous limitations.
      This moves qed into using this newer scheme.
      
      Notice new scheme is backward compatible, so new drivers would
      still be able to load properly on top of older management firmwares
      and vice versa.
      Signed-off-by: NTomer Tayar <Tomer.Tayar@cavium.com>
      Signed-off-by: NYuval Mintz <Yuval.Mintz@cavium.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5d24bcf1
    • M
      qed: hw_init() to receive parameter-struct · c0c2d0b4
      Mintz, Yuval 提交于
      We'll soon need additional information, so start by changing
      the infrastructure to receive the initializing variables
      via a parameter struct.
      Signed-off-by: NYuval Mintz <Yuval.Mintz@cavium.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c0c2d0b4
    • T
      qed: Correct HW stop flow · 1226337a
      Tomer Tayar 提交于
      Management firmware is used as arbiter between different PFs
      which are loading/unloading, but in order to use the synchronization
      it offers the contending configurations need to be applied either
      between their LOAD_REQ <-> LOAD_DONE or UNLOAD_REQ <-> UNLOAD_DONE
      management firmware commands.
      
      Existing HW stop flow utilizes 2 different functions: qed_hw_stop() and
      qed_hw_reset() which don't abide this requirement; Most of the closure
      is doing outside the scope of the unload request.
      
      This patch removes qed_hw_reset() and places the relevant stop
      functionality underneath the management firmware protection.
      Signed-off-by: NTomer Tayar <Tomer.Tayar@cavium.com>
      Signed-off-by: NYuval Mintz <Yuval.Mintz@cavium.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1226337a
  6. 15 3月, 2017 1 次提交
  7. 21 2月, 2017 2 次提交
    • M
      qed*: Fix link indication race · 65ed2ffd
      Mintz, Yuval 提交于
      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: NYuval Mintz <Yuval.Mintz@cavium.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      65ed2ffd
    • M
      qed: Don't allocate SBs using main PTT · 85750d74
      Mintz, Yuval 提交于
      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: NYuval Mintz <Yuval.Mintz@cavium.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      85750d74
  8. 20 2月, 2017 1 次提交
  9. 16 2月, 2017 1 次提交
  10. 02 1月, 2017 2 次提交
    • M
      qed*: Change maximal number of queues · e1d32acb
      Mintz, Yuval 提交于
      Today qede requests contexts that would suffice for 64 'whole'
      combined queues [192 meant for 64 rx, tx and xdp tx queues],
      but registers netdev and limits the number of queues based on
      information received by qed. In turn, qed doesn't take context
      into account when informing qede how many queues it can support.
      
      This would lead to a configuration problem in case user tries
      configuring >64 combined queues to interface [or >96 in case
      xdp isn't enabled]. Since we don't have a mangement firware
      that actually provides so many interrupt lines to a single
      device we're currently safe but that's about to change soon.
      
      The new maximum is hence changed:
        - For RoCE devices, the limit would remain 64.
        - For non-RoCE devices, the limit might be higher [depending
          on the actual configuration of the device].
      qed would start enforcing that limit in both scenarios.
      Signed-off-by: NYuval Mintz <Yuval.Mintz@cavium.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e1d32acb
    • M
      qed*: Update to dual-license · e8f1cb50
      Mintz, Yuval 提交于
      Since the submission of the qedr driver, there's inconsistency
      in the licensing of the various qed/qede files - some are GPLv2
      and some are dual-license.
      Since qedr requires dual-license and it's dependent on both,
      we're updating the licensing of all qed/qede source files.
      Signed-off-by: NYuval Mintz <Yuval.Mintz@cavium.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e8f1cb50
  11. 11 11月, 2016 1 次提交
  12. 01 11月, 2016 3 次提交
  13. 23 10月, 2016 1 次提交
  14. 14 10月, 2016 2 次提交
  15. 04 10月, 2016 2 次提交
  16. 08 9月, 2016 2 次提交
  17. 07 9月, 2016 1 次提交
    • J
      qed: Remove OOM messages · 2591c280
      Joe Perches 提交于
      These messages are unnecessary as OOM allocation failures already do
      a dump_stack() giving more or less the same information.
      
      $ size drivers/net/ethernet/qlogic/qed/built-in.o* (defconfig x86-64)
         text	   data	    bss	    dec	    hex	filename
       127817	  27969	  32800	 188586	  2e0aa	drivers/net/ethernet/qlogic/qed/built-in.o.new
       132474	  27969	  32800	 193243	  2f2db	drivers/net/ethernet/qlogic/qed/built-in.o.old
      
      Miscellanea:
      
      o Change allocs to the generally preferred forms where possible.
      Signed-off-by: NJoe Perches <joe@perches.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2591c280
  18. 19 8月, 2016 1 次提交
  19. 16 8月, 2016 2 次提交
  20. 11 8月, 2016 1 次提交
  21. 02 8月, 2016 1 次提交
  22. 24 6月, 2016 1 次提交
  23. 20 6月, 2016 1 次提交
  24. 04 6月, 2016 1 次提交
  25. 03 6月, 2016 1 次提交
    • Y
      qed: Utilize FW 8.10.3.0 · 351a4ded
      Yuval Mintz 提交于
      The New QED firmware contains several fixes, including:
        - Wrong classification of packets in 4-port devices.
        - Anti-spoof interoperability with encapsulated packets.
        - Tx-switching of encapsulated packets.
      It also slightly improves Tx performance of the device.
      
      In addition, this firmware contains the necessary logic for
      supporting iscsi & rdma, for which we plan on pushing protocol
      drivers in the imminent future.
      Signed-off-by: NYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      351a4ded
  26. 02 6月, 2016 1 次提交
    • A
      qed: fix qed_fill_link() error handling · 14b84e86
      Arnd Bergmann 提交于
      gcc warns about qed_fill_link possibly accessing uninitialized data:
      
      drivers/net/ethernet/qlogic/qed/qed_main.c: In function 'qed_fill_link':
      drivers/net/ethernet/qlogic/qed/qed_main.c:1170:35: error: 'link_caps' may be used uninitialized in this function [-Werror=maybe-uninitialized]
      
      While this warning is only about the specific case of CONFIG_QED_SRIOV
      being disabled but the function getting called for a VF (which should
      never happen), another possibility is that qed_mcp_get_*() fails without
      returning data.
      
      This rearranges the code so we bail out in either of the two cases
      and print a warning instead of accessing the uninitialized data.
      
      The qed_link_output structure remains untouched in this case, but
      all callers first call memset() on it, so at least we are not leaking
      stack data then.
      
      As discussed, we also use a compile-time check to ensure we never
      use any of the VF code if CONFIG_QED_SRIOV is disabled, and the
      PCI device table is updated to no longer bind to virtual functions
      in that configuration.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Acked-by: NYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      14b84e86
  27. 27 5月, 2016 1 次提交
  28. 18 5月, 2016 1 次提交