1. 10 Aug, 2019 3 commits
    • David S. Miller's avatar
      Merge tag 'mlx5-updates-2019-08-09' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux · 38b9e0f6
      David S. Miller authored
      Saeed Mahameed says:
      
      ====================
      mlx5-updates-2019-08-09
      
      This series includes update to mlx5 ethernet and core driver:
      
      In first #11 patches, Vlad submits part 2 of 3 part series to allow
      TC flow handling for concurrent execution.
      
      1) TC flow handling for concurrent execution (part 2)
      
      Vald Says:
      ==========
      
      Refactor data structures that are shared between flows in tc.
      Currently, all cls API hardware offloads driver callbacks require caller
      to hold rtnl lock when calling them. Cls API has already been updated to
      update software filters in parallel (on classifiers that support
      unlocked execution), however hardware offloads code still obtains rtnl
      lock before calling driver tc callbacks. This set implements support for
      unlocked execution of tc hairpin, mod_hdr and encap subsystem. The
      changed implemented in these subsystems are very similar in general.
      
      The main difference is that hairpin is accessed through mlx5e_tc_table
      (legacy mode), mod_hdr is accessed through both mlx5e_tc_table and
      mlx5_esw_offload (legacy and switchdev modes) and encap is only accessed
      through mlx5_esw_offload (switchdev mode).
      
      1.1) Hairpin handling and structure mlx5e_hairpin_entry refactored in
      following way:
      
      - Hairpin structure is extended with atomic reference counter. This
        approach allows to lookup of hairpin entry and obtain reference to it
        with hairpin_tbl_lock protection and then continue using the entry
        unlocked (including provisioning to hardware).
      
      - To support unlocked provisioning of hairpin entry to hardware, the entry
        is extended with 'res_ready' completion and is inserted to hairpin_tbl
        before calling the firmware. With this approach any concurrent users that
        attempt to use the same hairpin entry wait for completion first to
        prevent access to entries that are not fully initialized.
      
      - Hairpin entry is extended with new flows_lock spinlock to protect the
        list when multiple concurrent tc instances update flows attached to
        the same hairpin entry.
      
      1.2) Modify header handling code and structure mlx5e_mod_hdr_entry
      are refactored in the following way:
      
      - Mod_hdr structure is extended with atomic reference counter. This
        approach allows to lookup of mod_hdr entry and obtain reference to it
        with mod_hdr_tbl_lock protection and then continue using the entry
        unlocked (including provisioning to hardware).
      
      - To support unlocked provisioning of mod_hdr entry to hardware, the entry
        is extended with 'res_ready' completion and is inserted to mod_hdr_tbl
        before calling the firmware. With this approach any concurrent users that
        attempt to use the same mod_hdr entry wait for completion first to
        prevent access to entries that are not fully initialized.
      
      - Mod_Hdr entry is extended with new flows_lock spinlock to protect the
        list when multiple concurrent tc instances update flows attached to
        the same mod_hdr entry.
      
      1.3) Encapsulation handling code and Structure mlx5e_encap_entry
      are refactored in the following way:
      
      - encap structure is extended with atomic reference counter. This
        approach allows to lookup of encap entry and obtain reference to it
        with encap_tbl_lock protection and then continue using the entry
        unlocked (including provisioning to hardware).
      
      - To support unlocked provisioning of encap entry to hardware, the entry is
        extended with 'res_ready' completion and is inserted to encap_tbl before
        calling the firmware. With this approach any concurrent users that
        attempt to use the same encap entry wait for completion first to prevent
        access to entries that are not fully initialized.
      
      - As a difference from approach used to refactor hairpin and mod_hdr,
        encap entry is not extended with any per-entry fine-grained lock.
        Instead, encap_table_lock is used to synchronize all operations on
        encap table and instances of mlx5e_encap_entry. This is necessary
        because single flow can be attached to multiple encap entries
        simultaneously. During new flow creation or neigh update event all of
        encaps that flow is attached to must be accessed together as in atomic
        manner, which makes usage of per-entry lock infeasible.
      
      - Encap entry is extended with new flows_lock spinlock to protect the
        list when multiple concurrent tc instances update flows attached to
        the same encap entry.
      
      ==========
      
      3) Parav improves the way port representors report their parent ID and
      port index.
      
      4) Use refcount_t for refcount in vxlan data base from  Chuhong Yuan
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      38b9e0f6
    • Roman Mashak's avatar
      62ad42ec
    • David Ahern's avatar
      selftests: Fix detection of nettest command in fcnal-test · f887427b
      David Ahern authored
      Most of the tests run by fcnal-test.sh relies on the nettest command.
      Rather than trying to cover all of the individual tests, check for the
      binary only at the beginning.
      
      Also removes the need for log_error which is undefined.
      
      Fixes: 6f9d5cac ("selftests: Setup for functional tests for fib and socket lookups")
      Signed-off-by: default avatarDavid Ahern <dsahern@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f887427b
  2. 09 Aug, 2019 37 commits