Skip to content
  1. Aug 01, 2019
    • David S. Miller's avatar
      Merge tag 'mlx5-updates-2019-07-29' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux · 21947f46
      David S. Miller authored
      
      
      Saeed Mahameed says:
      
      ====================
      mlx5-updates-2019-07-29
      
      This series includes updates to mlx5 driver,
      1) Simplifications, cleanup and warning prints improvements
      
      2) From Vlad Buslov:
      Refactor mlx5 tc flow handling for unlocked execution (Part 1)
      
      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 partial
      support for unlocked execution that is leveraged by follow up
      refactorings in specific mlx5 tc subsystems and patch to cls API that
      implements API that allows drivers to register their callbacks as
      rtnl-unlocked.
      
      In mlx5 tc code mlx5e_tc_flow is the main structure that is used to
      represent tc filter. Currently, code the structure itself and its
      handlers in both tc and eswitch layers do not implement any kind of
      synchronizations and assume external global synchronization provided by
      rtnl lock instead. Implement following changes to remove dependency on
      rtnl lock in flow handling code that are intended to be used a
      groundwork for following changes to provide fully rtnl-independent mlx5
      tc:
      
      - Extend struct mlx5e_tc_flow with atomic reference counter and rcu to
        allow concurrent access from multiple tc and neigh update workqueue
        instances without introducing any additional locks specific to the
        structure. Its 'flags' field type is changed to atomic bitmask ops which
        is necessary for tc to interact with other concurrent tc instances or
        concurrent neigh update that need to skip flows that are not fully
        initialized (new INIT_DONE flow flag) and can change the flags
        according to neighbor state (flipping OFFLOADED flag).
      
      - Protect unready flows list by new uplink_priv->unready_flows_lock
        mutex.
      
      - Convert calls to netdev APIs that require rtnl lock in flow handling
        code to their rcu counterparts.
      
      - Modify eswitch code that is called from tc layer and assume implicit
        external synchronization to be concurrency safe: change
        esw->offloads.num_flows type to atomic integer and re-arrange
        esw->state_lock usage to protect additional data.
      
      Some of approaches to synchronizations presented in this patch set are
      quite complicated (lockless concurrent usage of data structures with rcu
      and reference counting, using fine-grained locking when necessary, retry
      mechanisms to handle concurrent insertion of another instance of data
      structure with same key, etc.). This is necessary to allow calling the
      firmware in parallel in most cases, which is the main motivation of this
      change since firmware calls are mach heavier operation than atomic
      operations, multitude of locks and potential multiple retries during
      concurrent accesses to same elements.
      ====================
      
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      21947f46
    • YueHaibing's avatar
      staging/octeon: Fix build error without CONFIG_NETDEVICES · 6a7ce95d
      YueHaibing authored
      
      
      While do COMPILE_TEST build without CONFIG_NETDEVICES,
      we get Kconfig warning:
      
      WARNING: unmet direct dependencies detected for PHYLIB
        Depends on [n]: NETDEVICES [=n]
        Selected by [y]:
        - OCTEON_ETHERNET [=y] && STAGING [=y] && (CAVIUM_OCTEON_SOC && NETDEVICES [=n] || COMPILE_TEST [=y])
      
      Reported-by: default avatarHulk Robot <hulkci@huawei.com>
      Reported-by: default avatarMark Brown <broonie@kernel.org>
      Fixes: 171a9bae
      
       ("staging/octeon: Allow test build on !MIPS")
      Signed-off-by: default avatarYueHaibing <yuehaibing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6a7ce95d
  2. Jul 31, 2019
  3. Jul 30, 2019