• Jason Gunthorpe's avatar
    Merge branch 'mlx5-flow-mutate' into rdma.git for-next · af68ccbc
    Jason Gunthorpe authored
    For dependencies, branch based on 'mellanox/mlx5-next' of
    git://git.kernel.org/pub/scm/linux/kernel/git/mellanox/linux.git
    
    Pull Flow actions to mutate packets from Leon Romanovsky:
    
    ====================
    This series exposes the ability to create flow actions which can
    mutate packet headers. We do that by exposing two new verbs:
     * modify header - can change existing packet headers. packet
     * reformat - can encapsulate or decapsulate a packet.
                  Once created a flow action must be attached to a steering
                  rule for it to take effect.
    
    The first 10 patches refactor mlx5_core code, rename internal structures
    to better reflect their operation and export needed functions so the RDMA
    side can allocate the action.
    
    The last 5 patches expose via the IOCTL infrastructure mlx5_ib methods
    which do the actual allocation of resources and return an handle to the
    user. A user of this API is expected to know how to work with the device's
    spec as the input to those function is HW depended.
    
    An example usage of the modify header action is routing, A user can create
    an action which edits the L2 header and decrease the TTL.
    
    An example usage of the packet reformat action is VXLAN encap/decap which
    is done by the HW.
    ====================
    
    * branch 'mlx5-flow-mutate':
      RDMA/mlx5: Extend packet reformat verbs
      RDMA/mlx5: Add new flow action verb - packet reformat
      RDMA/uverbs: Add generic function to fill in flow action object
      RDMA/mlx5: Add a new flow action verb - modify header
      RDMA/uverbs: Add UVERBS_ATTR_CONST_IN to the specs language
      net/mlx5: Export packet reformat alloc/dealloc functions
      net/mlx5: Pass a namespace for packet reformat ID allocation
      net/mlx5: Expose new packet reformat capabilities
      {net, RDMA}/mlx5: Rename encap to reformat packet
      net/mlx5: Move header encap type to IFC header file
      net/mlx5: Break encap/decap into two separated flow table creation flags
      net/mlx5: Add support for more namespaces when allocating modify header
      net/mlx5: Export modify header alloc/dealloc functions
      net/mlx5: Add proper NIC TX steering flow tables support
      net/mlx5: Cleanup flow namespace getter switch logic
    Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
    af68ccbc
mlx5_ib.h 39.1 KB