diff options
author | Jack Morgenstein <jackm@dev.mellanox.co.il> | 2012-08-03 04:40:42 -0400 |
---|---|---|
committer | Roland Dreier <roland@purestorage.com> | 2012-09-30 23:33:32 -0400 |
commit | fc06573dfaf8a33bc0533bb70c49de13fa5232a4 (patch) | |
tree | 034d40d1b3f21a53ff52be78b8fcfea0222aa891 /include/linux/mlx4 | |
parent | e2c76824ca16a3e8443cc7b26abcb21af7c27b10 (diff) |
IB/mlx4: Initialize SR-IOV IB support for slaves in master context
Allocate SR-IOV paravirtualization resources and MAD demuxing contexts
on the master.
This has two parts. The first part is to initialize the structures to
contain the contexts. This is done at master startup time in
mlx4_ib_init_sriov().
The second part is to actually create the tunneling resources required
on the master to support a slave. This is performed the master
detects that a slave has started up (MLX4_DEV_EVENT_SLAVE_INIT event
generated when a slave initializes its comm channel).
For the master, there is no such startup event, so it creates its own
tunneling resources when it starts up. In addition, the master also
creates the real special QPs. The ib_core layer on the master causes
creation of proxy special QPs, since the master is also
paravirtualized at the ib_core layer.
Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'include/linux/mlx4')
-rw-r--r-- | include/linux/mlx4/device.h | 3 | ||||
-rw-r--r-- | include/linux/mlx4/driver.h | 2 |
2 files changed, 4 insertions, 1 deletions
diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h index d5c82b7216de..b6b8d341b6c8 100644 --- a/include/linux/mlx4/device.h +++ b/include/linux/mlx4/device.h | |||
@@ -54,7 +54,8 @@ enum { | |||
54 | }; | 54 | }; |
55 | 55 | ||
56 | enum { | 56 | enum { |
57 | MLX4_MAX_PORTS = 2 | 57 | MLX4_MAX_PORTS = 2, |
58 | MLX4_MAX_PORT_PKEYS = 128 | ||
58 | }; | 59 | }; |
59 | 60 | ||
60 | /* base qkey for use in sriov tunnel-qp/proxy-qp communication. | 61 | /* base qkey for use in sriov tunnel-qp/proxy-qp communication. |
diff --git a/include/linux/mlx4/driver.h b/include/linux/mlx4/driver.h index d813704b963b..c257e1b211be 100644 --- a/include/linux/mlx4/driver.h +++ b/include/linux/mlx4/driver.h | |||
@@ -45,6 +45,8 @@ enum mlx4_dev_event { | |||
45 | MLX4_DEV_EVENT_PORT_DOWN, | 45 | MLX4_DEV_EVENT_PORT_DOWN, |
46 | MLX4_DEV_EVENT_PORT_REINIT, | 46 | MLX4_DEV_EVENT_PORT_REINIT, |
47 | MLX4_DEV_EVENT_PORT_MGMT_CHANGE, | 47 | MLX4_DEV_EVENT_PORT_MGMT_CHANGE, |
48 | MLX4_DEV_EVENT_SLAVE_INIT, | ||
49 | MLX4_DEV_EVENT_SLAVE_SHUTDOWN, | ||
48 | }; | 50 | }; |
49 | 51 | ||
50 | struct mlx4_interface { | 52 | struct mlx4_interface { |