Commit bf08e884 authored by Eran Ben Elisha's avatar Eran Ben Elisha Committed by Doug Ledford

IB/mlx4: Check if GRH is available before using it

Before reading GRH attributes, need to make sure AH contains GRH,
and in addition, initialize GID type.

Fixes: dbf727de ('IB/core: Use GID table in AH creation and dmac resolution')
Signed-off-by: default avatarEran Ben Elisha <eranbe@mellanox.com>
Signed-off-by: default avatarDaniel Jurgens <danielj@mellanox.com>
Reviewed-by: default avatarMark Bloch <markb@mellanox.com>
Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent 1f22e454
...@@ -1764,14 +1764,14 @@ static int __mlx4_ib_modify_qp(struct ib_qp *ibqp, ...@@ -1764,14 +1764,14 @@ static int __mlx4_ib_modify_qp(struct ib_qp *ibqp,
u8 port_num = mlx4_is_bonded(to_mdev(ibqp->device)->dev) ? 1 : u8 port_num = mlx4_is_bonded(to_mdev(ibqp->device)->dev) ? 1 :
attr_mask & IB_QP_PORT ? attr->port_num : qp->port; attr_mask & IB_QP_PORT ? attr->port_num : qp->port;
union ib_gid gid; union ib_gid gid;
struct ib_gid_attr gid_attr; struct ib_gid_attr gid_attr = {.gid_type = IB_GID_TYPE_IB};
u16 vlan = 0xffff; u16 vlan = 0xffff;
u8 smac[ETH_ALEN]; u8 smac[ETH_ALEN];
int status = 0; int status = 0;
int is_eth = rdma_cap_eth_ah(&dev->ib_dev, port_num) && int is_eth = rdma_cap_eth_ah(&dev->ib_dev, port_num) &&
attr->ah_attr.ah_flags & IB_AH_GRH; attr->ah_attr.ah_flags & IB_AH_GRH;
if (is_eth) { if (is_eth && attr->ah_attr.ah_flags & IB_AH_GRH) {
int index = attr->ah_attr.grh.sgid_index; int index = attr->ah_attr.grh.sgid_index;
status = ib_get_cached_gid(ibqp->device, port_num, status = ib_get_cached_gid(ibqp->device, port_num,
......
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