diff options
author | Sean Hefty <sean.hefty@intel.com> | 2011-06-02 12:01:33 -0400 |
---|---|---|
committer | Roland Dreier <roland@purestorage.com> | 2011-10-13 12:43:03 -0400 |
commit | 012a8ff577f95211c6ffd3b77a94c34ebae009b6 (patch) | |
tree | 7d1e8d3ca131cc46ca12e879c4554870e0be76f2 /drivers/net/mlx4/main.c | |
parent | 2622e18ef407a8e8e3ddc3d6f0c77b756c493798 (diff) |
IB/mlx4: Add support for XRC domains
Support creating and destroying XRC domains. Any sharing of the XRCD
is managed above the low-level driver.
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'drivers/net/mlx4/main.c')
-rw-r--r-- | drivers/net/mlx4/main.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/drivers/net/mlx4/main.c b/drivers/net/mlx4/main.c index f0ee35df4dd7..660b691ede76 100644 --- a/drivers/net/mlx4/main.c +++ b/drivers/net/mlx4/main.c | |||
@@ -220,6 +220,10 @@ static int mlx4_dev_cap(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap) | |||
220 | dev->caps.reserved_mrws = dev_cap->reserved_mrws; | 220 | dev->caps.reserved_mrws = dev_cap->reserved_mrws; |
221 | dev->caps.reserved_uars = dev_cap->reserved_uars; | 221 | dev->caps.reserved_uars = dev_cap->reserved_uars; |
222 | dev->caps.reserved_pds = dev_cap->reserved_pds; | 222 | dev->caps.reserved_pds = dev_cap->reserved_pds; |
223 | dev->caps.reserved_xrcds = (dev->caps.flags & MLX4_DEV_CAP_FLAG_XRC) ? | ||
224 | dev_cap->reserved_xrcds : 0; | ||
225 | dev->caps.max_xrcds = (dev->caps.flags & MLX4_DEV_CAP_FLAG_XRC) ? | ||
226 | dev_cap->max_xrcds : 0; | ||
223 | dev->caps.mtt_entry_sz = dev->caps.mtts_per_seg * dev_cap->mtt_entry_sz; | 227 | dev->caps.mtt_entry_sz = dev->caps.mtts_per_seg * dev_cap->mtt_entry_sz; |
224 | dev->caps.max_msg_sz = dev_cap->max_msg_sz; | 228 | dev->caps.max_msg_sz = dev_cap->max_msg_sz; |
225 | dev->caps.page_size_cap = ~(u32) (dev_cap->min_page_sz - 1); | 229 | dev->caps.page_size_cap = ~(u32) (dev_cap->min_page_sz - 1); |
@@ -912,11 +916,18 @@ static int mlx4_setup_hca(struct mlx4_dev *dev) | |||
912 | goto err_kar_unmap; | 916 | goto err_kar_unmap; |
913 | } | 917 | } |
914 | 918 | ||
919 | err = mlx4_init_xrcd_table(dev); | ||
920 | if (err) { | ||
921 | mlx4_err(dev, "Failed to initialize " | ||
922 | "reliable connection domain table, aborting.\n"); | ||
923 | goto err_pd_table_free; | ||
924 | } | ||
925 | |||
915 | err = mlx4_init_mr_table(dev); | 926 | err = mlx4_init_mr_table(dev); |
916 | if (err) { | 927 | if (err) { |
917 | mlx4_err(dev, "Failed to initialize " | 928 | mlx4_err(dev, "Failed to initialize " |
918 | "memory region table, aborting.\n"); | 929 | "memory region table, aborting.\n"); |
919 | goto err_pd_table_free; | 930 | goto err_xrcd_table_free; |
920 | } | 931 | } |
921 | 932 | ||
922 | err = mlx4_init_eq_table(dev); | 933 | err = mlx4_init_eq_table(dev); |
@@ -1033,6 +1044,9 @@ err_eq_table_free: | |||
1033 | err_mr_table_free: | 1044 | err_mr_table_free: |
1034 | mlx4_cleanup_mr_table(dev); | 1045 | mlx4_cleanup_mr_table(dev); |
1035 | 1046 | ||
1047 | err_xrcd_table_free: | ||
1048 | mlx4_cleanup_xrcd_table(dev); | ||
1049 | |||
1036 | err_pd_table_free: | 1050 | err_pd_table_free: |
1037 | mlx4_cleanup_pd_table(dev); | 1051 | mlx4_cleanup_pd_table(dev); |
1038 | 1052 | ||
@@ -1355,6 +1369,7 @@ err_port: | |||
1355 | mlx4_cmd_use_polling(dev); | 1369 | mlx4_cmd_use_polling(dev); |
1356 | mlx4_cleanup_eq_table(dev); | 1370 | mlx4_cleanup_eq_table(dev); |
1357 | mlx4_cleanup_mr_table(dev); | 1371 | mlx4_cleanup_mr_table(dev); |
1372 | mlx4_cleanup_xrcd_table(dev); | ||
1358 | mlx4_cleanup_pd_table(dev); | 1373 | mlx4_cleanup_pd_table(dev); |
1359 | mlx4_cleanup_uar_table(dev); | 1374 | mlx4_cleanup_uar_table(dev); |
1360 | 1375 | ||
@@ -1416,6 +1431,7 @@ static void mlx4_remove_one(struct pci_dev *pdev) | |||
1416 | mlx4_cmd_use_polling(dev); | 1431 | mlx4_cmd_use_polling(dev); |
1417 | mlx4_cleanup_eq_table(dev); | 1432 | mlx4_cleanup_eq_table(dev); |
1418 | mlx4_cleanup_mr_table(dev); | 1433 | mlx4_cleanup_mr_table(dev); |
1434 | mlx4_cleanup_xrcd_table(dev); | ||
1419 | mlx4_cleanup_pd_table(dev); | 1435 | mlx4_cleanup_pd_table(dev); |
1420 | 1436 | ||
1421 | iounmap(priv->kar); | 1437 | iounmap(priv->kar); |