1. 25 8月, 2017 3 次提交
  2. 24 7月, 2017 6 次提交
    • P
      IB/mlx5: Expose extended error counters · 58dcb60a
      Parav Pandit 提交于
      This patch adds below requester and responder side error counters,
      which will be exposed by hardware counters interface and are supported
      as part of query Q counters command extension.
      
       +---------------------------+-------------------------------------+
       |      Name                 |           Description               |
       |---------------------------+-------------------------------------|
       |resp_local_length_error    | Number of times responder detected  |
       |                           | local length errors                 |
       |---------------------------+-------------------------------------|
       |resp_cqe_error             | Number of CQEs completed with error |
       |                           | at responder                        |
       |---------------------------+-------------------------------------|
       |req_cqe_error              | Number of CQEs completed with error |
       |                           | at requester                        |
       |---------------------------+-------------------------------------|
       |req_remote_invalid_request | Number of times requester detected  |
       |                           | remote invalid request error        |
       |---------------------------+-------------------------------------|
       |req_remote_access_error    | Number of times requester detected  |
       |                           | remote access error                 |
       |---------------------------+-------------------------------------|
       |resp_remote_access_error   | Number of times responder detected  |
       |                           | remote access error                 |
       |---------------------------+-------------------------------------|
       |resp_cqe_flush_error       | Number of CQEs completed with       |
       |                           | flushed with error at responder     |
       |---------------------------+-------------------------------------|
       |req_cqe_flush_error        | Number of CQEs completed with       |
       |                           | flushed with error at requester     |
       +---------------------------+-------------------------------------+
      Signed-off-by: NParav Pandit <parav@mellanox.com>
      Reviewed-by: NDaniel Jurgens <danielj@mellanox.com>
      Reviewed-by: NEli Cohen <eli@mellanox.com>
      Signed-off-by: NLeon Romanovsky <leon@kernel.org>
      Signed-off-by: NDoug Ledford <dledford@redhat.com>
      58dcb60a
    • M
      IB/mlx5: Add support to dropless RQ · 03404e8a
      Maor Gottlieb 提交于
      RQs that were configured for "delay drop" will prevent packet drops
      when their WQEs are depleted.
      Marking an RQ to be drop-less is done by setting delay_drop_en in RQ
      context using CREATE_RQ command.
      
      Since this feature is globally activated/deactivated by using the
      SET_DELAY_DROP command on all the marked RQs, we activated/deactivated
      it according to the number of RQs with 'delay_drop' enabled.
      
      When timeout is expired, then the feature is deactivated. Therefore
      the driver handles the delay drop timeout event and reactivate it.
      Signed-off-by: NMaor Gottlieb <maorg@mellanox.com>
      Reviewed-by: NYishai Hadas <yishaih@mellanox.com>
      Signed-off-by: NLeon Romanovsky <leon@kernel.org>
      Signed-off-by: NDoug Ledford <dledford@redhat.com>
      03404e8a
    • M
      net/mlx5: Introduce general notification event · 246ac981
      Maor Gottlieb 提交于
      When delay drop timeout is expired, the firmware raises
      general notification event of DELAY_DROP_TIMEOUT subtype.
      In addition the feature is disable so the driver have to
      reactivate the timeout.
      Signed-off-by: NMaor Gottlieb <maorg@mellanox.com>
      Reviewed-by: NYishai Hadas <yishaih@mellanox.com>
      Signed-off-by: NLeon Romanovsky <leon@kernel.org>
      Signed-off-by: NDoug Ledford <dledford@redhat.com>
      246ac981
    • M
      net/mlx5: Introduce set delay drop command · c1e0bfc1
      Maor Gottlieb 提交于
      Add support to SET_DELAY_DROP command.
      
      This command will be used in downstream patches for delay packet drop.
      The timeout value should be indicated by delay_drop_timeout field.
      Packet processing will be delayed till timeout value passed or until
      more WQEs are posted.
      
      Setting this value to 0 disables the feature.
      Signed-off-by: NMaor Gottlieb <maorg@mellanox.com>
      Reviewed-by: NYishai Hadas <yishaih@mellanox.com>
      Signed-off-by: NLeon Romanovsky <leon@kernel.org>
      Signed-off-by: NDoug Ledford <dledford@redhat.com>
      c1e0bfc1
    • P
      IB/mlx5: Add debug control parameters for congestion control · 4a2da0b8
      Parav Pandit 提交于
      This patch adds debug control parameters for congestion control which
      can be read or written through debugfs. They are for reaction point and
      notification point nodes.
      
      These control parameters are as below:
       +------------------------------+-----------------------------------------+
       |      Name                    |           Description                   |
       |------------------------------+-----------------------------------------|
       |rp_clamp_tgt_rate             | When set target rate is updated to      |
       |                              | current rate                            |
       |------------------------------+-----------------------------------------|
       |rp_clamp_tgt_rate_ati         | When set update target rate based on    |
       |                              | timer as well                           |
       |------------------------------+-----------------------------------------|
       |rp_time_reset                 | time between rate increase if no        |
       |                              | CNP is received unit in usec            |
       |------------------------------+-----------------------------------------|
       |rp_byte_reset                 | Number of bytes between rate inease if  |
       |                              | no CNP is received                      |
       |------------------------------+-----------------------------------------|
       |rp_threshold                  | Threshold for reaction point rate       |
       |                              | control                                 |
       |------------------------------+-----------------------------------------|
       |rp_ai_rate                    | Rate for target rate, unit in Mbps      |
       |------------------------------+-----------------------------------------|
       |rp_hai_rate                   | Rate for hyper increase state           |
       |                              | unit in Mbps                            |
       |------------------------------+-----------------------------------------|
       |rp_min_dec_fac                | Minimum factor by which the current     |
       |                              | transmit rate can be changed when       |
       |                              | processing a CNP, unit is percerntage   |
       |------------------------------+-----------------------------------------|
       |rp_min_rate                   | Minimum value for rate limit,           |
       |                              | unit in Mbps                            |
       |------------------------------+-----------------------------------------|
       |rp_rate_to_set_on_first_cnp   | Rate that is set when first CNP is      |
       |                              | received, unit is Mbps                  |
       |------------------------------+-----------------------------------------|
       |rp_dce_tcp_g                  | Used to calculate alpha                 |
       |------------------------------+-----------------------------------------|
       |rp_dce_tcp_rtt                | Time between updates of alpha value,    |
       |                              | unit is usec                            |
       |------------------------------+-----------------------------------------|
       |rp_rate_reduce_monitor_period | Minimum time between consecutive rate   |
       |                              | reductions                              |
       |------------------------------+-----------------------------------------|
       |rp_initial_alpha_value        | Initial value of alpha                  |
       |------------------------------+-----------------------------------------|
       |rp_gd                         | When CNP is received, flow rate is      |
       |                              | reduced based on gd, rp_gd is given as  |
       |                              | log2(rp_gd)                             |
       |------------------------------+-----------------------------------------|
       |np_cnp_dscp                   | dscp code point for generated cnp       |
       |------------------------------+-----------------------------------------|
       |np_cnp_prio_mode              | 802.1p priority for generated cnp       |
       |------------------------------+-----------------------------------------|
       |np_cnp_prio                   | cnp priority mode                       |
       +------------------------------+-----------------------------------------+
      Signed-off-by: NParav Pandit <parav@mellanox.com>
      Reviewed-by: NDaniel Jurgens <danielj@mellanox.com>
      Reviewed-by: NEli Cohen <eli@mellanox.com>
      Signed-off-by: NLeon Romanovsky <leon@kernel.org>
      Signed-off-by: NDoug Ledford <dledford@redhat.com>
      4a2da0b8
    • H
      net/mlx5: Add raw ethernet local loopback firmware command · bded747b
      Huy Nguyen 提交于
      Add support for raw ethernet local loopback firmware command.
      Signed-off-by: NHuy Nguyen <huyn@mellanox.com>
      Reviewed-by: NDaniel Jurgens <danielj@mellanox.com>
      Signed-off-by: NLeon Romanovsky <leon@kernel.org>
      Signed-off-by: NDoug Ledford <dledford@redhat.com>
      bded747b
  3. 27 6月, 2017 3 次提交
    • I
      net/mlx5e: IPSec, Innova IPSec offload infrastructure · 547eede0
      Ilan Tayari 提交于
      Add Innova IPSec ESP crypto offload configuration paths.
      Detect Innova IPSec device and set the NETIF_F_HW_ESP flag.
      Configure Security Associations using the API introduced in a previous
      patch.
      
      Add Software-parser hardware descriptor layout
      Software-Parser (swp) is a hardware feature in ConnectX which allows the
      host software to specify protocol header offsets in the TX path, thus
      overriding the hardware parser.
      This is useful for protocols that the ASIC may not be able to parse on
      its own.
      
      Note that due to inline metadata, XDP is not supported in Innova IPSec.
      Signed-off-by: NIlan Tayari <ilant@mellanox.com>
      Signed-off-by: NYossi Kuperman <yossiku@mellanox.com>
      Signed-off-by: NYevgeny Kliteynik <kliteyn@mellanox.com>
      Signed-off-by: NBoris Pismenny <borisp@mellanox.com>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      547eede0
    • I
      net/mlx5: FPGA, Add SBU infrastructure · a9956d35
      Ilan Tayari 提交于
      Add interface to initialize and interact with Innova FPGA SBU
      connections.
      A client driver may use these functions to set up a high-speed DMA
      connection with its SBU hardware logic, and send/receive messages
      over this connection.
      
      A later patch in this patchset will make use of these functions for
      Innova IPSec offload in mlx5 Ethernet driver.
      
      Add commands to retrieve Innova FPGA SBU capabilities, and to
      read/write Innova FPGA configuration space registers and memory,
      over internal I2C.
      
      At high level, the FPGA configuration space is divided such:
       0x00000000 - 0x007fffff is reserved for the SBU
       0x00800000 - 0xffffffff is reserved for the Shell
      0x400000000 - ...        is DDR memory
      
      A later patchset will add support for accessing FPGA CrSpace and memory
      over a high-speed connection. This is the reason for the ACCESS_TYPE
      enumeration, which currently only supports I2C.
      Signed-off-by: NIlan Tayari <ilant@mellanox.com>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      a9956d35
    • I
      net/mlx5: FPGA, Add FW commands for FPGA QPs · 6062118d
      Ilan Tayari 提交于
      The FPGA QP is a high-bandwidth communication channel between the host
      CPU and the FPGA device. It allows performing DMA operations between
      host memory and the FPGA logic via the ConnectX chip.
      
      Add ConnectX FW commands which create and manipulate FPGA QPs.
      Signed-off-by: NIlan Tayari <ilant@mellanox.com>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      6062118d
  4. 22 6月, 2017 5 次提交
  5. 16 6月, 2017 2 次提交
  6. 08 6月, 2017 2 次提交
  7. 02 6月, 2017 1 次提交
  8. 14 5月, 2017 1 次提交
    • I
      net/mlx5: FPGA, Add basic support for Innova · e29341fb
      Ilan Tayari 提交于
      Mellanox Innova is a NIC with ConnectX and an FPGA on the same
      board. The FPGA is a bump-on-the-wire and thus affects operation of
      the mlx5_core driver on the ConnectX ASIC.
      
      Add basic support for Innova in mlx5_core.
      
      This allows using the Innova card as a regular NIC, by detecting
      the FPGA capability bit, and verifying its load state before
      initializing ConnectX interfaces.
      
      Also detect FPGA fatal runtime failures and enter error state if
      they ever happen.
      
      All new FPGA-related logic is placed in its own subdirectory 'fpga',
      which may be built by selecting CONFIG_MLX5_FPGA.
      This prepares for further support of various Innova features in later
      patchsets.
      Additional details about hardware architecture will be provided as
      more features get submitted.
      Signed-off-by: NIlan Tayari <ilant@mellanox.com>
      Reviewed-by: NBoris Pismenny <borisp@mellanox.com>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      e29341fb
  9. 02 5月, 2017 1 次提交
  10. 22 4月, 2017 2 次提交
    • P
      IB/mlx5: Support congestion related counters · e1f24a79
      Parav Pandit 提交于
      This patch adds support to query the congestion related hardware counters
      through new command and links them with other hw counters being available
      in hw_counters sysfs location.
      
      In order to reuse existing infrastructure it renames related q_counter
      data structures to more generic counters to reflect q_counters and
      congestion counters and maybe some other counters in the future.
      
      New hardware counters:
       * rp_cnp_handled - CNP packets handled by the reaction point
       * rp_cnp_ignored - CNP packets ignored by the reaction point
       * np_cnp_sent    - CNP packets sent by notification point to respond to
                           CE marked RoCE packets
       * np_ecn_marked_roce_packets - CE marked RoCE packets received by
                                      notification point
      
      It also avoids returning ENOSYS which is specific for invalid
      system call and produces the following checkpatch.pl warning.
      
      WARNING: ENOSYS means 'invalid syscall nr' and nothing else
      +		return -ENOSYS;
      Signed-off-by: NParav Pandit <parav@mellanox.com>
      Reviewed-by: NEli Cohen <eli@mellanox.com>
      Reviewed-by: NDaniel Jurgens <danielj@mellanox.com>
      Signed-off-by: NLeon Romanovsky <leon@kernel.org>
      Signed-off-by: NDoug Ledford <dledford@redhat.com>
      e1f24a79
    • A
      IB/mlx5: Use IP version matching to classify IP traffic · 19cc7524
      Ariel Levkovich 提交于
      This change adds the ability for flow steering to classify IPv4/6
      packets with MPLS tag (Ethertype 0x8847 and 0x8848) as standard IP
      packets and hit IPv4/6 classifed steering rules.
      
      When user added a flow rule with IP classification, driver was
      implicitly adding ethertype matching to the created rule in order
      to distinguish between IPv4 and IPv6 protocols.
      Since IP packets with MPLS tag header have MPLS ethertype, they missed
      the rule and ended up hitting the default filters.
      Such behavior prevented from MPLS packets to undergo inbound traffic
      load balancing flows (if such were defined by configuring RSS) to
      achieve higher throughput - the way that non-MPLS IP packets performed.
      
      Since our device is able to look past the MPLS tag and identify the
      next protocol we introduce this solution which replaces Ethertype
      matching by the device's capability to perform IP version parsing
      and matching in order to distinguish between IPv4 and IPv6.
      Therefore, whenever a flow with IP spec is added and device support IP
      version matching, driver will implicitly add IP version matching to the
      rule (Based on the IP spec type) without Ethertype matching which will
      cause relevant MPLS tagged packets to hit this rule as well.
      Otherwise (device doesn't support IP version matching), we fall back to
      setting Ethertype matching.
      
      If the user's filters specify an L2 ethertype and an IP spec
      the rule will then match both the ethertype and the IP version.
      
      The device's support for IP version matching is reported by the
      device via dedicated capability bit in query_device_cap and named
      outer/inner_ip_version.
      Signed-off-by: NAriel Levkovich <lariel@mellanox.com>
      Signed-off-by: NLeon Romanovsky <leon@kernel.org>
      Signed-off-by: NDoug Ledford <dledford@redhat.com>
      19cc7524
  11. 17 4月, 2017 1 次提交
  12. 07 4月, 2017 1 次提交
  13. 28 3月, 2017 1 次提交
  14. 15 2月, 2017 1 次提交
  15. 07 2月, 2017 2 次提交
    • S
      net/mlx5: TX WQE update · 2b31f7ae
      Saeed Mahameed 提交于
      Add new TX WQE fields for Connect-X5 vlan insertion support,
      type and vlan_tci, when type = MLX5_ETH_WQE_INSERT_VLAN the
      HW will insert the vlan and prio fields (vlan_tci) to the packet.
      
      Those bits and the inline header fields are mutually exclusive, and
      valid only when:
      MLX5_CAP_ETH(mdev, wqe_inline_mode) == MLX5_CAP_INLINE_MODE_NOT_REQUIRED
      and MLX5_CAP_ETH(mdev, wqe_vlan_insert),
      who will be set in ConnectX-5 and later HW generations.
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      Reviewed-by: NTariq Toukan <tariqt@mellanox.com>
      2b31f7ae
    • D
      net/mlx5: Configure cache line size for start and end padding · f32f5bd2
      Daniel Jurgens 提交于
      There is a hardware feature that will pad the start or end of a DMA to
      be cache line aligned to avoid RMWs on the last cache line. The default
      cache line size setting for this feature is 64B. This change configures
      the hardware to use 128B alignment on systems with 128B cache lines.
      
      In addition we lower bound MPWRQ stride by HCA cacheline in mlx5e,
      MPWRQ stride should be at least the HCA cacheline, the current default
      is 64B and in case HCA_CAP.cach_line_128byte capability is set, MPWRQ RX
      stride will automatically be aligned to 128B.
      Signed-off-by: NDaniel Jurgens <danielj@mellanox.com>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      f32f5bd2
  16. 25 1月, 2017 1 次提交
  17. 20 1月, 2017 5 次提交
  18. 08 1月, 2017 1 次提交
    • E
      net/mlx5: Introduce blue flame register allocator · a6d51b68
      Eli Cohen 提交于
      Here is an implementation of an allocator that allocates blue flame
      registers. A blue flame register is used for generating send doorbells.
      A blue flame register can be used to generate either a regular doorbell
      or a blue flame doorbell where the data to be sent is written to the
      device's I/O memory hence saving the need to read the data from memory.
      For blue flame kind of doorbells to succeed, the blue flame register
      need to be mapped as write combining. The user can specify what kind of
      send doorbells she wishes to use. If she requested write combining
      mapping but that failed, the allocator will fall back to non write
      combining mapping and will indicate that to the user.
      Subsequent patches in this series will make use of this allocator.
      Signed-off-by: NEli Cohen <eli@mellanox.com>
      Reviewed-by: NMatan Barak <matanb@mellanox.com>
      Signed-off-by: NLeon Romanovsky <leon@kernel.org>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      a6d51b68
  19. 03 1月, 2017 1 次提交