1. 17 10月, 2018 1 次提交
    • R
      qed: Align local and global PTT to propagate through the APIs. · 706d0891
      Rahul Verma 提交于
          Align the use of local PTT to propagate through the qed_mcp* API's.
          Global ptt should not be used.
      
          Register access should be done through layers. Register address is
          mapped into a PTT, PF translation table. Several interface functions
          require a PTT to direct read/write into register. There is a pool of
          PTT maintained, and several PTT are used simultaneously to access
          device registers in different flows. Same PTT should not be used in
          flows that can run concurrently.
          To avoid running out of PTT resources, too many PTT should not be
          acquired without releasing them. Every PF has a global PTT, which is
          used throughout the life of PF, in most important flows for register
          access. Generic functions acquire the PTT locally and release after
          the use. This patch aligns the use of Global PTT and Local PTT
          accordingly.
      Signed-off-by: NRahul Verma <rahul.verma@cavium.com>
      Signed-off-by: NAriel Elior <ariel.elior@cavium.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      706d0891
  2. 27 9月, 2018 2 次提交
  3. 02 8月, 2018 1 次提交
    • Y
      qed: Make some functions static · bf774d14
      YueHaibing 提交于
      Fixes the following sparse warning:
      
      drivers/net/ethernet/qlogic/qed/qed_cxt.c:1534:6: warning: symbol 'qed_cm_init_pf' was not declared. Should it be static?
      drivers/net/ethernet/qlogic/qed/qed_dev.c:233:4: warning: symbol 'qed_init_qm_get_num_tcs' was not declared. Should it be static?
      drivers/net/ethernet/qlogic/qed/qed_dev.c:238:5: warning: symbol 'qed_init_qm_get_num_vfs' was not declared. Should it be static?
      drivers/net/ethernet/qlogic/qed/qed_dev.c:246:5: warning: symbol 'qed_init_qm_get_num_pf_rls' was not declared. Should it be static?
      drivers/net/ethernet/qlogic/qed/qed_dev.c:264:5: warning: symbol 'qed_init_qm_get_num_vports' was not declared. Should it be static?
      drivers/net/ethernet/qlogic/qed/qed_dev.c:276:5: warning: symbol 'qed_init_qm_get_num_pqs' was not declared. Should it be static?
      drivers/net/ethernet/qlogic/qed/qed_mcp.c:573:5: warning: symbol 'qed_mcp_nvm_wr_cmd' was not declared. Should it be static?
      drivers/net/ethernet/qlogic/qed/qed_mcp.c:3012:1: warning: symbol '__qed_mcp_resc_lock' was not declared. Should it be static?
      drivers/net/ethernet/qlogic/qed/qed_dcbx.c:870:6: warning: symbol 'qed_dcbx_aen' was not declared. Should it be static?
      drivers/net/ethernet/qlogic/qed/qed_debug.c:7841:5: warning: symbol 'qed_dbg_nvm_image_length' was not declared. Should it be static?
      drivers/net/ethernet/qlogic/qed/qed_debug.c:7857:5: warning: symbol 'qed_dbg_nvm_image' was not declared. Should it be static?
      drivers/net/ethernet/qlogic/qed/qed_sriov.c:675:6: warning: symbol '_qed_iov_pf_sanity_check' was not declared. Should it be static?
      drivers/net/ethernet/qlogic/qed/qed_sriov.c:690:6: warning: symbol 'qed_iov_pf_sanity_check' was not declared. Should it be static?
      drivers/net/ethernet/qlogic/qed/qed_sriov.c:3982:6: warning: symbol 'qed_iov_pf_get_pending_events' was not declared. Should it be static?
      drivers/net/ethernet/qlogic/qed/qed_vf.c:172:5: warning: symbol '_qed_vf_pf_release' was not declared. Should it be static?
      drivers/net/ethernet/qlogic/qed/qed_rdma.c:137:5: warning: symbol 'qed_rdma_get_sb_id' was not declared. Should it be static?
      drivers/net/ethernet/qlogic/qed/qed_rdma.c:709:5: warning: symbol 'qed_rdma_stop' was not declared. Should it be static?
      drivers/net/ethernet/qlogic/qed/qed_ll2.c:161:6: warning: symbol 'qed_ll2b_complete_rx_packet' was not declared. Should it be static?
      drivers/net/ethernet/qlogic/qed/qed_roce.c:160:6: warning: symbol 'qed_roce_free_cid_pair' was not declared. Should it be static?
      drivers/net/ethernet/qlogic/qed/qed_iwarp.c:380:12: warning: symbol 'iwarp_state_names' was not declared. Should it be static?
      drivers/net/ethernet/qlogic/qed/qed_iwarp.c:946:1: warning: symbol 'qed_iwarp_parse_private_data' was not declared. Should it be static?
      drivers/net/ethernet/qlogic/qed/qed_iwarp.c:971:1: warning: symbol 'qed_iwarp_mpa_reply_arrived' was not declared. Should it be static?
      drivers/net/ethernet/qlogic/qed/qed_iwarp.c:2504:1: warning: symbol 'qed_iwarp_ll2_slowpath' was not declared. Should it be static?
      drivers/net/ethernet/qlogic/qed/qed_iwarp.c:2806:6: warning: symbol 'qed_iwarp_qp_in_error' was not declared. Should it be static?
      drivers/net/ethernet/qlogic/qed/qed_iwarp.c:2827:6: warning: symbol 'qed_iwarp_exception_received' was not declared. Should it be static?
      drivers/net/ethernet/qlogic/qed/qed_iwarp.c:2958:1: warning: symbol 'qed_iwarp_connect_complete' was not declared. Should it be static?
      drivers/net/ethernet/qlogic/qed/qed_iscsi.c:876:6: warning: symbol 'qed_iscsi_free_connection' was not declared. Should it be static?
      Signed-off-by: NYueHaibing <yuehaibing@huawei.com>
      Acked-by: NDenis Bolotin <Denis.Bolotin@cavium.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      bf774d14
  4. 22 7月, 2018 1 次提交
  5. 20 4月, 2018 1 次提交
  6. 27 7月, 2017 2 次提交
  7. 05 6月, 2017 5 次提交
  8. 02 6月, 2017 1 次提交
    • M
      qed: Hold a single array for SBs · 50a20714
      Mintz, Yuval 提交于
      A PF today holds 2 different arrays - one holding information
      about the HW configuration and one holding information about
      the SBs that are used by the protocol drivers.
      These arrays aren't really connected - e.g., protocol driver
      initializing a given SB would not mark the same SB as occupied
      in the HW shadow array.
      
      Move into a single array [at least for PFs] - hold the mapping
      of the driver-protocol SBs on the HW entry which they configure.
      Signed-off-by: NYuval Mintz <Yuval.Mintz@cavium.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      50a20714
  9. 01 5月, 2017 1 次提交
  10. 25 4月, 2017 2 次提交
  11. 22 3月, 2017 1 次提交
  12. 21 2月, 2017 1 次提交
    • 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
  13. 02 1月, 2017 2 次提交
  14. 01 12月, 2016 1 次提交
    • M
      qed*: Handle-based L2-queues. · 3da7a37a
      Mintz, Yuval 提交于
      The driver needs to maintain several FW/HW-indices for each one of
      its queues. Currently, that mapping is done by the QED where it uses
      an rx/tx array of so-called hw-cids, populating them whenever a new
      queue is opened and clearing them upon destruction of said queues.
      
      This maintenance is far from ideal - there's no real reason why
      QED needs to maintain such a data-structure. It becomes even worse
      when considering the fact that the PF's queues and its child VFs' queues
      are all mapped into the same data-structure.
      As a by-product, the set of parameters an interface needs to supply for
      queue APIs is non-trivial, and some of the variables in the API
      structures have different meaning depending on their exact place
      in the configuration flow.
      
      This patch re-organizes the way L2 queues are configured and maintained.
      In short:
        - Required parameters for queue init are now well-defined.
        - Qed would allocate a queue-cid based on parameters.
          Upon initialization success, it would return a handle to caller.
        - Queue-handle would be maintained by entity requesting queue-init,
          not necessarily qed.
        - All further queue-APIs [update, destroy] would use the opaque
          handle as reference for the queue instead of various indices.
      
      The possible owners of such handles:
        - PF queues [qede] - complete handles based on provided configuration.
        - VF queues [qede] - fw-context-less handles, containing only relative
          information; Only the PF-side would need the absolute indices
          for configuration, so they're omitted here.
        - VF queues [qed, PF-side] - complete handles based on VF initialization.
      Signed-off-by: NYuval Mintz <Yuval.Mintz@cavium.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3da7a37a
  15. 01 11月, 2016 1 次提交
  16. 14 10月, 2016 1 次提交
  17. 04 10月, 2016 1 次提交
  18. 10 9月, 2016 1 次提交
    • B
      qed: mark symbols static where possible · ba56947a
      Baoyou Xie 提交于
      We get a few warnings when building kernel with W=1:
      drivers/net/ethernet/qlogic/qed/qed_l2.c:112:5: warning: no previous prototype for 'qed_sp_vport_start' [-Wmissing-prototypes]
      drivers/net/ethernet/qlogic/qed/qed_sriov.c:110:6: warning: no previous prototype for 'qed_iov_is_valid_vfid' [-Wmissing-prototypes]
      drivers/net/ethernet/qlogic/qed/qed_sriov.c:188:5: warning: no previous prototype for 'qed_iov_post_vf_bulletin' [-Wmissing-prototypes]
      drivers/net/ethernet/qlogic/qed/qed_sriov.c:578:6: warning: no previous prototype for 'qed_iov_set_vfs_to_disable' [-Wmissing-prototypes]
      drivers/net/ethernet/qlogic/qed/qed_sriov.c:1135:28: warning: no previous prototype for 'qed_iov_get_public_vf_info' [-Wmissing-prototypes]
      drivers/net/ethernet/qlogic/qed/qed_sriov.c:1148:6: warning: no previous prototype for 'qed_iov_clean_vf' [-Wmissing-prototypes]
      drivers/net/ethernet/qlogic/qed/qed_sriov.c:2444:5: warning: no previous prototype for 'qed_iov_chk_ucast' [-Wmissing-prototypes]
      drivers/net/ethernet/qlogic/qed/qed_sriov.c:2762:5: warning: no previous prototype for 'qed_iov_vf_flr_cleanup' [-Wmissing-prototypes]
      ....
      
      In fact, these functions are only used in the file in which they are
      declared and don't need a declaration, but can be made static.
      so this patch marks these functions with 'static'.
      Signed-off-by: NBaoyou Xie <baoyou.xie@linaro.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ba56947a
  19. 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
  20. 23 8月, 2016 2 次提交
    • Y
      qed: Change locking scheme for VF channel · b0bccb69
      Yuval Mintz 提交于
      Each VF employees a lock that's supposed to serialize its usage of the
      HW channel for communication with its PF, but the critical section is
      ill-defined:
      
        - VFs currently release the lock whenever the PF response arrives,
          prior to actually processing the reply buffer [which was also supposed
          to have been protected by same lock].
      
        - The lock would be released on first response, ignoring the possibilty
          the sw flow isn't over [as might be the case of the acquisition flow].
          As a result, the flow would run unprotected and would cause a double
          mutex release [as the additional message completion would release it
          while its actually already free].
      
      Change the flow to have a dedicated function to be called at end of each
      flow and release the lock.
      Signed-off-by: NYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b0bccb69
    • Y
      qed*: Add support for VFs over legacy PFs · d8c2c7e3
      Yuval Mintz 提交于
      Modern VFs can't run on old non-compatible as the fastpath HSI is
      slightly changed - but as the HSI is actually very close [basically,
      a single bit whose meaning flipped] this can be supported with small
      modifications.
      
      The major differences would be in:
        - Recognizing that VF is running on top of a legacy PF.
        - Returning some slowpath configurations that are no longer needed
          on top of modern PFs, but would be required when working over
          the legacy ones.
      Signed-off-by: NYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d8c2c7e3
  21. 31 7月, 2016 1 次提交
  22. 08 6月, 2016 3 次提交
    • Y
      qed: Move doorbell calculation from VF to PF · 5040acf5
      Yuval Mintz 提交于
      Today, the VF is aware of its queues context-ids, and calculates the
      doorbell address when opening its queues on its own.
      The configuration of doorbells in HW can sometime in the future be changed
      by the PF [hw has several configurable features that might affect doorbell
      addresses, e.g., dpm support], this would break compatibility with older
      VFs as their calculated doorbell addresses would be incorrect for such a
      configuration.
      
      In order to avoid such a backward compatibility failure, let the PF make
      the calculation of the doorbell offset based on the context-id, and pass
      that to the VF.
      Signed-off-by: NYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5040acf5
    • Y
      qed: PF-VF resource negotiation · 1cf2b1a9
      Yuval Mintz 提交于
      One of the goals of the vf's first message to the PF [acquire]
      is to learn about the number of resources available to it [macs, vlans,
      etc.]. This is done via negotiation - the VF requires a set of resources,
      which the PF either approves or disaproves and sends a smaller set of
      resources as alternative. In this later case, the VF is then expected to
      either abort the probe or re-send the acquire message with less
      required resources.
      
      While this infrastructure exists since the initial submision of qed
      SRIOV support, it's in fact completely inoperational - PF isn't really
      looking into the resources the VF has asked for and is never going to
      reply to the VF that it lacks resources.
      
      This patch addresses this flow, fixing it and allowing the PF and VF
      to actually agree on a set of resources.
      Signed-off-by: NYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1cf2b1a9
    • Y
      qed: Relax VF firmware requirements · 1fe614d1
      Yuval Mintz 提交于
      Current driver require an exact match between VF and PF storm firmware;
      Any difference would fail the VF acquire message, causing the VF probe
      to be aborted.
      
      While there's still dependencies between the two, the recent FW submission
      has relaxed the match requirement - instead of an exact match, there's now
      a 'fastpath' HSI major/minor scheme, where VFs and PFs that match in their
      major number can co-exist even if their minor is different.
      
      In order to accomadate this change some changes in the vf-start init flow
      had to be made, as the VF start ramrod now has to be sent only after PF
      learns which fastpath HSI its VF is requiring.
      Signed-off-by: NYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1fe614d1
  23. 12 5月, 2016 7 次提交
    • Y
      qed*: Tx-switching configuration · 831bfb0e
      Yuval Mintz 提交于
      Device should be configured by default to VEB once VFs are active.
      This changes the configuration of both PFs' and VFs' vports into enabling
      tx-switching once sriov is enabled.
      Signed-off-by: NYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      831bfb0e
    • Y
      qed*: Support forced MAC · eff16960
      Yuval Mintz 提交于
      Allows the PF to enforce the VF's mac.
      i.e., by using `ip link ... vf <x> mac <value>'.
      
      While a MAC is forced, PF would prevent the VF from configuring any other
      MAC.
      Signed-off-by: NYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      eff16960
    • Y
      qed*: Support PVID configuration · 08feecd7
      Yuval Mintz 提交于
      This adds support for PF control over the VF vlan configuration.
      I.e., `ip link ... vf <x> vlan <vid>' should now be supported.
      
       1. <vid> != 0 => VF receives [unknowingly] only traffic tagged by
          <vid> and tags all outgoing traffic sent by VF with <vid>.
       2. <vid> == 0 ==> Remove the pvid configuration, reverting to previous.
      Signed-off-by: NYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      08feecd7
    • Y
      qed: Align TLVs · 17b235c1
      Yuval Mintz 提交于
      As the VF infrastructure is supposed to offer backward/forward
      compatibility, the various types associated with VF<->PF communication
      should be aligned across all various platforms that support IOV
      on our family of adapters.
      
      This adds a couple of currently missing values, specifically aligning
      the enum for the various TLVs possible in the communication between them.
      
      It then adds the PF implementation for some of those missing VF requests.
      This support isn't really necessary for the Linux VF as those VFs aren't
      requiring it [at least today], but are required by VFs running on other
      OSes. LRO is an example of one such configuration.
      Signed-off-by: NYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      17b235c1
    • Y
      qed: Bulletin and Link · 36558c3d
      Yuval Mintz 提交于
      Up to this point, VF and PF communication always originates from VF.
      As a result, VF cannot be notified of any async changes, and specifically
      cannot be informed of the current link state.
      
      This introduces the bulletin board, the mechanism through which the PF
      is going to communicate async notifications back to the VF. basically,
      it's a well-defined structure agreed by both PF and VF which the VF would
      continuously poll and into which the PF would DMA messages when needed.
      [Bulletin board is actually allocated and communicated in previous patches
      but never before used]
      
      Based on the bulletin infrastructure, the VF can query its link status
      and receive said async carrier changes.
      Signed-off-by: NYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      36558c3d
    • Y
      qed: IOV l2 functionality · dacd88d6
      Yuval Mintz 提交于
      This adds sufficient changes to allow VFs l2-configuration flows to work.
      
      While the fastpath of the VF and the PF are meant to be exactly the same,
      the configuration of the VF is done by the PF.
      This diverges all VF-related configuration flows that originate from a VF,
      making them pass through the VF->PF channel and adding sufficient logic
      on the PF side to support them.
      Signed-off-by: NYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      dacd88d6
    • Y
      qed: IOV configure and FLR · 0b55e27d
      Yuval Mintz 提交于
      While previous patches have already added the necessary logic to probe
      VFs as well as enabling them in the HW, this patch adds the ability to
      support VF FLR & SRIOV disable.
      
      It then wraps both flows together into the first IOV callback to be
      provided to the protocol driver - `configure'. This would later to be used
      to enable and disable SRIOV in the adapter.
      Signed-off-by: NYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0b55e27d