[PATCH RFC 0/3] Support standard SRIOV configuration for IB VFs

Or Gerlitz
2015-05-21T16:24:04Z

Standard configuration of SRIOV VFs through the host is done over the
following chain of calls: libvirt --> netlink --> PF netdevice -- where
the PF netdevice exports the ndo_set_vf_ calls.

When this comes to IB/IPoIB we should normalize this into the verbs
framework so we further go: PF IPoIB --> verbs API --> PF HW driver

Virtualization systems assign VMs with 48 bits mac, to allow working
with non-modified SW layers (open-stack, libvirt, etc), we can safely
extend this mac to unique 64 bits GUID. Hence the IPoIB ndo_set_vf_mac
entry calls the set_vf_guid verb.

One thing to clean for being beyond RFC is to make the get_vf_config
verb return guid and have IPoIB to make it back a mac.

Here's how it looks when using the ip tool (libvirt runs the same
netlink to set it out) and later reflected when the VF read their port.

# ip link set dev ib0 vf 1 mac aa:bb:cc:dd:ee:ff

# ibstat -d mlx4_2
CA 'mlx4_2'
CA type: MT4100
Number of ports: 1
Firmware version: 2.34.1260
Hardware version: 0
Node GUID: 0x00140500f30e84c4
System image GUID: 0xf452140300117423
Port 1:
State: Active
Physical state: LinkUp
Rate: 56
Base lid: 7
LMC: 0
SM lid: 1
Capability mask: 0x02514868
Port GUID: 0xffeeddfeffccbbaa
Link layer: InfiniBand

Or Gerlitz (3):
IB/IPoIB: Support SRIOV standard configuration
IB/mlx4: Refactor Alias GUID storing
IB/mlx4: Add support for SRIOV VF management

drivers/infiniband/hw/mlx4/main.c | 26 ++++++++++++++
drivers/infiniband/hw/mlx4/mlx4_ib.h | 4 ++
drivers/infiniband/hw/mlx4/sysfs.c | 54 ++++++++++++++++++----------
drivers/infiniband/ulp/ipoib/ipoib_main.c | 39 +++++++++++++++++++++
drivers/net/ethernet/mellanox/mlx4/cmd.c | 26 +++++++++----
include/linux/mlx4/device.h | 2 +
include/rdma/ib_verbs.h | 4 ++
7 files changed, 128 insertions(+), 27 deletions(-)