Commit c4550c63 authored by Or Gerlitz's avatar Or Gerlitz Committed by Doug Ledford

IB: Query ports via the core instead of direct into the driver

Change the drivers to call ib_query_port in their get port
immutable handler instead of their own query port handler.

Doing this required to set the core cap flags of this device
before the ib_query_port call is made, since the IB core might
need these caps to serve the port query.

Drivers are ensured by the IB core that the port attributes passed
to the port query verb implementation are zero, and hence we
removed the zeroing from the drivers.

This patch doesn't add any new functionality.
Signed-off-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
Reviewed-by: default avatarMatan Barak <matanb@mellanox.com>
Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
Reviewed-by: default avatarSteve Wise <swise@opengridcomputing.com>
Acked-by: default avatarAdit Ranadive <aditr@vmware.com>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent ce1e055f
...@@ -1133,7 +1133,7 @@ static int iwch_query_port(struct ib_device *ibdev, ...@@ -1133,7 +1133,7 @@ static int iwch_query_port(struct ib_device *ibdev,
dev = to_iwch_dev(ibdev); dev = to_iwch_dev(ibdev);
netdev = dev->rdev.port_info.lldevs[port-1]; netdev = dev->rdev.port_info.lldevs[port-1];
memset(props, 0, sizeof(struct ib_port_attr)); /* props being zeroed by the caller, avoid zeroing it here */
props->max_mtu = IB_MTU_4096; props->max_mtu = IB_MTU_4096;
if (netdev->mtu >= 4096) if (netdev->mtu >= 4096)
props->active_mtu = IB_MTU_4096; props->active_mtu = IB_MTU_4096;
...@@ -1338,13 +1338,14 @@ static int iwch_port_immutable(struct ib_device *ibdev, u8 port_num, ...@@ -1338,13 +1338,14 @@ static int iwch_port_immutable(struct ib_device *ibdev, u8 port_num,
struct ib_port_attr attr; struct ib_port_attr attr;
int err; int err;
err = iwch_query_port(ibdev, port_num, &attr); immutable->core_cap_flags = RDMA_CORE_PORT_IWARP;
err = ib_query_port(ibdev, port_num, &attr);
if (err) if (err)
return err; return err;
immutable->pkey_tbl_len = attr.pkey_tbl_len; immutable->pkey_tbl_len = attr.pkey_tbl_len;
immutable->gid_tbl_len = attr.gid_tbl_len; immutable->gid_tbl_len = attr.gid_tbl_len;
immutable->core_cap_flags = RDMA_CORE_PORT_IWARP;
return 0; return 0;
} }
......
...@@ -358,8 +358,7 @@ static int c4iw_query_port(struct ib_device *ibdev, u8 port, ...@@ -358,8 +358,7 @@ static int c4iw_query_port(struct ib_device *ibdev, u8 port,
dev = to_c4iw_dev(ibdev); dev = to_c4iw_dev(ibdev);
netdev = dev->rdev.lldi.ports[port-1]; netdev = dev->rdev.lldi.ports[port-1];
/* props being zeroed by the caller, avoid zeroing it here */
memset(props, 0, sizeof(struct ib_port_attr));
props->max_mtu = IB_MTU_4096; props->max_mtu = IB_MTU_4096;
if (netdev->mtu >= 4096) if (netdev->mtu >= 4096)
props->active_mtu = IB_MTU_4096; props->active_mtu = IB_MTU_4096;
...@@ -505,13 +504,14 @@ static int c4iw_port_immutable(struct ib_device *ibdev, u8 port_num, ...@@ -505,13 +504,14 @@ static int c4iw_port_immutable(struct ib_device *ibdev, u8 port_num,
struct ib_port_attr attr; struct ib_port_attr attr;
int err; int err;
err = c4iw_query_port(ibdev, port_num, &attr); immutable->core_cap_flags = RDMA_CORE_PORT_IWARP;
err = ib_query_port(ibdev, port_num, &attr);
if (err) if (err)
return err; return err;
immutable->pkey_tbl_len = attr.pkey_tbl_len; immutable->pkey_tbl_len = attr.pkey_tbl_len;
immutable->gid_tbl_len = attr.gid_tbl_len; immutable->gid_tbl_len = attr.gid_tbl_len;
immutable->core_cap_flags = RDMA_CORE_PORT_IWARP;
return 0; return 0;
} }
......
...@@ -1384,6 +1384,7 @@ static int query_port(struct rvt_dev_info *rdi, u8 port_num, ...@@ -1384,6 +1384,7 @@ static int query_port(struct rvt_dev_info *rdi, u8 port_num,
struct hfi1_pportdata *ppd = &dd->pport[port_num - 1]; struct hfi1_pportdata *ppd = &dd->pport[port_num - 1];
u16 lid = ppd->lid; u16 lid = ppd->lid;
/* props being zeroed by the caller, avoid zeroing it here */
props->lid = lid ? lid : 0; props->lid = lid ? lid : 0;
props->lmc = ppd->lmc; props->lmc = ppd->lmc;
/* OPA logical states match IB logical states */ /* OPA logical states match IB logical states */
......
...@@ -249,7 +249,7 @@ static int hns_roce_query_port(struct ib_device *ib_dev, u8 port_num, ...@@ -249,7 +249,7 @@ static int hns_roce_query_port(struct ib_device *ib_dev, u8 port_num,
assert(port_num > 0); assert(port_num > 0);
port = port_num - 1; port = port_num - 1;
memset(props, 0, sizeof(*props)); /* props being zeroed by the caller, avoid zeroing it here */
props->max_mtu = hr_dev->caps.max_mtu; props->max_mtu = hr_dev->caps.max_mtu;
props->gid_tbl_len = hr_dev->caps.gid_table_len[port]; props->gid_tbl_len = hr_dev->caps.gid_table_len[port];
...@@ -400,14 +400,15 @@ static int hns_roce_port_immutable(struct ib_device *ib_dev, u8 port_num, ...@@ -400,14 +400,15 @@ static int hns_roce_port_immutable(struct ib_device *ib_dev, u8 port_num,
struct ib_port_attr attr; struct ib_port_attr attr;
int ret; int ret;
ret = hns_roce_query_port(ib_dev, port_num, &attr); immutable->core_cap_flags = RDMA_CORE_PORT_IBA_ROCE;
ret = ib_query_port(ib_dev, port_num, &attr);
if (ret) if (ret)
return ret; return ret;
immutable->pkey_tbl_len = attr.pkey_tbl_len; immutable->pkey_tbl_len = attr.pkey_tbl_len;
immutable->gid_tbl_len = attr.gid_tbl_len; immutable->gid_tbl_len = attr.gid_tbl_len;
immutable->core_cap_flags = RDMA_CORE_PORT_IBA_ROCE;
immutable->max_mad_size = IB_MGMT_MAD_SIZE; immutable->max_mad_size = IB_MGMT_MAD_SIZE;
return 0; return 0;
......
...@@ -97,8 +97,7 @@ static int i40iw_query_port(struct ib_device *ibdev, ...@@ -97,8 +97,7 @@ static int i40iw_query_port(struct ib_device *ibdev,
struct i40iw_device *iwdev = to_iwdev(ibdev); struct i40iw_device *iwdev = to_iwdev(ibdev);
struct net_device *netdev = iwdev->netdev; struct net_device *netdev = iwdev->netdev;
memset(props, 0, sizeof(*props)); /* props being zeroed by the caller, avoid zeroing it here */
props->max_mtu = IB_MTU_4096; props->max_mtu = IB_MTU_4096;
if (netdev->mtu >= 4096) if (netdev->mtu >= 4096)
props->active_mtu = IB_MTU_4096; props->active_mtu = IB_MTU_4096;
...@@ -2506,14 +2505,15 @@ static int i40iw_port_immutable(struct ib_device *ibdev, u8 port_num, ...@@ -2506,14 +2505,15 @@ static int i40iw_port_immutable(struct ib_device *ibdev, u8 port_num,
struct ib_port_attr attr; struct ib_port_attr attr;
int err; int err;
err = i40iw_query_port(ibdev, port_num, &attr); immutable->core_cap_flags = RDMA_CORE_PORT_IWARP;
err = ib_query_port(ibdev, port_num, &attr);
if (err) if (err)
return err; return err;
immutable->pkey_tbl_len = attr.pkey_tbl_len; immutable->pkey_tbl_len = attr.pkey_tbl_len;
immutable->gid_tbl_len = attr.gid_tbl_len; immutable->gid_tbl_len = attr.gid_tbl_len;
immutable->core_cap_flags = RDMA_CORE_PORT_IWARP;
return 0; return 0;
} }
......
...@@ -499,6 +499,7 @@ static int set_guid_rec(struct ib_device *ibdev, ...@@ -499,6 +499,7 @@ static int set_guid_rec(struct ib_device *ibdev,
struct list_head *head = struct list_head *head =
&dev->sriov.alias_guid.ports_guid[port - 1].cb_list; &dev->sriov.alias_guid.ports_guid[port - 1].cb_list;
memset(&attr, 0, sizeof(attr));
err = __mlx4_ib_query_port(ibdev, port, &attr, 1); err = __mlx4_ib_query_port(ibdev, port, &attr, 1);
if (err) { if (err) {
pr_debug("mlx4_ib_query_port failed (err: %d), port: %d\n", pr_debug("mlx4_ib_query_port failed (err: %d), port: %d\n",
......
...@@ -741,7 +741,7 @@ int __mlx4_ib_query_port(struct ib_device *ibdev, u8 port, ...@@ -741,7 +741,7 @@ int __mlx4_ib_query_port(struct ib_device *ibdev, u8 port,
{ {
int err; int err;
memset(props, 0, sizeof *props); /* props being zeroed by the caller, avoid zeroing it here */
err = mlx4_ib_port_link_layer(ibdev, port) == IB_LINK_LAYER_INFINIBAND ? err = mlx4_ib_port_link_layer(ibdev, port) == IB_LINK_LAYER_INFINIBAND ?
ib_link_query_port(ibdev, port, props, netw_view) : ib_link_query_port(ibdev, port, props, netw_view) :
...@@ -1014,7 +1014,7 @@ static int mlx4_ib_modify_port(struct ib_device *ibdev, u8 port, int mask, ...@@ -1014,7 +1014,7 @@ static int mlx4_ib_modify_port(struct ib_device *ibdev, u8 port, int mask,
mutex_lock(&mdev->cap_mask_mutex); mutex_lock(&mdev->cap_mask_mutex);
err = mlx4_ib_query_port(ibdev, port, &attr); err = ib_query_port(ibdev, port, &attr);
if (err) if (err)
goto out; goto out;
...@@ -2537,13 +2537,6 @@ static int mlx4_port_immutable(struct ib_device *ibdev, u8 port_num, ...@@ -2537,13 +2537,6 @@ static int mlx4_port_immutable(struct ib_device *ibdev, u8 port_num,
struct mlx4_ib_dev *mdev = to_mdev(ibdev); struct mlx4_ib_dev *mdev = to_mdev(ibdev);
int err; int err;
err = mlx4_ib_query_port(ibdev, port_num, &attr);
if (err)
return err;
immutable->pkey_tbl_len = attr.pkey_tbl_len;
immutable->gid_tbl_len = attr.gid_tbl_len;
if (mlx4_ib_port_link_layer(ibdev, port_num) == IB_LINK_LAYER_INFINIBAND) { if (mlx4_ib_port_link_layer(ibdev, port_num) == IB_LINK_LAYER_INFINIBAND) {
immutable->core_cap_flags = RDMA_CORE_PORT_IBA_IB; immutable->core_cap_flags = RDMA_CORE_PORT_IBA_IB;
immutable->max_mad_size = IB_MGMT_MAD_SIZE; immutable->max_mad_size = IB_MGMT_MAD_SIZE;
...@@ -2559,6 +2552,13 @@ static int mlx4_port_immutable(struct ib_device *ibdev, u8 port_num, ...@@ -2559,6 +2552,13 @@ static int mlx4_port_immutable(struct ib_device *ibdev, u8 port_num,
immutable->max_mad_size = IB_MGMT_MAD_SIZE; immutable->max_mad_size = IB_MGMT_MAD_SIZE;
} }
err = ib_query_port(ibdev, port_num, &attr);
if (err)
return err;
immutable->pkey_tbl_len = attr.pkey_tbl_len;
immutable->gid_tbl_len = attr.gid_tbl_len;
return 0; return 0;
} }
......
...@@ -226,6 +226,7 @@ static int add_port_entries(struct mlx4_ib_dev *device, int port_num) ...@@ -226,6 +226,7 @@ static int add_port_entries(struct mlx4_ib_dev *device, int port_num)
int ret = 0 ; int ret = 0 ;
struct ib_port_attr attr; struct ib_port_attr attr;
memset(&attr, 0, sizeof(attr));
/* get the physical gid and pkey table sizes.*/ /* get the physical gid and pkey table sizes.*/
ret = __mlx4_ib_query_port(&device->ib_dev, port_num, &attr, 1); ret = __mlx4_ib_query_port(&device->ib_dev, port_num, &attr, 1);
if (ret) if (ret)
......
...@@ -527,7 +527,7 @@ int mlx5_query_mad_ifc_port(struct ib_device *ibdev, u8 port, ...@@ -527,7 +527,7 @@ int mlx5_query_mad_ifc_port(struct ib_device *ibdev, u8 port,
if (!in_mad || !out_mad) if (!in_mad || !out_mad)
goto out; goto out;
memset(props, 0, sizeof(*props)); /* props being zeroed by the caller, avoid zeroing it here */
init_query_mad(in_mad); init_query_mad(in_mad);
in_mad->attr_id = IB_SMP_ATTR_PORT_INFO; in_mad->attr_id = IB_SMP_ATTR_PORT_INFO;
......
...@@ -170,7 +170,7 @@ static int mlx5_query_port_roce(struct ib_device *device, u8 port_num, ...@@ -170,7 +170,7 @@ static int mlx5_query_port_roce(struct ib_device *device, u8 port_num,
enum ib_mtu ndev_ib_mtu; enum ib_mtu ndev_ib_mtu;
u16 qkey_viol_cntr; u16 qkey_viol_cntr;
memset(props, 0, sizeof(*props)); /* props being zeroed by the caller, avoid zeroing it here */
props->port_cap_flags |= IB_PORT_CM_SUP; props->port_cap_flags |= IB_PORT_CM_SUP;
props->port_cap_flags |= IB_PORT_IP_BASED_GIDS; props->port_cap_flags |= IB_PORT_IP_BASED_GIDS;
...@@ -857,7 +857,7 @@ static int mlx5_query_hca_port(struct ib_device *ibdev, u8 port, ...@@ -857,7 +857,7 @@ static int mlx5_query_hca_port(struct ib_device *ibdev, u8 port,
goto out; goto out;
} }
memset(props, 0, sizeof(*props)); /* props being zeroed by the caller, avoid zeroing it here */
err = mlx5_query_hca_vport_context(mdev, 0, port, 0, rep); err = mlx5_query_hca_vport_context(mdev, 0, port, 0, rep);
if (err) if (err)
...@@ -1005,7 +1005,7 @@ static int mlx5_ib_modify_port(struct ib_device *ibdev, u8 port, int mask, ...@@ -1005,7 +1005,7 @@ static int mlx5_ib_modify_port(struct ib_device *ibdev, u8 port, int mask,
mutex_lock(&dev->cap_mask_mutex); mutex_lock(&dev->cap_mask_mutex);
err = mlx5_ib_query_port(ibdev, port, &attr); err = ib_query_port(ibdev, port, &attr);
if (err) if (err)
goto out; goto out;
...@@ -2644,6 +2644,7 @@ static int get_port_caps(struct mlx5_ib_dev *dev) ...@@ -2644,6 +2644,7 @@ static int get_port_caps(struct mlx5_ib_dev *dev)
} }
for (port = 1; port <= MLX5_CAP_GEN(dev->mdev, num_ports); port++) { for (port = 1; port <= MLX5_CAP_GEN(dev->mdev, num_ports); port++) {
memset(pprops, 0, sizeof(*pprops));
err = mlx5_ib_query_port(&dev->ib_dev, port, pprops); err = mlx5_ib_query_port(&dev->ib_dev, port, pprops);
if (err) { if (err) {
mlx5_ib_warn(dev, "query_port %d failed %d\n", mlx5_ib_warn(dev, "query_port %d failed %d\n",
...@@ -2963,7 +2964,9 @@ static int mlx5_port_immutable(struct ib_device *ibdev, u8 port_num, ...@@ -2963,7 +2964,9 @@ static int mlx5_port_immutable(struct ib_device *ibdev, u8 port_num,
enum rdma_link_layer ll = mlx5_ib_port_link_layer(ibdev, port_num); enum rdma_link_layer ll = mlx5_ib_port_link_layer(ibdev, port_num);
int err; int err;
err = mlx5_ib_query_port(ibdev, port_num, &attr); immutable->core_cap_flags = get_core_cap_flags(ibdev);
err = ib_query_port(ibdev, port_num, &attr);
if (err) if (err)
return err; return err;
......
...@@ -146,7 +146,7 @@ static int mthca_query_port(struct ib_device *ibdev, ...@@ -146,7 +146,7 @@ static int mthca_query_port(struct ib_device *ibdev,
if (!in_mad || !out_mad) if (!in_mad || !out_mad)
goto out; goto out;
memset(props, 0, sizeof *props); /* props being zeroed by the caller, avoid zeroing it here */
init_query_mad(in_mad); init_query_mad(in_mad);
in_mad->attr_id = IB_SMP_ATTR_PORT_INFO; in_mad->attr_id = IB_SMP_ATTR_PORT_INFO;
...@@ -212,7 +212,7 @@ static int mthca_modify_port(struct ib_device *ibdev, ...@@ -212,7 +212,7 @@ static int mthca_modify_port(struct ib_device *ibdev,
if (mutex_lock_interruptible(&to_mdev(ibdev)->cap_mask_mutex)) if (mutex_lock_interruptible(&to_mdev(ibdev)->cap_mask_mutex))
return -ERESTARTSYS; return -ERESTARTSYS;
err = mthca_query_port(ibdev, port, &attr); err = ib_query_port(ibdev, port, &attr);
if (err) if (err)
goto out; goto out;
...@@ -1166,13 +1166,14 @@ static int mthca_port_immutable(struct ib_device *ibdev, u8 port_num, ...@@ -1166,13 +1166,14 @@ static int mthca_port_immutable(struct ib_device *ibdev, u8 port_num,
struct ib_port_attr attr; struct ib_port_attr attr;
int err; int err;
err = mthca_query_port(ibdev, port_num, &attr); immutable->core_cap_flags = RDMA_CORE_PORT_IBA_IB;
err = ib_query_port(ibdev, port_num, &attr);
if (err) if (err)
return err; return err;
immutable->pkey_tbl_len = attr.pkey_tbl_len; immutable->pkey_tbl_len = attr.pkey_tbl_len;
immutable->gid_tbl_len = attr.gid_tbl_len; immutable->gid_tbl_len = attr.gid_tbl_len;
immutable->core_cap_flags = RDMA_CORE_PORT_IBA_IB;
immutable->max_mad_size = IB_MGMT_MAD_SIZE; immutable->max_mad_size = IB_MGMT_MAD_SIZE;
return 0; return 0;
......
...@@ -475,7 +475,7 @@ static int nes_query_port(struct ib_device *ibdev, u8 port, struct ib_port_attr ...@@ -475,7 +475,7 @@ static int nes_query_port(struct ib_device *ibdev, u8 port, struct ib_port_attr
struct nes_vnic *nesvnic = to_nesvnic(ibdev); struct nes_vnic *nesvnic = to_nesvnic(ibdev);
struct net_device *netdev = nesvnic->netdev; struct net_device *netdev = nesvnic->netdev;
memset(props, 0, sizeof(*props)); /* props being zeroed by the caller, avoid zeroing it here */
props->max_mtu = IB_MTU_4096; props->max_mtu = IB_MTU_4096;
...@@ -3670,13 +3670,14 @@ static int nes_port_immutable(struct ib_device *ibdev, u8 port_num, ...@@ -3670,13 +3670,14 @@ static int nes_port_immutable(struct ib_device *ibdev, u8 port_num,
struct ib_port_attr attr; struct ib_port_attr attr;
int err; int err;
immutable->core_cap_flags = RDMA_CORE_PORT_IWARP;
err = nes_query_port(ibdev, port_num, &attr); err = nes_query_port(ibdev, port_num, &attr);
if (err) if (err)
return err; return err;
immutable->pkey_tbl_len = attr.pkey_tbl_len; immutable->pkey_tbl_len = attr.pkey_tbl_len;
immutable->gid_tbl_len = attr.gid_tbl_len; immutable->gid_tbl_len = attr.gid_tbl_len;
immutable->core_cap_flags = RDMA_CORE_PORT_IWARP;
return 0; return 0;
} }
......
...@@ -93,15 +93,16 @@ static int ocrdma_port_immutable(struct ib_device *ibdev, u8 port_num, ...@@ -93,15 +93,16 @@ static int ocrdma_port_immutable(struct ib_device *ibdev, u8 port_num,
int err; int err;
dev = get_ocrdma_dev(ibdev); dev = get_ocrdma_dev(ibdev);
err = ocrdma_query_port(ibdev, port_num, &attr); immutable->core_cap_flags = RDMA_CORE_PORT_IBA_ROCE;
if (ocrdma_is_udp_encap_supported(dev))
immutable->core_cap_flags |= RDMA_CORE_CAP_PROT_ROCE_UDP_ENCAP;
err = ib_query_port(ibdev, port_num, &attr);
if (err) if (err)
return err; return err;
immutable->pkey_tbl_len = attr.pkey_tbl_len; immutable->pkey_tbl_len = attr.pkey_tbl_len;
immutable->gid_tbl_len = attr.gid_tbl_len; immutable->gid_tbl_len = attr.gid_tbl_len;
immutable->core_cap_flags = RDMA_CORE_PORT_IBA_ROCE;
if (ocrdma_is_udp_encap_supported(dev))
immutable->core_cap_flags |= RDMA_CORE_CAP_PROT_ROCE_UDP_ENCAP;
immutable->max_mad_size = IB_MGMT_MAD_SIZE; immutable->max_mad_size = IB_MGMT_MAD_SIZE;
return 0; return 0;
......
...@@ -210,6 +210,7 @@ int ocrdma_query_port(struct ib_device *ibdev, ...@@ -210,6 +210,7 @@ int ocrdma_query_port(struct ib_device *ibdev,
struct ocrdma_dev *dev; struct ocrdma_dev *dev;
struct net_device *netdev; struct net_device *netdev;
/* props being zeroed by the caller, avoid zeroing it here */
dev = get_ocrdma_dev(ibdev); dev = get_ocrdma_dev(ibdev);
if (port > 1) { if (port > 1) {
pr_err("%s(%d) invalid_port=0x%x\n", __func__, pr_err("%s(%d) invalid_port=0x%x\n", __func__,
......
...@@ -238,8 +238,8 @@ int qedr_query_port(struct ib_device *ibdev, u8 port, struct ib_port_attr *attr) ...@@ -238,8 +238,8 @@ int qedr_query_port(struct ib_device *ibdev, u8 port, struct ib_port_attr *attr)
} }
rdma_port = dev->ops->rdma_query_port(dev->rdma_ctx); rdma_port = dev->ops->rdma_query_port(dev->rdma_ctx);
memset(attr, 0, sizeof(*attr));
/* *attr being zeroed by the caller, avoid zeroing it here */
if (rdma_port->port_state == QED_RDMA_PORT_UP) { if (rdma_port->port_state == QED_RDMA_PORT_UP) {
attr->state = IB_PORT_ACTIVE; attr->state = IB_PORT_ACTIVE;
attr->phys_state = 5; attr->phys_state = 5;
...@@ -3549,14 +3549,15 @@ int qedr_port_immutable(struct ib_device *ibdev, u8 port_num, ...@@ -3549,14 +3549,15 @@ int qedr_port_immutable(struct ib_device *ibdev, u8 port_num,
struct ib_port_attr attr; struct ib_port_attr attr;
int err; int err;
err = qedr_query_port(ibdev, port_num, &attr); immutable->core_cap_flags = RDMA_CORE_PORT_IBA_ROCE |
RDMA_CORE_PORT_IBA_ROCE_UDP_ENCAP;
err = ib_query_port(ibdev, port_num, &attr);
if (err) if (err)
return err; return err;
immutable->pkey_tbl_len = attr.pkey_tbl_len; immutable->pkey_tbl_len = attr.pkey_tbl_len;
immutable->gid_tbl_len = attr.gid_tbl_len; immutable->gid_tbl_len = attr.gid_tbl_len;
immutable->core_cap_flags = RDMA_CORE_PORT_IBA_ROCE |
RDMA_CORE_PORT_IBA_ROCE_UDP_ENCAP;
immutable->max_mad_size = IB_MGMT_MAD_SIZE; immutable->max_mad_size = IB_MGMT_MAD_SIZE;
return 0; return 0;
......
...@@ -1303,6 +1303,7 @@ static int qib_query_port(struct rvt_dev_info *rdi, u8 port_num, ...@@ -1303,6 +1303,7 @@ static int qib_query_port(struct rvt_dev_info *rdi, u8 port_num,
enum ib_mtu mtu; enum ib_mtu mtu;
u16 lid = ppd->lid; u16 lid = ppd->lid;
/* props being zeroed by the caller, avoid zeroing it here */
props->lid = lid ? lid : be16_to_cpu(IB_LID_PERMISSIVE); props->lid = lid ? lid : be16_to_cpu(IB_LID_PERMISSIVE);
props->lmc = ppd->lmc; props->lmc = ppd->lmc;
props->state = dd->f_iblink_state(ppd->lastibcstat); props->state = dd->f_iblink_state(ppd->lastibcstat);
......
...@@ -321,11 +321,12 @@ static int usnic_port_immutable(struct ib_device *ibdev, u8 port_num, ...@@ -321,11 +321,12 @@ static int usnic_port_immutable(struct ib_device *ibdev, u8 port_num,
struct ib_port_attr attr; struct ib_port_attr attr;
int err; int err;
err = usnic_ib_query_port(ibdev, port_num, &attr); immutable->core_cap_flags = RDMA_CORE_PORT_USNIC;
err = ib_query_port(ibdev, port_num, &attr);
if (err) if (err)
return err; return err;
immutable->core_cap_flags = RDMA_CORE_PORT_USNIC;
immutable->pkey_tbl_len = attr.pkey_tbl_len; immutable->pkey_tbl_len = attr.pkey_tbl_len;
immutable->gid_tbl_len = attr.gid_tbl_len; immutable->gid_tbl_len = attr.gid_tbl_len;
......
...@@ -330,7 +330,7 @@ int usnic_ib_query_port(struct ib_device *ibdev, u8 port, ...@@ -330,7 +330,7 @@ int usnic_ib_query_port(struct ib_device *ibdev, u8 port,
mutex_lock(&us_ibdev->usdev_lock); mutex_lock(&us_ibdev->usdev_lock);
__ethtool_get_link_ksettings(us_ibdev->netdev, &cmd); __ethtool_get_link_ksettings(us_ibdev->netdev, &cmd);
memset(props, 0, sizeof(*props)); /* props being zeroed by the caller, avoid zeroing it here */
props->lid = 0; props->lid = 0;
props->lmc = 1; props->lmc = 1;
......
...@@ -132,13 +132,14 @@ static int pvrdma_port_immutable(struct ib_device *ibdev, u8 port_num, ...@@ -132,13 +132,14 @@ static int pvrdma_port_immutable(struct ib_device *ibdev, u8 port_num,
struct ib_port_attr attr; struct ib_port_attr attr;
int err; int err;
err = pvrdma_query_port(ibdev, port_num, &attr); immutable->core_cap_flags = RDMA_CORE_PORT_IBA_ROCE;
err = ib_query_port(ibdev, port_num, &attr);
if (err) if (err)
return err; return err;
immutable->pkey_tbl_len = attr.pkey_tbl_len; immutable->pkey_tbl_len = attr.pkey_tbl_len;
immutable->gid_tbl_len = attr.gid_tbl_len; immutable->gid_tbl_len = attr.gid_tbl_len;
immutable->core_cap_flags = RDMA_CORE_PORT_IBA_ROCE;
immutable->max_mad_size = IB_MGMT_MAD_SIZE; immutable->max_mad_size = IB_MGMT_MAD_SIZE;
return 0; return 0;
} }
......
...@@ -135,7 +135,7 @@ int pvrdma_query_port(struct ib_device *ibdev, u8 port, ...@@ -135,7 +135,7 @@ int pvrdma_query_port(struct ib_device *ibdev, u8 port,
return err; return err;
} }
memset(props, 0, sizeof(*props)); /* props being zeroed by the caller, avoid zeroing it here */
props->state = pvrdma_port_state_to_ib(resp->attrs.state); props->state = pvrdma_port_state_to_ib(resp->attrs.state);
props->max_mtu = pvrdma_mtu_to_ib(resp->attrs.max_mtu); props->max_mtu = pvrdma_mtu_to_ib(resp->attrs.max_mtu);
...@@ -275,7 +275,7 @@ int pvrdma_modify_port(struct ib_device *ibdev, u8 port, int mask, ...@@ -275,7 +275,7 @@ int pvrdma_modify_port(struct ib_device *ibdev, u8 port, int mask,
} }
mutex_lock(&vdev->port_mutex); mutex_lock(&vdev->port_mutex);
ret = pvrdma_query_port(ibdev, port, &attr); ret = ib_query_port(ibdev, port, &attr);
if (ret) if (ret)
goto out; goto out;
......
...@@ -165,7 +165,7 @@ static int rvt_query_port(struct ib_device *ibdev, u8 port_num, ...@@ -165,7 +165,7 @@ static int rvt_query_port(struct ib_device *ibdev, u8 port_num,
return -EINVAL; return -EINVAL;
rvp = rdi->ports[port_index]; rvp = rdi->ports[port_index];
memset(props, 0, sizeof(*props)); /* props being zeroed by the caller, avoid zeroing it here */
props->sm_lid = rvp->sm_lid; props->sm_lid = rvp->sm_lid;
props->sm_sl = rvp->sm_sl; props->sm_sl = rvp->sm_sl;
props->port_cap_flags = rvp->port_cap_flags; props->port_cap_flags = rvp->port_cap_flags;
...@@ -326,13 +326,14 @@ static int rvt_get_port_immutable(struct ib_device *ibdev, u8 port_num, ...@@ -326,13 +326,14 @@ static int rvt_get_port_immutable(struct ib_device *ibdev, u8 port_num,
if (port_index < 0) if (port_index < 0)
return -EINVAL; return -EINVAL;
err = rvt_query_port(ibdev, port_num, &attr); immutable->core_cap_flags = rdi->dparms.core_cap_flags;
err = ib_query_port(ibdev, port_num, &attr);
if (err) if (err)
return err; return err;
immutable->pkey_tbl_len = attr.pkey_tbl_len; immutable->pkey_tbl_len = attr.pkey_tbl_len;
immutable->gid_tbl_len = attr.gid_tbl_len; immutable->gid_tbl_len = attr.gid_tbl_len;
immutable->core_cap_flags = rdi->dparms.core_cap_flags;
immutable->max_mad_size = rdi->dparms.max_mad_size; immutable->max_mad_size = rdi->dparms.max_mad_size;
return 0; return 0;
......
...@@ -86,6 +86,7 @@ static int rxe_query_port(struct ib_device *dev, ...@@ -86,6 +86,7 @@ static int rxe_query_port(struct ib_device *dev,
port = &rxe->port; port = &rxe->port;
/* *attr being zeroed by the caller, avoid zeroing it here */
*attr = port->attr; *attr = port->attr;
mutex_lock(&rxe->usdev_lock); mutex_lock(&rxe->usdev_lock);
...@@ -261,13 +262,14 @@ static int rxe_port_immutable(struct ib_device *dev, u8 port_num, ...@@ -261,13 +262,14 @@ static int rxe_port_immutable(struct ib_device *dev, u8 port_num,
int err; int err;
struct ib_port_attr attr; struct ib_port_attr attr;
err = rxe_query_port(dev, port_num, &attr); immutable->core_cap_flags = RDMA_CORE_PORT_IBA_ROCE_UDP_ENCAP;
err = ib_query_port(dev, port_num, &attr);
if (err) if (err)
return err; return err;
immutable->pkey_tbl_len = attr.pkey_tbl_len; immutable->pkey_tbl_len = attr.pkey_tbl_len;
immutable->gid_tbl_len = attr.gid_tbl_len; immutable->gid_tbl_len = attr.gid_tbl_len;
immutable->core_cap_flags = RDMA_CORE_PORT_IBA_ROCE_UDP_ENCAP;
immutable->max_mad_size = IB_MGMT_MAD_SIZE; immutable->max_mad_size = IB_MGMT_MAD_SIZE;
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment