main.c (3ce60f443b143e649aa26cd3f668d645434647ac) main.c (2019d70e919f01c43975b8d9ea2803b890eabba9)
1// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB
2/*
3 * Copyright (c) 2013-2020, Mellanox Technologies inc. All rights reserved.
4 * Copyright (c) 2020, Intel Corporation. All rights reserved.
5 */
6
7#include <linux/debugfs.h>
8#include <linux/highmem.h>

--- 802 unchanged lines hidden (view full) ---

811 return -EINVAL;
812
813 memset(props, 0, sizeof(*props));
814 err = mlx5_query_system_image_guid(ibdev,
815 &props->sys_image_guid);
816 if (err)
817 return err;
818
1// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB
2/*
3 * Copyright (c) 2013-2020, Mellanox Technologies inc. All rights reserved.
4 * Copyright (c) 2020, Intel Corporation. All rights reserved.
5 */
6
7#include <linux/debugfs.h>
8#include <linux/highmem.h>

--- 802 unchanged lines hidden (view full) ---

811 return -EINVAL;
812
813 memset(props, 0, sizeof(*props));
814 err = mlx5_query_system_image_guid(ibdev,
815 &props->sys_image_guid);
816 if (err)
817 return err;
818
819 err = mlx5_query_max_pkeys(ibdev, &props->max_pkeys);
820 if (err)
821 return err;
819 props->max_pkeys = dev->pkey_table_len;
822
823 err = mlx5_query_vendor_id(ibdev, &props->vendor_id);
824 if (err)
825 return err;
826
827 props->fw_ver = ((u64)fw_rev_maj(dev->mdev) << 32) |
828 (fw_rev_min(dev->mdev) << 16) |
829 fw_rev_sub(dev->mdev);

--- 2144 unchanged lines hidden (view full) ---

2974 int port;
2975
2976 for (port = 1; port <= dev->num_ports; port++)
2977 mlx5_query_ext_port_caps(dev, port);
2978}
2979
2980static int __get_port_caps(struct mlx5_ib_dev *dev, u8 port)
2981{
820
821 err = mlx5_query_vendor_id(ibdev, &props->vendor_id);
822 if (err)
823 return err;
824
825 props->fw_ver = ((u64)fw_rev_maj(dev->mdev) << 32) |
826 (fw_rev_min(dev->mdev) << 16) |
827 fw_rev_sub(dev->mdev);

--- 2144 unchanged lines hidden (view full) ---

2972 int port;
2973
2974 for (port = 1; port <= dev->num_ports; port++)
2975 mlx5_query_ext_port_caps(dev, port);
2976}
2977
2978static int __get_port_caps(struct mlx5_ib_dev *dev, u8 port)
2979{
2982 struct ib_device_attr *dprops = NULL;
2983 struct ib_port_attr *pprops = NULL;
2984 int err = -ENOMEM;
2985
2986 pprops = kzalloc(sizeof(*pprops), GFP_KERNEL);
2987 if (!pprops)
2988 goto out;
2989
2980 struct ib_port_attr *pprops = NULL;
2981 int err = -ENOMEM;
2982
2983 pprops = kzalloc(sizeof(*pprops), GFP_KERNEL);
2984 if (!pprops)
2985 goto out;
2986
2990 dprops = kmalloc(sizeof(*dprops), GFP_KERNEL);
2991 if (!dprops)
2992 goto out;
2993
2994 err = mlx5_ib_query_device(&dev->ib_dev, dprops, NULL);
2995 if (err) {
2996 mlx5_ib_warn(dev, "query_device failed %d\n", err);
2997 goto out;
2998 }
2999
3000 err = mlx5_ib_query_port(&dev->ib_dev, port, pprops);
3001 if (err) {
3002 mlx5_ib_warn(dev, "query_port %d failed %d\n",
3003 port, err);
3004 goto out;
3005 }
3006
2987 err = mlx5_ib_query_port(&dev->ib_dev, port, pprops);
2988 if (err) {
2989 mlx5_ib_warn(dev, "query_port %d failed %d\n",
2990 port, err);
2991 goto out;
2992 }
2993
3007 dev->port_caps[port - 1].pkey_table_len = dprops->max_pkeys;
3008 dev->port_caps[port - 1].gid_table_len = pprops->gid_tbl_len;
3009 mlx5_ib_dbg(dev, "port %d: pkey_table_len %d, gid_table_len %d\n",
2994 dev->port_caps[port - 1].gid_table_len = pprops->gid_tbl_len;
2995 mlx5_ib_dbg(dev, "port %d: pkey_table_len %d, gid_table_len %d\n",
3010 port, dprops->max_pkeys, pprops->gid_tbl_len);
2996 port, dev->pkey_table_len, pprops->gid_tbl_len);
3011
3012out:
3013 kfree(pprops);
2997
2998out:
2999 kfree(pprops);
3014 kfree(dprops);
3015
3016 return err;
3017}
3018
3019static int get_port_caps(struct mlx5_ib_dev *dev, u8 port)
3020{
3021 /* For representors use port 1, is this is the only native
3022 * port
3023 */

--- 950 unchanged lines hidden (view full) ---

3974 break;
3975 }
3976 } else {
3977 err = get_port_caps(dev, mlx5_core_native_port_num(mdev));
3978 }
3979 if (err)
3980 goto err_mp;
3981
3000 return err;
3001}
3002
3003static int get_port_caps(struct mlx5_ib_dev *dev, u8 port)
3004{
3005 /* For representors use port 1, is this is the only native
3006 * port
3007 */

--- 950 unchanged lines hidden (view full) ---

3958 break;
3959 }
3960 } else {
3961 err = get_port_caps(dev, mlx5_core_native_port_num(mdev));
3962 }
3963 if (err)
3964 goto err_mp;
3965
3966 err = mlx5_query_max_pkeys(&dev->ib_dev, &dev->pkey_table_len);
3967 if (err)
3968 goto err_mp;
3969
3982 if (mlx5_use_mad_ifc(dev))
3983 get_ext_port_caps(dev);
3984
3985 dev->ib_dev.node_type = RDMA_NODE_IB_CA;
3986 dev->ib_dev.local_dma_lkey = 0 /* not supported for now */;
3987 dev->ib_dev.phys_port_cnt = dev->num_ports;
3988 dev->ib_dev.num_comp_vectors = mlx5_comp_vectors_count(mdev);
3989 dev->ib_dev.dev.parent = mdev->device;

--- 905 unchanged lines hidden ---
3970 if (mlx5_use_mad_ifc(dev))
3971 get_ext_port_caps(dev);
3972
3973 dev->ib_dev.node_type = RDMA_NODE_IB_CA;
3974 dev->ib_dev.local_dma_lkey = 0 /* not supported for now */;
3975 dev->ib_dev.phys_port_cnt = dev->num_ports;
3976 dev->ib_dev.num_comp_vectors = mlx5_comp_vectors_count(mdev);
3977 dev->ib_dev.dev.parent = mdev->device;

--- 905 unchanged lines hidden ---