1. 18 5月, 2022 1 次提交
    • E
      net/mlx5: Support multiport eswitch mode · 94db3317
      Eli Cohen 提交于
      Multiport eswitch mode is a LAG mode that allows to add rules that
      forward traffic to a specific physical port without being affected by LAG
      affinity configuration.
      
      This mode of operation is mutual exclusive with the other LAG modes used
      by multipath and bonding.
      
      To make the transition between the modes, we maintain a counter on the
      number of rules specifying one of the uplink representors as the target
      of mirred egress redirect action.
      
      An example of such rule would be:
      
      $ tc filter add dev enp8s0f0_0 prot all root flower dst_mac \
        00:11:22:33:44:55 action mirred egress redirect dev enp8s0f0
      
      If the reference count just grows to one and LAG is not in use, we
      create the LAG in multiport eswitch mode. Other mode changes are not
      allowed while in this mode. When the reference count reaches zero, we
      destroy the LAG and let other modes be used if needed.
      
      logic also changed such that if forwarding to some uplink destination
      cannot be guaranteed, we fail the operation so the rule will eventually
      be in software and not in hardware.
      Signed-off-by: NEli Cohen <elic@nvidia.com>
      Reviewed-by: NMark Bloch <mbloch@nvidia.com>
      Signed-off-by: NSaeed Mahameed <saeedm@nvidia.com>
      94db3317
  2. 04 5月, 2022 1 次提交
  3. 03 5月, 2022 1 次提交
  4. 11 3月, 2022 2 次提交
  5. 10 3月, 2022 5 次提交
  6. 27 2月, 2022 1 次提交
  7. 24 2月, 2022 1 次提交
  8. 28 1月, 2022 1 次提交
  9. 31 12月, 2021 4 次提交
  10. 16 12月, 2021 1 次提交
  11. 01 12月, 2021 1 次提交
  12. 27 10月, 2021 4 次提交
    • K
      net/mlx5e: Rename TIR lro functions to TIR packet merge functions · eaee12f0
      Khalid Manaa 提交于
      This series introduces new packet merge type, therefore rename lro
      functions to packet merge to support the new merge type:
      - Generalize + rename mlx5e_build_tir_ctx_lro to
        mlx5e_build_tir_ctx_packet_merge.
      - Rename mlx5e_modify_tirs_lro to mlx5e_modify_tirs_packet_merge.
      - Rename lro bit in mlx5_ifc_modify_tir_bitmask_bits to packet_merge.
      - Rename lro_en in mlx5e_params to packet_merge_type type and combine
        packet_merge params into one struct mlx5e_packet_merge_param.
      Signed-off-by: NKhalid Manaa <khalidm@nvidia.com>
      Signed-off-by: NBen Ben-Ishay <benishay@nvidia.com>
      Reviewed-by: NTariq Toukan <tariqt@nvidia.com>
      Signed-off-by: NSaeed Mahameed <saeedm@nvidia.com>
      eaee12f0
    • B
      net/mlx5: Add SHAMPO caps, HW bits and enumerations · 7025329d
      Ben Ben-Ishay 提交于
      This commit adds SHAMPO bit to hca_cap and SHAMPO capabilities structure,
      SHAMPO related HW spec hardware fields and enumerations.
      SHAMPO stands for: split headers and merge payload offload.
      SHAMPO new fields:
      WQ:
       - headers_mkey: mkey that represents the headers buffer, where the packets
         headers will be written by the HW.
      
       - shampo_enable: flag to verify if the WQ supports SHAMPO feature.
      
       - log_reservation_size: the log of the reservation size where the data of
         the packet will be written by the HW.
      
       - log_max_num_of_packets_per_reservation: log of the maximum number of
         packets that can be written to the same reservation.
      
       - log_headers_entry_size: log of the header entry size of the headers buffer.
      
       - log_headers_buffer_entry_num: log of the entries number of the headers buffer.
      
      RQ:
       - shampo_no_match_alignment_granularity: the HW alignment granularity
         in case the received packet doesn't match the current session.
      
       - shampo_match_criteria_type: the type of match criteria.
      
       - reservation_timeout: the maximum time that the HW will hold the
         reservation.
      
      mlx5_ifc_shampo_cap_bits, the capabilities of the SHAMPO feature:
       - shampo_log_max_reservation_size: the maximum allowed value of the field
         WQ.log_reservation_size.
      
       - log_reservation_size: the minimum allowed value of the field
         WQ.log_reservation_size.
      
       - shampo_min_mss_size: the minimum payload size of packet that can open
         a new session or be merged to a session.
      
       - shampo_max_log_headers_entry_size: the maximum allowed value of the field
         WQ.log_headers_entry_size
      Signed-off-by: NBen Ben-Ishay <benishay@nvidia.com>
      Reviewed-by: NTariq Toukan <tariqt@nvidia.com>
      Signed-off-by: NSaeed Mahameed <saeedm@nvidia.com>
      7025329d
    • B
      net/mlx5e: Rename lro_timeout to packet_merge_timeout · 50f477fe
      Ben Ben-Ishay 提交于
      TIR stands for transport interface receive, the TIR object is
      responsible for performing all transport related operations on
      the receive side like packet processing, demultiplexing the packets
      to different RQ's, etc.
      lro_timeout is a field in the TIR that is used to set the timeout for lro
      session, this series introduces new packet merge type, therefore rename
      lro_timeout to packet_merge_timeout for all packet merge types.
      Signed-off-by: NBen Ben-Ishay <benishay@nvidia.com>
      Reviewed-by: NTariq Toukan <tariqt@nvidia.com>
      Signed-off-by: NSaeed Mahameed <saeedm@nvidia.com>
      50f477fe
    • J
      net/mlx5: remove the recent devlink params · 6b367174
      Jakub Kicinski 提交于
      revert commit 46ae40b9 ("net/mlx5: Let user configure io_eq_size param")
      revert commit a6cb08da ("net/mlx5: Let user configure event_eq_size param")
      revert commit 55460406 ("net/mlx5: Let user configure max_macs param")
      
      The EQE parameters are applicable to more drivers, they should
      be configured via standard API, probably ethtool. Example of
      another driver needing something similar:
      
      https://lore.kernel.org/all/1633454136-14679-3-git-send-email-sbhatta@marvell.com/
      
      The last param for "max_macs" is probably fine but the documentation
      is severely lacking. The meaning and implications for changing the
      param need to be stated.
      
      Link: https://lore.kernel.org/r/20211026152939.3125950-1-kuba@kernel.orgSigned-off-by: NJakub Kicinski <kuba@kernel.org>
      6b367174
  13. 26 10月, 2021 3 次提交
    • S
      net/mlx5: Let user configure max_macs param · 55460406
      Shay Drory 提交于
      Currently, max_macs is taking 70Kbytes of memory per function. This
      size is not needed in all use cases, and is critical with large scale.
      Hence, allow user to configure the number of max_macs.
      
      For example, to reduce the number of max_macs to 1, execute::
      $ devlink dev param set pci/0000:00:0b.0 name max_macs value 1 \
                    cmode driverinit
      $ devlink dev reload pci/0000:00:0b.0
      Signed-off-by: NShay Drory <shayd@nvidia.com>
      Reviewed-by: NMoshe Shemesh <moshe@nvidia.com>
      Reviewed-by: NParav Pandit <parav@nvidia.com>
      Signed-off-by: NSaeed Mahameed <saeedm@nvidia.com>
      55460406
    • A
      net/mlx5: Add periodic update of host time to firmware · 5a1023de
      Aya Levin 提交于
      Firmware logs its asserts also to non-volatile memory. In order to
      reduce drift between the NIC and the host, the driver sets the host
      epoch-time to the firmware every hour.
      Signed-off-by: NAya Levin <ayal@nvidia.com>
      Reviewed-by: NMoshe Shemesh <moshe@nvidia.com>
      Signed-off-by: NSaeed Mahameed <saeedm@nvidia.com>
      5a1023de
    • A
      net/mlx5: Extend health buffer dump · cb464ba5
      Aya Levin 提交于
      Enhance health buffer to include:
       - assert_var5: expose the 6'th assert variable.
       - time: error's time-stamp in seconds (epoch time).
       - rfr: Recovery Flow Requiered. When set, indicates that the error
              cannot be recovered without flow involving reset.
       - severity: error's severity value, ranging from emergency to debug.
      Expose them in the health buffer dump (dmesg and devlink fw reporter).
      
      Health buffer in dmesg:
      mlx5_core 0000:08:00.0: print_health_info:425:(pid 912): Health issue observed, firmware internal error, severity(3) ERROR:
      mlx5_core 0000:08:00.0: print_health_info:429:(pid 912): assert_var[0] 0x08040700
      mlx5_core 0000:08:00.0: print_health_info:429:(pid 912): assert_var[1] 0x00000000
      mlx5_core 0000:08:00.0: print_health_info:429:(pid 912): assert_var[2] 0x00000000
      mlx5_core 0000:08:00.0: print_health_info:429:(pid 912): assert_var[3] 0x00000000
      mlx5_core 0000:08:00.0: print_health_info:429:(pid 912): assert_var[4] 0x00000000
      mlx5_core 0000:08:00.0: print_health_info:429:(pid 912): assert_var[5] 0x00000000
      mlx5_core 0000:08:00.0: print_health_info:432:(pid 912): assert_exit_ptr 0x00aaf800
      mlx5_core 0000:08:00.0: print_health_info:434:(pid 912): assert_callra 0x00aaf70c
      mlx5_core 0000:08:00.0: print_health_info:436:(pid 912): fw_ver 16.32.492
      mlx5_core 0000:08:00.0: print_health_info:437:(pid 912): time 1634819758
      mlx5_core 0000:08:00.0: print_health_info:438:(pid 912): hw_id 0x0000020d
      mlx5_core 0000:08:00.0: print_health_info:439:(pid 912): rfr 0
      mlx5_core 0000:08:00.0: print_health_info:440:(pid 912): severity 3 (ERROR)
      mlx5_core 0000:08:00.0: print_health_info:441:(pid 912): irisc_index 9
      mlx5_core 0000:08:00.0: print_health_info:442:(pid 912): synd 0x1: firmware internal error
      mlx5_core 0000:08:00.0: print_health_info:444:(pid 912): ext_synd 0x802b
      mlx5_core 0000:08:00.0: print_health_info:445:(pid 912): raw fw_ver 0x102001ec
      Signed-off-by: NAya Levin <ayal@nvidia.com>
      Reviewed-by: NMoshe Shemesh <moshe@nvidia.com>
      Signed-off-by: NSaeed Mahameed <saeedm@nvidia.com>
      cb464ba5
  14. 19 10月, 2021 3 次提交
  15. 16 10月, 2021 2 次提交
  16. 13 10月, 2021 1 次提交
  17. 09 10月, 2021 1 次提交
  18. 28 9月, 2021 1 次提交
  19. 20 8月, 2021 1 次提交
  20. 27 7月, 2021 1 次提交
    • M
      net/mlx5e: Block LRO if firmware asks for tunneled LRO · 26ab7b38
      Maxim Mikityanskiy 提交于
      This commit does a cleanup in LRO configuration.
      
      LRO is a parameter of an RQ, but its state is changed by modifying a TIR
      related to the RQ.
      
      The current status: LRO for tunneled packets is not supported in the
      driver, inner TIRs may enable LRO on creation, but LRO status of inner
      TIRs isn't changed in mlx5e_modify_tirs_lro(). This is inconsistent, but
      as long as the firmware doesn't declare support for tunneled LRO, it
      works, because the same RQs are shared between the inner and outer TIRs.
      
      This commit does two fixes:
      
      1. If the firmware has the tunneled LRO capability, LRO is blocked
      altogether, because it's not possible to block it for inner TIRs only,
      when the same RQs are shared between inner and outer TIRs, and the
      driver won't be able to handle tunneled LRO traffic.
      
      2. mlx5e_modify_tirs_lro() is patched to modify LRO state for all TIRs,
      including inner ones, because all TIRs related to an RQ should agree on
      their LRO state.
      
      Fixes: 7b3722fa ("net/mlx5e: Support RSS for GRE tunneled packets")
      Signed-off-by: NMaxim Mikityanskiy <maximmi@nvidia.com>
      Signed-off-by: NSaeed Mahameed <saeedm@nvidia.com>
      26ab7b38
  21. 25 7月, 2021 1 次提交
  22. 18 7月, 2021 1 次提交
  23. 03 7月, 2021 1 次提交
  24. 26 6月, 2021 1 次提交