diff options
author | Ursula Braun <ubraun@linux.ibm.com> | 2018-07-25 16:35:31 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-07-25 22:25:53 -0700 |
commit | 7005ada68d1774d7c1109deaba0c2cd8e46f5091 (patch) | |
tree | cf7d9bc452cdbee2f3197874adbbf8089fc7a879 /net/smc/smc_core.h | |
parent | 947541f36c561b5e0ca639ffc450a8c5221de467 (diff) | |
download | linux-stable-7005ada68d1774d7c1109deaba0c2cd8e46f5091.tar.gz linux-stable-7005ada68d1774d7c1109deaba0c2cd8e46f5091.tar.bz2 linux-stable-7005ada68d1774d7c1109deaba0c2cd8e46f5091.zip |
net/smc: use correct vlan gid of RoCE device
SMC code uses the base gid for VLAN traffic. The gids exchanged in
the CLC handshake and the gid index used for the QP have to switch
from the base gid to the appropriate vlan gid.
When searching for a matching IB device port for a certain vlan
device, it does not make sense to return an IB device port, which
is not enabled for the used vlan_id. Add another check whether a
vlan gid exists for a certain IB device port.
Signed-off-by: Ursula Braun <ubraun@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/smc/smc_core.h')
-rw-r--r-- | net/smc/smc_core.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/net/smc/smc_core.h b/net/smc/smc_core.h index 1e8974c50550..a4f0cc4e0270 100644 --- a/net/smc/smc_core.h +++ b/net/smc/smc_core.h @@ -84,14 +84,15 @@ struct smc_link { wait_queue_head_t wr_reg_wait; /* wait for wr_reg result */ enum smc_wr_reg_state wr_reg_state; /* state of wr_reg request */ - union ib_gid gid; /* gid matching used vlan id */ + u8 gid[SMC_GID_SIZE];/* gid matching used vlan id*/ + u8 sgid_index; /* gid index for vlan id */ u32 peer_qpn; /* QP number of peer */ enum ib_mtu path_mtu; /* used mtu */ enum ib_mtu peer_mtu; /* mtu size of peer */ u32 psn_initial; /* QP tx initial packet seqno */ u32 peer_psn; /* QP rx initial packet seqno */ u8 peer_mac[ETH_ALEN]; /* = gid[8:10||13:15] */ - u8 peer_gid[sizeof(union ib_gid)]; /* gid of peer*/ + u8 peer_gid[SMC_GID_SIZE]; /* gid of peer*/ u8 link_id; /* unique # within link group */ enum smc_link_state state; /* state of link */ |