On Thu, Dec 12, 2013, Or Gerlitz <[email protected]> wrote:
> Changes from V5:
>
>  - moved the address resolution helper from the uverbs layer to the
>    ib_core module where it belongs. This will also allow to run kernel
>    consumers who don't use the rdma-cm

Hi Roland,

Anything else, or we are all set? please let us know, this series has
lost at least two kernel cycles just b/c of slowness in getting us
feedback on things that needed to change, so lets not have another one
to get lost.

Or.



>
>  - added entries for XRC QPs in the IB core verbs.c qp state table
>
>  - dropped the last patch which is one liner change in the mlx4_en
>    driver. Can be pushed through netdev once this is accepted
>
> See below full listing of change-history.
>
> Currently, the IB stack (core + drivers) handle RoCE (IBoE) gids as
> they encode related Ethernet net-device interface MAC address and
> possibly VLAN id.
>
> This series changes RoCE GIDs to encode IP addresses (IPv4 + IPv6)
> of the that Ethernet interface, under the following reasoning:
>
> 1. There are environments where the compute entity that runs the RoCE
> stack is not aware that its traffic is vlan-tagged. This results with that
> node to create/assume wrong GIDs from the view point of a peer node which
> is aware to vlans.
>
> Note that "node" here can be physical node connected to Ethernet switch 
> acting in
> access mode talking to another node which does vlan insertion/stripping by 
> itself.
>
> Or another example is SRIOV Virtual Function which is configured to work in 
> "VST"
> mode (Virtual-Switch-Tagging) such that the hypervisor configures the HW 
> eSWitch
> to do vlan insertion for the vPORT representing that function.
>
> 2. When RoCE traffic is inspected (mirrored/trapped) in Ethernet switches for
> monitoring and security purposes. It is much more natural for both humans and
> automated utilities (...) to observe IP addresses in a certain offset into 
> RoCE
> frames L3 header vs. MAC/VLANs (which are there anyway in the L2 header of 
> that
> frame, so they are not gone by this change).
>
> 3. Some Bonding/Teaming advanced mode such as balance-alb and balance-tlb
> are using multiple underlying devices in parallel, and hence packets always
> carry the bond IP address but different streams have different source MACs.
> The approach brought by this series is part from what would allow to
> support that for RoCE traffic too.
>
> The 1st patch adds explicit handling of Ethernet L2 attributes, source/dest
> mac and vlan_id to the kernel IB core, in data-structures and CMA/CM code.
> Previously, with MAC/VLAN based addressing, they were encoded in the GIDs,
> where now they have to be resolved and placed separately from the IP based 
> GIDs.
>
> The 2nd patch modifies the CMA to cope with IP based GIDs, the 3rd/4th ones do
> that for the mlx4_ib driver, and the 5th/6th patches to the ocrdma driver.
>
> The 7th patch adds address resolution to user space applications for RoCE
> ports such that these application keep working unmodified.
>
> The 8th/last patch fixes the mlx4_en driver such that it has correct IPv6 
> link local address.
>
> Or.
>
> Full listing of change-history:
>
> changes from V5:
>
>  - moved the address resolution helper from the uverbs layer to the
>    ib_core module where it belongs. This will also allow to run kernel
>    consumers who don't use the rdma-cm
>
>  - added entries for XRC QPs in the IB core verbs.c qp state table
>
>
> changes from V4:
>
>  - addressed feedback re the need to be compatible with non modified user
>    space applications/libraries, by adding code in uverbs which does address
>    resolution when dealing with Ethernet ports.
>
>  - removed the patches that deal with uverbs extended commands, they will
>    added later on, such that new applications/libraries can be coded to them.
>
> changes from V3:
>
>   - dropped the uverbs Infrastructure patch for extensions which is now 
> upstream
>     400dbc9 "IB/core: Infrastructure for extensible uverbs commands"
>
>   - added ocrdma patch to handle Ethernet L2 parameters, similar to the mlx4 
> patch.
>
>   - removed the assumption that the low level driver can provide the source 
> mac
>     and vlan in the struct ib_wc returned by ib_poll_cq, and adjusted the
>     ib_init_ah_from_wc helper of the IB core accordingly.
>
>   - fixed some vlan related issues in the mlx4 driver
>
> changes from V2:
>
>   - added handling of IP based GIDs in the ocrdma driver - patch #5,
>     as a result patches #5-8 of V1 became patches #6-9
>
> changes from V1:
>
>  - rebased the series against the latest kernel bits, which include Sean's
>    AF_IB changes to the rdma-cm
>
>  - fixed bug in mlx4_ib where reset of the gid table was done for IB ports too
>
>  - fixed build warnings and issues pointed by sparse
>
>  - introduced patch #1 which does the explicit handling of Ethernet L2 
> attributes,
>    source/dest mac and vlan_id in the kernel data-structures and CMA/CM code.
>
>  - use smac when modifying a QP --> find smac in passive side + additional 
> fields
>    to adress structures
>
>  - add support to new QP atrr in ib_modify_qp_is_ok() special for ll = ETH
>   and modified all low-level drivers to keep working after that change
>
>  -- changes around uverbs:
>  - use ah_ext as pointer in qp_attr passed from user space, so this
>    field by itself can be extended in the future
>  - for kernel to user command respnses comp_mask is moved into the
>    right place which is after the non-extended command respond fields
>  - fixed bug in copy_qp_attr_ex under which some fields were copied to
>    wrong locations
>  - use new structure rdma_ucm_init_qp_attr_ex which is extendable (ucma)
>
> changes from V0:
>
>  - enhanced documentation of the mlx4_ib, uverbs and ucma patches
>  - broke the mlx4_ib patch to two
>  - broke the extended user space commands patch to two
>
>
> Matan Barak (1):
>   IB/core: Ethernet L2 attributes in verbs/cm structures
>
> Moni Shoua (5):
>   IB/CMA: IBoE (RoCE) IP based GID addressing
>   IB/mlx4: Use IBoE (RoCE) IP based GIDs in the port GID table
>   IB/mlx4: Handle Ethernet L2 parameters for IP based GID addressing
>   IB/ocrdma: Handle Ethernet L2 parameters for IP based GID addressing
>   IB/ocrdma: Populate GID table with IP based gids
>
> Or Gerlitz (1):
>   IB/core: Resolve Ethernet L2 addresses when modifying QP
>
>  drivers/infiniband/core/addr.c              |   97 ++++++-
>  drivers/infiniband/core/cm.c                |   50 +++
>  drivers/infiniband/core/cma.c               |   74 ++++-
>  drivers/infiniband/core/core_priv.h         |    2 +
>  drivers/infiniband/core/sa_query.c          |   12 +-
>  drivers/infiniband/core/ucma.c              |   18 +-
>  drivers/infiniband/core/uverbs_cmd.c        |    4 +
>  drivers/infiniband/core/verbs.c             |   98 ++++++-
>  drivers/infiniband/hw/ehca/ehca_qp.c        |    2 +-
>  drivers/infiniband/hw/ipath/ipath_qp.c      |    2 +-
>  drivers/infiniband/hw/mlx4/ah.c             |   40 +--
>  drivers/infiniband/hw/mlx4/cq.c             |    9 +
>  drivers/infiniband/hw/mlx4/main.c           |  474 
> +++++++++++++++++++--------
>  drivers/infiniband/hw/mlx4/mlx4_ib.h        |    6 +-
>  drivers/infiniband/hw/mlx4/qp.c             |  104 +++++--
>  drivers/infiniband/hw/mlx5/qp.c             |    3 +-
>  drivers/infiniband/hw/mthca/mthca_qp.c      |    3 +-
>  drivers/infiniband/hw/ocrdma/ocrdma.h       |   12 +
>  drivers/infiniband/hw/ocrdma/ocrdma_ah.c    |    5 +-
>  drivers/infiniband/hw/ocrdma/ocrdma_hw.c    |   21 +-
>  drivers/infiniband/hw/ocrdma/ocrdma_hw.h    |    1 -
>  drivers/infiniband/hw/ocrdma/ocrdma_main.c  |  138 +++------
>  drivers/infiniband/hw/ocrdma/ocrdma_verbs.c |    3 +-
>  drivers/infiniband/hw/qib/qib_qp.c          |    2 +-
>  drivers/net/ethernet/mellanox/mlx4/port.c   |   20 ++
>  include/linux/mlx4/cq.h                     |   15 +-
>  include/linux/mlx4/device.h                 |    1 +
>  include/rdma/ib_addr.h                      |   69 +++--
>  include/rdma/ib_cm.h                        |    1 +
>  include/rdma/ib_pack.h                      |    1 +
>  include/rdma/ib_sa.h                        |    3 +
>  include/rdma/ib_verbs.h                     |   21 +-
>  32 files changed, 928 insertions(+), 383 deletions(-)
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> the body of a message to [email protected]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to