• J
    IB/mlx4: SR-IOV IB context objects and proxy/tunnel SQP support · 1ffeb2eb
    Jack Morgenstein 提交于
    1. Introduce the basic SR-IOV parvirtualization context objects for
       multiplexing and demultiplexing MADs.
    2. Introduce support for the new proxy and tunnel QP types.
    
    This patch introduces the objects required by the master for managing
    QP paravirtualization for guests.
    
    struct mlx4_ib_sriov is created by the master only.
    It is a container for the following:
    
    1. All the info required by the PPF to multiplex and de-multiplex MADs
       (including those from the PF). (struct mlx4_ib_demux_ctx demux)
    2. All the info required to manage alias GUIDs (i.e., the GUID at
       index 0 that each guest perceives.  In fact, this is not the GUID
       which is actually at index 0, but is, in fact, the GUID which is at
       index[<VF number>] in the physical table.
    3. structures which are used to manage CM paravirtualization
    4. structures for managing the real special QPs when running in SR-IOV
       mode.  The real SQPs are controlled by the PPF in this case.  All
       SQPs created and controlled by the ib core layer are proxy SQP.
    
    struct mlx4_ib_demux_ctx contains the information per port needed
    to manage paravirtualization:
    
    1. All multicast paravirt info
    2. All tunnel-qp paravirt info for the port.
    3. GUID-table and GUID-prefix for the port
    4. work queues.
    
    struct mlx4_ib_demux_pv_ctx contains all the info for managing the
    paravirtualized QPs for one slave/port.
    
    struct mlx4_ib_demux_pv_qp contains the info need to run an individual
    QP (either tunnel qp or real SQP).
    
    Note:  We made use of the 2 most significant bits in enum
    mlx4_ib_qp_flags (based on enum ib_qp_create_flags in ib_verbs.h).
    We need these bits in the low-level driver for internal purposes.
    Signed-off-by: NJack Morgenstein <jackm@dev.mellanox.co.il>
    Signed-off-by: NRoland Dreier <roland@purestorage.com>
    1ffeb2eb
device.h 24.0 KB